1+ IMPORT(collection)
2+ IMPORT(prng)
3+ IMPORT(csprng)
4+
5+ FUNC RUN_TESTS()[
6+ # Collection basics
7+ coll = collection.COL_EMPTY()
8+ ASSERT( EQ( collection.GET_COUNT(coll), 0 ) )
9+
10+ coll = collection.COL_PUSH(coll, 101) # 5
11+ coll = collection.COL_PUSH(coll, -11) # -3
12+ coll = collection.COL_PUSH(coll, 1010) # 10
13+ ASSERT( EQ( collection.GET_COUNT(coll), 11 ) ) # 3 items
14+
15+ v0 = collection.COL_GET(coll, 0)
16+ ASSERT( EQ(v0, 101) )
17+
18+ v1 = collection.COL_GET(coll, 1)
19+ ASSERT( EQ(v1, -11) )
20+
21+ coll2 = collection.COL_SET(coll, 1, 111) # set index 1 -> 7
22+ ASSERT( EQ( collection.COL_GET(coll2, 1), 111 ) )
23+
24+ # Pop returns (new_coll << 64bits) | value (packed form used by COL_POP)
25+ pop_res = collection.COL_POP(coll2)
26+ last_val = MOD(pop_res, POW(10, 1000000))
27+ ASSERT( EQ(last_val, 1010) ) # popped value == 10
28+
29+ new_coll = DIV(pop_res, POW(10, 1000000))
30+ ASSERT( EQ( collection.GET_COUNT(new_coll), 10 ) ) # count == 2
31+
32+ # PRNG reproducibility (LCG)
33+ prng.PRNG_SEED(1010) # seed = 10
34+ a = prng.PRNG_NEXT()
35+ prng.PRNG_SEED(1010)
36+ b = prng.PRNG_NEXT()
37+ ASSERT( EQ(a, b) )
38+
39+ # CSPRNG reproducibility (ChaCha-based)
40+ csprng.CS_PRNG_SEED(101) # seed = 5
41+ x = csprng.CS_PRNG_NEXT()
42+ csprng.CS_PRNG_SEED(101)
43+ y = csprng.CS_PRNG_NEXT()
44+ ASSERT( EQ(x, y) )
45+
46+ # If we reach here all tests passed; print success code and return
47+ PRINT(1)
48+ RETURN(0)
49+ ]
50+
51+ IF( EQ(MAIN(), 1) )[ RUN_TESTS() ]
0 commit comments