Skip to content

Commit

Permalink
ArraySchema: add failing test case. colyseus/colyseus#641
Browse files Browse the repository at this point in the history
  • Loading branch information
endel committed Jun 3, 2024
1 parent 36c6aeb commit bcb67b0
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions test/ArraySchema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,52 @@ describe("ArraySchema Tests", () => {
});
});

describe("ArraySchema#shift()", () => {
it("shift + push", () => {
class State extends Schema {
@type(["string"]) turns = new ArraySchema<string>();
}

const state = new State();
state.turns.push("one");
state.turns.push("two");
state.turns.push("three");

const decodedState = new State();
decodedState.decode(state.encode());

assert.strictEqual(3, state.turns.length);
assert.strictEqual("one", state.turns[0]);
assert.strictEqual("two", state.turns[1]);
assert.strictEqual("three", state.turns[2]);

state.turns.push(state.turns.shift());
decodedState.decode(state.encode());

assert.strictEqual("two", state.turns[0]);
assert.strictEqual("three", state.turns[1]);
assert.strictEqual("one", state.turns[2]);

state.turns.push(state.turns.shift());
decodedState.decode(state.encode());

assert.strictEqual("three", state.turns[0]);
assert.strictEqual("one", state.turns[1]);
assert.strictEqual("two", state.turns[2]);

state.turns.push(state.turns.shift());
decodedState.decode(state.encode());

assert.strictEqual("one", state.turns[0]);
assert.strictEqual("two", state.turns[1]);
assert.strictEqual("three", state.turns[2]);

state.turns.clear();
decodedState.decode(state.encode());
assert.strictEqual(0, state.turns.length);
});
});

it("should not crash when pushing an undefined value", () => {
class Block extends Schema {
@type("number") num: number;
Expand Down Expand Up @@ -1524,4 +1570,16 @@ describe("ArraySchema Tests", () => {

});

describe("Edge cases", () => {
xit("set values by index, sort, and then get values by index", () => {
const arr = new ArraySchema<number>();
arr[0] = 100;
arr[1] = 50;

const copy = arr.slice(0).sort((a, b) => a - b);
assert.strictEqual(50, copy[0]);
assert.strictEqual(100, copy[1]);
});
});

});

0 comments on commit bcb67b0

Please sign in to comment.