Skip to content

Commit 40bee24

Browse files
committed
ArraySchema#shift(): add failing test scenario
1 parent 68117f1 commit 40bee24

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

test/ArraySchema.test.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,55 @@ describe("ArraySchema Tests", () => {
302302
state.entities.shift();
303303
assertDeepStrictEqualEncodeAll(state);
304304
});
305+
306+
xit("encodeAll() + with enqueued encode() shifts", () => {
307+
class Entity extends Schema {
308+
@type("number") thing: number;
309+
}
310+
class State extends Schema {
311+
@type([Entity]) entities: Entity[];
312+
}
313+
314+
const state = new State();
315+
state.entities = [];
316+
317+
const repopulateEntitiesArray = (count) => {
318+
for (let i = 0; i < count; i++) {
319+
const ent = new Entity();
320+
ent.thing = i;
321+
state.entities.push(ent);
322+
}
323+
};
324+
repopulateEntitiesArray(35);
325+
326+
function mutateAllAndShift(count: number = 6) {
327+
for (let i = 0; i < count; i++) {
328+
state.entities.forEach((entity) => entity.thing++);
329+
state.entities.shift();
330+
}
331+
}
332+
333+
const decoded1 = createInstanceFromReflection(state);
334+
decoded1.decode(state.encodeAll());
335+
mutateAllAndShift(6);
336+
decoded1.decode(state.encode());
337+
mutateAllAndShift(6);
338+
decoded1.decode(state.encode());
339+
340+
mutateAllAndShift(9);
341+
342+
const decoded2 = createInstanceFromReflection(state);
343+
console.log("\n\n\n\nDECODE FULL!");
344+
decoded2.decode(state.encodeAll());
345+
console.log("FULL REFS:", getDecoder(decoded2).root.refs.size, '=>', Array.from(getDecoder(decoded2).root.refs.keys()));
346+
mutateAllAndShift(3);
347+
decoded2.decode(state.encode());
348+
console.log("PATCH REFS:", getDecoder(decoded2).root.refs.size, '=>', Array.from(getDecoder(decoded2).root.refs.keys()));
349+
mutateAllAndShift(6);
350+
decoded2.decode(state.encode());
351+
352+
assertDeepStrictEqualEncodeAll(state);
353+
});
305354
});
306355

307356
it("should allow mutating primitive value by index", () => {

0 commit comments

Comments
 (0)