Skip to content

Commit 1a52ec9

Browse files
committed
add failing test case for #193
1 parent a52a572 commit 1a52ec9

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

test/ArraySchema.test.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as assert from "assert";
22

33
import { State, Player, getCallbacks, getEncoder, createInstanceFromReflection, getDecoder, assertDeepStrictEqualEncodeAll, assertRefIdCounts } from "./Schema";
4-
import { ArraySchema, Schema, type, Reflection, $changes, MapSchema } from "../src";
4+
import { ArraySchema, Schema, type, Reflection, $changes, MapSchema, ChangeTree } from "../src";
55

66
describe("ArraySchema Tests", () => {
77

@@ -393,6 +393,31 @@ describe("ArraySchema Tests", () => {
393393

394394
decodedState.decode(state.encode());
395395
assert.deepStrictEqual([0, 1, 2, 3, 4], decodedState.arrayOfNumbers.toJSON());
396+
397+
assertDeepStrictEqualEncodeAll(state);
398+
});
399+
400+
xit("consecutive unshift calls should not break 'encodeAll'", () => {
401+
class State extends Schema {
402+
@type(["number"]) arrayOfNumbers = new ArraySchema<number>();
403+
}
404+
405+
const state = new State();
406+
state.arrayOfNumbers.push(1);
407+
state.arrayOfNumbers.push(2);
408+
state.arrayOfNumbers.push(3);
409+
410+
const decodedState = new State();
411+
decodedState.decode(state.encode());
412+
413+
state.arrayOfNumbers.unshift(0);
414+
state.arrayOfNumbers.unshift(-1);
415+
assert.strictEqual(-1, state.arrayOfNumbers[0]);
416+
417+
decodedState.decode(state.encode());
418+
assert.deepStrictEqual([-1, 0, 1, 2, 3], decodedState.arrayOfNumbers.toJSON());
419+
420+
assertDeepStrictEqualEncodeAll(state);
396421
});
397422

398423
it("push and unshift", () => {

0 commit comments

Comments
 (0)