Skip to content

Commit bcb67b0

Browse files
committed
ArraySchema: add failing test case. colyseus/colyseus#641
1 parent 36c6aeb commit bcb67b0

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

test/ArraySchema.test.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,52 @@ describe("ArraySchema Tests", () => {
1212
});
1313
});
1414

15+
describe("ArraySchema#shift()", () => {
16+
it("shift + push", () => {
17+
class State extends Schema {
18+
@type(["string"]) turns = new ArraySchema<string>();
19+
}
20+
21+
const state = new State();
22+
state.turns.push("one");
23+
state.turns.push("two");
24+
state.turns.push("three");
25+
26+
const decodedState = new State();
27+
decodedState.decode(state.encode());
28+
29+
assert.strictEqual(3, state.turns.length);
30+
assert.strictEqual("one", state.turns[0]);
31+
assert.strictEqual("two", state.turns[1]);
32+
assert.strictEqual("three", state.turns[2]);
33+
34+
state.turns.push(state.turns.shift());
35+
decodedState.decode(state.encode());
36+
37+
assert.strictEqual("two", state.turns[0]);
38+
assert.strictEqual("three", state.turns[1]);
39+
assert.strictEqual("one", state.turns[2]);
40+
41+
state.turns.push(state.turns.shift());
42+
decodedState.decode(state.encode());
43+
44+
assert.strictEqual("three", state.turns[0]);
45+
assert.strictEqual("one", state.turns[1]);
46+
assert.strictEqual("two", state.turns[2]);
47+
48+
state.turns.push(state.turns.shift());
49+
decodedState.decode(state.encode());
50+
51+
assert.strictEqual("one", state.turns[0]);
52+
assert.strictEqual("two", state.turns[1]);
53+
assert.strictEqual("three", state.turns[2]);
54+
55+
state.turns.clear();
56+
decodedState.decode(state.encode());
57+
assert.strictEqual(0, state.turns.length);
58+
});
59+
});
60+
1561
it("should not crash when pushing an undefined value", () => {
1662
class Block extends Schema {
1763
@type("number") num: number;
@@ -1524,4 +1570,16 @@ describe("ArraySchema Tests", () => {
15241570

15251571
});
15261572

1573+
describe("Edge cases", () => {
1574+
xit("set values by index, sort, and then get values by index", () => {
1575+
const arr = new ArraySchema<number>();
1576+
arr[0] = 100;
1577+
arr[1] = 50;
1578+
1579+
const copy = arr.slice(0).sort((a, b) => a - b);
1580+
assert.strictEqual(50, copy[0]);
1581+
assert.strictEqual(100, copy[1]);
1582+
});
1583+
});
1584+
15271585
});

0 commit comments

Comments
 (0)