diff --git a/js2/src/decode_test.js b/js2/src/decode_test.js index 960d392ffe..16df388ff7 100644 --- a/js2/src/decode_test.js +++ b/js2/src/decode_test.js @@ -103,7 +103,7 @@ suite('Decode', () => { assert.strictEqual(expected.size, actual.size); expected.forEach((v, k) => { assert.isTrue(actual.has(k)); - assert.strictEqual(v, actual.get(k)); + assert.deepEqual(v, actual.get(k)); }); } @@ -182,6 +182,29 @@ suite('Decode', () => { assert.deepEqual({x: 42, s: 'hi', b: true, _typeRef: tr}, v); }); + test('test read map of string to struct', async () => { + let ms = new MemoryStore(); + let tr = makeStructTypeRef('s', [ + new Field('b', makePrimitiveTypeRef(Kind.Bool), false), + new Field('i', makePrimitiveTypeRef(Kind.Int32), false) + ], []); + + let pkg = new Package([tr], []); + registerPackage(pkg); + + let a = [Kind.Value, Kind.Map, Kind.String, Kind.Unresolved, pkg.ref.toString(), 0, ['foo', true, 3, 'bar', false, 2, 'baz', false, 1]]; + + let r = new JsonArrayReader(a, ms); + let v = await r.readTopLevelValue(); + + let m = new Map(); + m.set('foo', {b: true, i: 3, _typeRef: tr}); + m.set('bar', {b: false, i: 2, _typeRef: tr}); + m.set('baz', {b: false, i: 1, _typeRef: tr}); + + assertMapsEqual(m, v); + }); + test('decodeNomsValue', async () => { let chunk = Chunk.fromString(`t [${Kind.Value}, ${Kind.Set}, ${Kind.UInt16}, [0, 1, 2, 3]]`); let v = await decodeNomsValue(chunk, new MemoryStore());