@@ -5,6 +5,27 @@ import { ArraySchema, Schema, type, Reflection, $changes } from "../src";
5
5
6
6
describe ( "ArraySchema Tests" , ( ) => {
7
7
8
+ it ( "replacing ArraySchema reference should remove previous decoder reference" , ( ) => {
9
+ class Player extends Schema {
10
+ @type ( "string" ) name : string ;
11
+ }
12
+ class State extends Schema {
13
+ @type ( [ Player ] ) players = new ArraySchema < Player > ( ) ;
14
+ }
15
+ const state = new State ( ) ;
16
+
17
+ const decodedState = createInstanceFromReflection ( state ) ;
18
+ const referenceTracker = getDecoder ( decodedState ) . root ;
19
+
20
+ decodedState . decode ( state . encode ( ) ) ;
21
+ const playersRefId = state . players [ $changes ] . refId ;
22
+ assert . ok ( referenceTracker . refs . has ( playersRefId ) ) ;
23
+
24
+ state . players = new ArraySchema ( ) ;
25
+ decodedState . decode ( state . encode ( ) ) ;
26
+ assert . ok ( ! referenceTracker . refs . has ( playersRefId ) ) ;
27
+ } ) ;
28
+
8
29
describe ( "Internals" , ( ) => {
9
30
it ( "Symbol.species" , ( ) => {
10
31
assert . strictEqual ( ArraySchema [ Symbol . species ] , ArraySchema ) ;
@@ -1952,7 +1973,6 @@ describe("ArraySchema Tests", () => {
1952
1973
1953
1974
assertDeepStrictEqualEncodeAll ( state ) ;
1954
1975
} ) ;
1955
-
1956
1976
} ) ;
1957
1977
1958
1978
describe ( "Edge cases" , ( ) => {
0 commit comments