@@ -12,6 +12,52 @@ describe("ArraySchema Tests", () => {
12
12
} ) ;
13
13
} ) ;
14
14
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
+
15
61
it ( "should not crash when pushing an undefined value" , ( ) => {
16
62
class Block extends Schema {
17
63
@type ( "number" ) num : number ;
@@ -1524,4 +1570,16 @@ describe("ArraySchema Tests", () => {
1524
1570
1525
1571
} ) ;
1526
1572
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
+
1527
1585
} ) ;
0 commit comments