Skip to content

Commit 3d11fa6

Browse files
committed
add failing test case for #197
1 parent 39b02ba commit 3d11fa6

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/callbacks/StateCallbacks.test.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,4 +255,43 @@ describe("StateCallbacks", () => {
255255
assert.strictEqual(4, onPropertyListen);
256256
});
257257

258+
describe("ArraySchema", () => {
259+
xit("consecutive shift + unshift should trigger onAdd at 0 index", () => {
260+
class Card extends Schema {
261+
@type("string") suit: string;
262+
@type("number") num: number;
263+
}
264+
class State extends Schema {
265+
@type([Card]) deck = new ArraySchema<Card>();
266+
@type([Card]) discardPile = new ArraySchema<Card>();
267+
}
268+
269+
const state = new State();
270+
const decodedState = createInstanceFromReflection(state);
271+
272+
// create a deck of cards
273+
for (let i = 0; i < 13; i++) {
274+
state.deck.push(new Card().assign({ suit: "hearts", num: i }));
275+
}
276+
277+
decodedState.decode(state.encode());
278+
279+
let onChange: number[] = [];
280+
let onAdd: number[] = [];
281+
282+
const $ = getCallbacks(decodedState);
283+
$(decodedState).discardPile.onChange((item, index) => onChange.push(index));
284+
$(decodedState).discardPile.onAdd((item, index) => onAdd.push(index));
285+
286+
for (let i=0; i<3; i++) {
287+
state.discardPile.unshift(state.deck.shift());
288+
decodedState.decode(state.encode());
289+
}
290+
291+
assert.deepStrictEqual(onChange, [0, 0, 0]);
292+
assert.deepStrictEqual(onAdd, [0, 0, 0]);
293+
});
294+
295+
})
296+
258297
});

0 commit comments

Comments
 (0)