mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-31 03:18:43 -06:00
JS: Encode numbers as strings
This commit is contained in:
@@ -50,14 +50,26 @@ class JsonArrayReader {
|
||||
return next;
|
||||
}
|
||||
|
||||
readNumber(): number {
|
||||
readInt(): number {
|
||||
let next = this.read();
|
||||
invariant(typeof next === 'number');
|
||||
return next;
|
||||
invariant(typeof next === 'string');
|
||||
return parseInt(next, 10);
|
||||
}
|
||||
|
||||
readUint(): number {
|
||||
let v = this.readInt();
|
||||
invariant(v >= 0);
|
||||
return v;
|
||||
}
|
||||
|
||||
readFloat(): number {
|
||||
let next = this.read();
|
||||
invariant(typeof next === 'string');
|
||||
return parseFloat(next);
|
||||
}
|
||||
|
||||
readOrdinal(): number {
|
||||
return this.readNumber();
|
||||
return this.readInt();
|
||||
}
|
||||
|
||||
readArray(): Array<any> {
|
||||
@@ -67,7 +79,9 @@ class JsonArrayReader {
|
||||
}
|
||||
|
||||
readKind(): NomsKind {
|
||||
return this.readNumber();
|
||||
let next = this.read();
|
||||
invariant(typeof next === 'number');
|
||||
return next;
|
||||
}
|
||||
|
||||
readRef(): Ref {
|
||||
@@ -145,7 +159,7 @@ class JsonArrayReader {
|
||||
}
|
||||
|
||||
readEnum(): number {
|
||||
return this.readNumber();
|
||||
return this.readUint();
|
||||
}
|
||||
|
||||
async maybeReadMetaSequence(t: Type, pkg: ?Package): Promise<any> {
|
||||
@@ -199,17 +213,19 @@ class JsonArrayReader {
|
||||
|
||||
case Kind.Bool:
|
||||
return Promise.resolve(this.readBool());
|
||||
case Kind.Uint8:
|
||||
case Kind.Uint16:
|
||||
case Kind.Uint32:
|
||||
case Kind.Uint64:
|
||||
case Kind.Float32:
|
||||
case Kind.Float64:
|
||||
return Promise.resolve(this.readFloat());
|
||||
case Kind.Int8:
|
||||
case Kind.Int16:
|
||||
case Kind.Int32:
|
||||
case Kind.Int64:
|
||||
case Kind.Float32:
|
||||
case Kind.Float64:
|
||||
return Promise.resolve(this.read());
|
||||
return Promise.resolve(this.readInt());
|
||||
case Kind.Uint8:
|
||||
case Kind.Uint16:
|
||||
case Kind.Uint32:
|
||||
case Kind.Uint64:
|
||||
return Promise.resolve(this.readUint());
|
||||
case Kind.String:
|
||||
return Promise.resolve(this.readString());
|
||||
case Kind.Value: {
|
||||
@@ -366,7 +382,7 @@ class JsonArrayReader {
|
||||
|
||||
let unionIndex = -1;
|
||||
if (desc.union.length > 0) {
|
||||
unionIndex = this.readNumber();
|
||||
unionIndex = this.readUint();
|
||||
let unionField = desc.union[unionIndex];
|
||||
let v = await this.readValueWithoutTag(unionField.t, pkg);
|
||||
s[unionField.name] = v;
|
||||
|
||||
@@ -50,7 +50,7 @@ suite('Decode', () => {
|
||||
doTest(makeCompoundType(Kind.List, makePrimitiveType(Kind.Bool)), [Kind.List, Kind.Bool, true, false]);
|
||||
|
||||
let pkgRef = Ref.parse('sha1-a9993e364706816aba3e25717850c26c9cd0d89d');
|
||||
doTest(makeType(pkgRef, 42), [Kind.Unresolved, pkgRef.toString(), 42]);
|
||||
doTest(makeType(pkgRef, 42), [Kind.Unresolved, pkgRef.toString(), '42']);
|
||||
|
||||
doTest(makePrimitiveType(Kind.Type), [Kind.Type, Kind.Type, pkgRef.toString()]);
|
||||
});
|
||||
@@ -66,16 +66,21 @@ suite('Decode', () => {
|
||||
|
||||
await doTest(true, [Kind.Bool, true]);
|
||||
await doTest(false, [Kind.Bool, false]);
|
||||
await doTest(0, [Kind.Uint8, 0]);
|
||||
await doTest(0, [Kind.Uint16, 0]);
|
||||
await doTest(0, [Kind.Uint32, 0]);
|
||||
await doTest(0, [Kind.Uint64, 0]);
|
||||
await doTest(0, [Kind.Int8, 0]);
|
||||
await doTest(0, [Kind.Int16, 0]);
|
||||
await doTest(0, [Kind.Int32, 0]);
|
||||
await doTest(0, [Kind.Int64, 0]);
|
||||
await doTest(0, [Kind.Float32, 0]);
|
||||
await doTest(0, [Kind.Float64, 0]);
|
||||
await doTest(0, [Kind.Uint8, '0']);
|
||||
await doTest(0, [Kind.Uint16, '0']);
|
||||
await doTest(0, [Kind.Uint32, '0']);
|
||||
await doTest(0, [Kind.Uint64, '0']);
|
||||
await doTest(0, [Kind.Int8, '0']);
|
||||
await doTest(0, [Kind.Int16, '0']);
|
||||
await doTest(0, [Kind.Int32, '0']);
|
||||
await doTest(0, [Kind.Int64, '0']);
|
||||
await doTest(0, [Kind.Float32, '0']);
|
||||
await doTest(0, [Kind.Float64, '0']);
|
||||
|
||||
await doTest(1e18, [Kind.Int64, '1000000000000000000']);
|
||||
await doTest(1e19, [Kind.Uint64, '10000000000000000000']);
|
||||
await doTest(1e19, [Kind.Float64, '10000000000000000000']);
|
||||
await doTest(1e20, [Kind.Float64, '1e+20']);
|
||||
|
||||
await doTest('hi', [Kind.String, 'hi']);
|
||||
|
||||
@@ -85,7 +90,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read list of int 32', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.List, Kind.Int32, false, [0, 1, 2, 3]];
|
||||
let a = [Kind.List, Kind.Int32, false, ['0', '1', '2', '3']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof ListLeaf);
|
||||
@@ -98,7 +103,7 @@ suite('Decode', () => {
|
||||
// TODO: Can't round-trip collections of value types. =-(
|
||||
test('read list of value', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.List, Kind.Value, false, [Kind.Int32, 1, Kind.String, 'hi', Kind.Bool, true]];
|
||||
let a = [Kind.List, Kind.Value, false, [Kind.Int32, '1', Kind.String, 'hi', Kind.Bool, true]];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof ListLeaf);
|
||||
@@ -111,7 +116,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read value list of int8', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.Value, Kind.List, Kind.Int8, false, [0, 1, 2]];
|
||||
let a = [Kind.Value, Kind.List, Kind.Int8, false, ['0', '1', '2']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof ListLeaf);
|
||||
@@ -135,7 +140,7 @@ suite('Decode', () => {
|
||||
];
|
||||
let l = new CompoundList(ms, ltr, tuples);
|
||||
|
||||
let a = [Kind.List, Kind.Int32, true, [r1.toString(), 2, r2.toString(), 4, r3.toString(), 6]];
|
||||
let a = [Kind.List, Kind.Int32, true, [r1.toString(), '2', r2.toString(), '4', r3.toString(), '6']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof CompoundList);
|
||||
@@ -144,7 +149,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read map of int64 to float64', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.Map, Kind.Int64, Kind.Float64, false, [0, 1, 2, 3]];
|
||||
let a = [Kind.Map, Kind.Int64, Kind.Float64, false, ['0', '1', '2', '3']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof MapLeaf);
|
||||
@@ -156,7 +161,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read value map of uint64 to uint32', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.Value, Kind.Map, Kind.Uint64, Kind.Uint32, false, [0, 1, 2, 3]];
|
||||
let a = [Kind.Value, Kind.Map, Kind.Uint64, Kind.Uint32, false, ['0', '1', '2', '3']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof MapLeaf);
|
||||
@@ -168,7 +173,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read set of uint8', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.Set, Kind.Uint8, false, [0, 1, 2, 3]];
|
||||
let a = [Kind.Set, Kind.Uint8, false, ['0', '1', '2', '3']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
invariant(v instanceof SetLeaf);
|
||||
@@ -180,7 +185,7 @@ suite('Decode', () => {
|
||||
|
||||
test('read value set of uint16', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let a = [Kind.Value, Kind.Set, Kind.Uint16, false, [0, 1, 2, 3]];
|
||||
let a = [Kind.Value, Kind.Set, Kind.Uint16, false, ['0', '1', '2', '3']];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -209,7 +214,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, 42, 'hi', true];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', '42', 'hi', true];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -232,7 +237,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, 42, 1, 'hi'];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', '42', '1', 'hi'];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -253,7 +258,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, 42, false, true, false];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', '42', false, true, false];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -276,7 +281,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, true, false, [0, 1, 2], 'hi'];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', true, false, ['0', '1', '2'], 'hi'];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -298,7 +303,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, true, Kind.Uint8, 42, 'hi'];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', true, Kind.Uint8, '42', 'hi'];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -320,7 +325,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Value, Kind.Unresolved, pkg.ref.toString(), 0, 42, 'hi', true];
|
||||
let a = [Kind.Value, Kind.Unresolved, pkg.ref.toString(), '0', '42', 'hi', true];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -338,7 +343,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, 1];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', '1'];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -352,7 +357,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Value, Kind.Unresolved, pkg.ref.toString(), 0, 1];
|
||||
let a = [Kind.Value, Kind.Unresolved, pkg.ref.toString(), '0', '1'];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -370,7 +375,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr, enumTref], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), 0, 42, 1, true];
|
||||
let a = [Kind.Unresolved, pkg.ref.toString(), '0', '42', '1', true];
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
|
||||
@@ -391,7 +396,7 @@ suite('Decode', () => {
|
||||
let pkg = new Package([tr], []);
|
||||
registerPackage(pkg);
|
||||
|
||||
let a = [Kind.Value, Kind.Map, Kind.String, Kind.Unresolved, pkg.ref.toString(), 0, false, ['bar', false, 2, 'baz', false, 1, 'foo', true, 3]];
|
||||
let a = [Kind.Value, Kind.Map, Kind.String, Kind.Unresolved, pkg.ref.toString(), '0', false, ['bar', false, '2', 'baz', false, '1', 'foo', true, '3']];
|
||||
|
||||
let r = new JsonArrayReader(a, ms);
|
||||
let v = await r.readTopLevelValue();
|
||||
@@ -406,7 +411,7 @@ suite('Decode', () => {
|
||||
|
||||
test('decodeNomsValue', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let chunk = Chunk.fromString(`t [${Kind.Value}, ${Kind.Set}, ${Kind.Uint16}, false, [0, 1, 2, 3]]`);
|
||||
let chunk = Chunk.fromString(`t [${Kind.Value}, ${Kind.Set}, ${Kind.Uint16}, false, ["0", "1", "2", "3"]]`);
|
||||
let v = await decodeNomsValue(chunk, new MemoryStore());
|
||||
|
||||
let t = makeCompoundType(Kind.Set, makePrimitiveType(Kind.Uint16));
|
||||
@@ -416,10 +421,10 @@ suite('Decode', () => {
|
||||
|
||||
test('decodeNomsValue: counter with one commit', async () => {
|
||||
let ms = new MemoryStore();
|
||||
let root = Ref.parse('sha1-238be83f9eb4d346b06a82eb6bd0310b68189d24');
|
||||
ms.put(Chunk.fromString('t [15,11,16,21,"sha1-7546d804d845125bc42669c7a4c3f3fb909eca29",0,false,["counter","sha1-3d5f81a6640300f377d5c0257c7bdee094ff90de"]]')); // root
|
||||
ms.put(Chunk.fromString('t [22,[19,"Commit",["value",13,false,"parents",17,[16,[21,"sha1-0000000000000000000000000000000000000000",0]],false],[]],[]]')); // datas package
|
||||
ms.put(Chunk.fromString('t [21,"sha1-7546d804d845125bc42669c7a4c3f3fb909eca29",0,4,1,false,[]]')); // commit
|
||||
let root = Ref.parse('sha1-c3680a063b73ac42c3075110108a48a91007abf7');
|
||||
ms.put(Chunk.fromString('t [15,11,16,21,"sha1-7546d804d845125bc42669c7a4c3f3fb909eca29","0",false,["counter","sha1-a6fffab4e12b49d57f194f0d3add9f6623a13e19"]]')); // root
|
||||
ms.put(Chunk.fromString('t [22,[19,"Commit",["value",13,false,"parents",17,[16,[21,"sha1-0000000000000000000000000000000000000000","0"]],false],[]],[]]')); // datas package
|
||||
ms.put(Chunk.fromString('t [21,"sha1-4da2f91cdbba5a7c91b383091da45e55e16d2152","0",4,"1",false,[]]')); // commit
|
||||
|
||||
let rootMap = await readValue(root, ms);
|
||||
let counterRef = await rootMap.get('counter');
|
||||
|
||||
@@ -36,12 +36,20 @@ class JsonArrayWriter {
|
||||
this.write(b);
|
||||
}
|
||||
|
||||
writeNumber(n: number) {
|
||||
this.write(n);
|
||||
writeFloat(n: number) {
|
||||
if (n < 1e20) {
|
||||
this.write(n.toString(10));
|
||||
} else {
|
||||
this.write(n.toExponential());
|
||||
}
|
||||
}
|
||||
|
||||
writeInt(n: number) {
|
||||
this.write(n.toFixed(0));
|
||||
}
|
||||
|
||||
writeKind(k: NomsKind) {
|
||||
this.writeNumber(k);
|
||||
this.write(k);
|
||||
}
|
||||
|
||||
writeRef(r: Ref) {
|
||||
@@ -66,7 +74,7 @@ class JsonArrayWriter {
|
||||
let pkgRef = t.packageRef;
|
||||
invariant(!pkgRef.isEmpty());
|
||||
this.writeRef(pkgRef);
|
||||
this.writeNumber(t.ordinal);
|
||||
this.writeInt(t.ordinal);
|
||||
|
||||
let pkg = lookupPackage(pkgRef);
|
||||
if (pkg && this._cs) {
|
||||
@@ -113,6 +121,13 @@ class JsonArrayWriter {
|
||||
this.writeBlob(v);
|
||||
break;
|
||||
case Kind.Bool:
|
||||
case Kind.String:
|
||||
this.write(v);
|
||||
break;
|
||||
case Kind.Float32:
|
||||
case Kind.Float64:
|
||||
this.writeFloat(v); // TODO: Verify value fits in type
|
||||
break;
|
||||
case Kind.Uint8:
|
||||
case Kind.Uint16:
|
||||
case Kind.Uint32:
|
||||
@@ -121,10 +136,7 @@ class JsonArrayWriter {
|
||||
case Kind.Int16:
|
||||
case Kind.Int32:
|
||||
case Kind.Int64:
|
||||
case Kind.Float32:
|
||||
case Kind.Float64:
|
||||
case Kind.String:
|
||||
this.write(v); // TODO: Verify value fits in type
|
||||
this.writeInt(v); // TODO: Verify value fits in type
|
||||
break;
|
||||
case Kind.List: {
|
||||
invariant(v instanceof Sequence);
|
||||
@@ -256,7 +268,7 @@ class JsonArrayWriter {
|
||||
let pkgRef = t.packageRef;
|
||||
this.writeRef(pkgRef);
|
||||
let ordinal = t.ordinal;
|
||||
this.write(ordinal);
|
||||
this.writeInt(ordinal);
|
||||
if (ordinal === -1) {
|
||||
this.write(t.namespace);
|
||||
this.write(t.name);
|
||||
@@ -318,13 +330,13 @@ class JsonArrayWriter {
|
||||
|
||||
if (s.hasUnion) {
|
||||
let unionField = notNull(s.unionField);
|
||||
this.writeNumber(s.unionIndex);
|
||||
this.writeInt(s.unionIndex);
|
||||
this.writeValue(s.get(unionField.name), unionField.t, pkg);
|
||||
}
|
||||
}
|
||||
|
||||
writeEnum(v: number) {
|
||||
this.writeNumber(v);
|
||||
this.writeInt(v);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,16 +30,21 @@ suite('Encode', () => {
|
||||
f(Kind.Bool, true, true);
|
||||
f(Kind.Bool, false, false);
|
||||
|
||||
f(Kind.Uint8, 0, 0);
|
||||
f(Kind.Uint16, 0, 0);
|
||||
f(Kind.Uint32, 0, 0);
|
||||
f(Kind.Uint64, 0, 0);
|
||||
f(Kind.Int8, 0, 0);
|
||||
f(Kind.Int16, 0, 0);
|
||||
f(Kind.Int32, 0, 0);
|
||||
f(Kind.Int64, 0, 0);
|
||||
f(Kind.Float32, 0, 0);
|
||||
f(Kind.Float64, 0, 0);
|
||||
f(Kind.Uint8, 0, '0');
|
||||
f(Kind.Uint16, 0, '0');
|
||||
f(Kind.Uint32, 0, '0');
|
||||
f(Kind.Uint64, 0, '0');
|
||||
f(Kind.Int8, 0, '0');
|
||||
f(Kind.Int16, 0, '0');
|
||||
f(Kind.Int32, 0, '0');
|
||||
f(Kind.Int64, 0, '0');
|
||||
f(Kind.Float32, 0, '0');
|
||||
f(Kind.Float64, 0, '0');
|
||||
|
||||
f(Kind.Int64, 1e18, '1000000000000000000');
|
||||
f(Kind.Uint64, 1e19, '10000000000000000000');
|
||||
f(Kind.Float64, 1e19, '10000000000000000000');
|
||||
f(Kind.Float64, 1e20, '1e+20');
|
||||
|
||||
f(Kind.String, 'hi', 'hi');
|
||||
});
|
||||
@@ -58,7 +63,7 @@ suite('Encode', () => {
|
||||
let tr = makeCompoundType(Kind.List, makePrimitiveType(Kind.Int32));
|
||||
let l = new ListLeaf(ms, tr, [0, 1, 2, 3]);
|
||||
w.writeTopLevel(tr, l);
|
||||
assert.deepEqual([Kind.List, Kind.Int32, false, [0, 1, 2, 3]], w.array);
|
||||
assert.deepEqual([Kind.List, Kind.Int32, false, ['0', '1', '2', '3']], w.array);
|
||||
});
|
||||
|
||||
test('write list of list', async () => {
|
||||
@@ -69,7 +74,7 @@ suite('Encode', () => {
|
||||
let tr = makeCompoundType(Kind.List, it);
|
||||
let v = new ListLeaf(ms, tr, [new ListLeaf(ms, it, [0]), new ListLeaf(ms, it, [1, 2, 3])]);
|
||||
w.writeTopLevel(tr, v);
|
||||
assert.deepEqual([Kind.List, Kind.List, Kind.Int16, false, [false, [0], false, [1, 2, 3]]], w.array);
|
||||
assert.deepEqual([Kind.List, Kind.List, Kind.Int16, false, [false, ['0'], false, ['1', '2', '3']]], w.array);
|
||||
});
|
||||
|
||||
test('write set', async () => {
|
||||
@@ -79,7 +84,7 @@ suite('Encode', () => {
|
||||
let tr = makeCompoundType(Kind.Set, makePrimitiveType(Kind.Uint32));
|
||||
let v = new SetLeaf(ms, tr, [0, 1, 2, 3]);
|
||||
w.writeTopLevel(tr, v);
|
||||
assert.deepEqual([Kind.Set, Kind.Uint32, false, [0, 1, 2, 3]], w.array);
|
||||
assert.deepEqual([Kind.Set, Kind.Uint32, false, ['0', '1', '2', '3']], w.array);
|
||||
});
|
||||
|
||||
test('write set of set', async () => {
|
||||
@@ -91,7 +96,7 @@ suite('Encode', () => {
|
||||
let v = new SetLeaf(ms, tr, [new SetLeaf(ms, st, [0]), new SetLeaf(ms, st, [1, 2, 3])]);
|
||||
|
||||
w.writeTopLevel(tr, v);
|
||||
assert.deepEqual([Kind.Set, Kind.Set, Kind.Int32, false, [false, [0], false, [1, 2, 3]]], w.array);
|
||||
assert.deepEqual([Kind.Set, Kind.Set, Kind.Int32, false, [false, ['0'], false, ['1', '2', '3']]], w.array);
|
||||
});
|
||||
|
||||
test('write map', async() => {
|
||||
@@ -117,7 +122,7 @@ suite('Encode', () => {
|
||||
let m1 = new MapLeaf(ms, kt, [{key: 'a', value: 0}]);
|
||||
let v = new MapLeaf(ms, tr, [{key: m1, value: s}]);
|
||||
w.writeTopLevel(tr, v);
|
||||
assert.deepEqual([Kind.Map, Kind.Map, Kind.String, Kind.Int64, Kind.Set, Kind.Bool, false, [false, ['a', 0], false, [true]]], w.array);
|
||||
assert.deepEqual([Kind.Map, Kind.Map, Kind.String, Kind.Int64, Kind.Set, Kind.Bool, false, [false, ['a', '0'], false, [true]]], w.array);
|
||||
});
|
||||
|
||||
test('write empty struct', async() => {
|
||||
@@ -133,7 +138,7 @@ suite('Encode', () => {
|
||||
let v = new Struct(type, typeDef, {});
|
||||
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0'], w.array);
|
||||
});
|
||||
|
||||
test('write struct', async() => {
|
||||
@@ -152,7 +157,7 @@ suite('Encode', () => {
|
||||
let v = new Struct(type, typeDef, {x: 42, b: true});
|
||||
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, 42, true], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', '42', true], w.array);
|
||||
});
|
||||
|
||||
test('write struct optional field', async() => {
|
||||
@@ -170,12 +175,12 @@ suite('Encode', () => {
|
||||
|
||||
let v = new Struct(type, typeDef, {x: 42, b: true});
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, true, 42, true], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', true, '42', true], w.array);
|
||||
|
||||
v = new Struct(type, typeDef, {b: true});
|
||||
w = new JsonArrayWriter(ms);
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, false, true], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', false, true], w.array);
|
||||
});
|
||||
|
||||
test('write struct with union', async() => {
|
||||
@@ -195,12 +200,12 @@ suite('Encode', () => {
|
||||
|
||||
let v = new Struct(type, typeDef, {x: 42, s: 'hi'});
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, 42, 1, 'hi'], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', '42', '1', 'hi'], w.array);
|
||||
|
||||
v = new Struct(type, typeDef, {x: 42, b: true});
|
||||
w = new JsonArrayWriter(ms);
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, 42, 0, true], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', '42', '0', true], w.array);
|
||||
});
|
||||
|
||||
test('write struct with list', async() => {
|
||||
@@ -218,12 +223,12 @@ suite('Encode', () => {
|
||||
|
||||
let v = new Struct(type, typeDef, {l: new ListLeaf(ms, ltr, ['a', 'b'])});
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, false, ['a', 'b']], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', false, ['a', 'b']], w.array);
|
||||
|
||||
v = new Struct(type, typeDef, {l: new ListLeaf(ms, ltr, [])});
|
||||
w = new JsonArrayWriter(ms);
|
||||
w.writeTopLevel(type, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, false, []], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', false, []], w.array);
|
||||
});
|
||||
|
||||
test('write struct with struct', async () => {
|
||||
@@ -245,7 +250,7 @@ suite('Encode', () => {
|
||||
|
||||
let v = new Struct(sType, sTypeDef, {s: new Struct(s2Type, s2TypeDef, {x: 42})});
|
||||
w.writeTopLevel(sType, v);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 1, 42], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '1', '42'], w.array);
|
||||
});
|
||||
|
||||
test('write enum', async () => {
|
||||
@@ -258,7 +263,7 @@ suite('Encode', () => {
|
||||
let typ = makeType(pkgRef, 0);
|
||||
|
||||
w.writeTopLevel(typ, 1);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), 0, 1], w.array);
|
||||
assert.deepEqual([Kind.Unresolved, pkgRef.toString(), '0', '1'], w.array);
|
||||
});
|
||||
|
||||
test('write list of enum', async () => {
|
||||
@@ -273,7 +278,7 @@ suite('Encode', () => {
|
||||
let l = new ListLeaf(ms, listType, [0, 1, 2]);
|
||||
|
||||
w.writeTopLevel(listType, l);
|
||||
assert.deepEqual([Kind.List, Kind.Unresolved, pkgRef.toString(), 0, false, [0, 1, 2]], w.array);
|
||||
assert.deepEqual([Kind.List, Kind.Unresolved, pkgRef.toString(), '0', false, ['0', '1', '2']], w.array);
|
||||
});
|
||||
|
||||
test('write compound list', async () => {
|
||||
@@ -292,7 +297,7 @@ suite('Encode', () => {
|
||||
let l = new CompoundList(ms, ltr, tuples);
|
||||
|
||||
w.writeTopLevel(ltr, l);
|
||||
assert.deepEqual([Kind.List, Kind.Int32, true, [r1.toString(), 2, r2.toString(), 4, r3.toString(), 6]], w.array);
|
||||
assert.deepEqual([Kind.List, Kind.Int32, true, [r1.toString(), '2', r2.toString(), '4', r3.toString(), '6']], w.array);
|
||||
});
|
||||
|
||||
test('write type value', async () => {
|
||||
@@ -318,9 +323,9 @@ suite('Encode', () => {
|
||||
]));
|
||||
|
||||
let pkgRef = Ref.parse('sha1-0123456789abcdef0123456789abcdef01234567');
|
||||
test([Kind.Type, Kind.Unresolved, pkgRef.toString(), 123], makeType(pkgRef, 123));
|
||||
test([Kind.Type, Kind.Unresolved, pkgRef.toString(), '123'], makeType(pkgRef, 123));
|
||||
|
||||
test([Kind.Type, Kind.Struct, 'S', ['e', Kind.Unresolved, pkgRef.toString(), 123, false, 'x', Kind.Int64, false], []], makeStructType('S', [
|
||||
test([Kind.Type, Kind.Struct, 'S', ['e', Kind.Unresolved, pkgRef.toString(), '123', false, 'x', Kind.Int64, false], []], makeStructType('S', [
|
||||
new Field('e', makeType(pkgRef, 123), false),
|
||||
new Field('x', makePrimitiveType(Kind.Int64), false)
|
||||
], []));
|
||||
|
||||
Reference in New Issue
Block a user