Chris@27
|
1
|
Chris@222
|
2 module yetilab.vector.test.test_vector;
|
Chris@27
|
3
|
Chris@273
|
4 vec = load yetilab.vector;
|
Chris@27
|
5
|
Chris@93
|
6 { compare } = load yetilab.test.test;
|
Chris@53
|
7
|
Chris@53
|
8 [
|
Chris@27
|
9
|
Chris@27
|
10 "zeros-empty": \(
|
Chris@27
|
11 v = vec.zeros 0;
|
Chris@53
|
12 compare (vec.length v) 0;
|
Chris@27
|
13 ),
|
Chris@27
|
14
|
Chris@27
|
15 "zeros": \(
|
Chris@27
|
16 v = vec.zeros 3;
|
Chris@211
|
17 a = vec.array v;
|
Chris@53
|
18 compare (vec.length v) 3 and
|
Chris@211
|
19 compare a[0] 0 and
|
Chris@211
|
20 compare a[1] 0 and
|
Chris@211
|
21 compare a[2] 0;
|
Chris@27
|
22 ),
|
Chris@27
|
23
|
Chris@36
|
24 "consts-empty": \(
|
Chris@36
|
25 v = vec.consts 4 0;
|
Chris@53
|
26 compare (vec.length v) 0;
|
Chris@36
|
27 ),
|
Chris@36
|
28
|
Chris@36
|
29 "consts": \(
|
Chris@36
|
30 v = vec.consts 4 3;
|
Chris@211
|
31 a = vec.array v;
|
Chris@53
|
32 compare (vec.length v) 3 and
|
Chris@211
|
33 compare a[0] 4 and
|
Chris@211
|
34 compare a[1] 4 and
|
Chris@211
|
35 compare a[2] 4;
|
Chris@36
|
36 ),
|
Chris@36
|
37
|
Chris@27
|
38 "ones-empty": \(
|
Chris@27
|
39 v = vec.ones 0;
|
Chris@53
|
40 compare (vec.length v) 0;
|
Chris@27
|
41 ),
|
Chris@27
|
42
|
Chris@27
|
43 "ones": \(
|
Chris@27
|
44 v = vec.ones 3;
|
Chris@211
|
45 a = vec.array v;
|
Chris@53
|
46 compare (vec.length v) 3 and
|
Chris@211
|
47 compare a[0] 1 and
|
Chris@211
|
48 compare a[1] 1 and
|
Chris@211
|
49 compare a[2] 1;
|
Chris@27
|
50 ),
|
Chris@27
|
51
|
Chris@27
|
52 "from-list-empty": \(
|
Chris@211
|
53 v = vec.fromList [];
|
Chris@53
|
54 compare (vec.length v) 0;
|
Chris@27
|
55 ),
|
Chris@27
|
56
|
Chris@27
|
57 "from-list": \(
|
Chris@211
|
58 v = vec.fromList [1,2,3,4];
|
Chris@211
|
59 a = vec.array v;
|
Chris@53
|
60 compare (vec.length v) 4 and
|
Chris@211
|
61 compare a[0] 1 and
|
Chris@211
|
62 compare a[1] 2 and
|
Chris@211
|
63 compare a[2] 3 and
|
Chris@211
|
64 compare a[3] 4;
|
Chris@27
|
65 ),
|
Chris@27
|
66
|
Chris@27
|
67 "equal-empty": \(
|
Chris@211
|
68 vec.equal (vec.fromList []) (vec.fromList [])
|
Chris@27
|
69 ),
|
Chris@27
|
70
|
Chris@27
|
71 "equal": \(
|
Chris@211
|
72 v = vec.fromList [1,1,1,1];
|
Chris@27
|
73 w = vec.ones 4;
|
Chris@27
|
74 w' = vec.zeros 4;
|
Chris@27
|
75 w'' = vec.ones 3;
|
Chris@27
|
76 vec.equal v w and not vec.equal v w' and not vec.equal v w'';
|
Chris@27
|
77 ),
|
Chris@27
|
78
|
Chris@260
|
79 "slice": \(
|
Chris@211
|
80 v = vec.fromList [1,2,3,4];
|
Chris@276
|
81 vec.equal (vec.slice v 0 4) v and
|
Chris@276
|
82 vec.equal (vec.slice v 2 4) (vec.fromList [3,4]) and
|
Chris@276
|
83 vec.equal (vec.slice v (-1) 2) (vec.fromList [1,2]) and
|
Chris@276
|
84 vec.equal (vec.slice v 3 5) (vec.fromList [4]) and
|
Chris@276
|
85 vec.equal (vec.slice v 5 7) (vec.fromList []) and
|
Chris@276
|
86 vec.equal (vec.slice v 3 2) (vec.fromList [])
|
Chris@27
|
87 ),
|
Chris@27
|
88
|
Chris@27
|
89 "resizedTo": \(
|
Chris@211
|
90 vec.equal (vec.resizedTo 4 (vec.fromList [])) (vec.zeros 4) and
|
Chris@211
|
91 vec.equal (vec.resizedTo 2 (vec.fromList [1,2])) (vec.fromList [1,2]) and
|
Chris@211
|
92 vec.equal (vec.resizedTo 3 (vec.fromList [1,2])) (vec.fromList [1,2,0]) and
|
Chris@211
|
93 vec.equal (vec.resizedTo 2 (vec.fromList [1,2,3])) (vec.fromList [1,2]);
|
Chris@27
|
94 ),
|
Chris@27
|
95
|
Chris@269
|
96 "repeated": \(
|
Chris@269
|
97 vec.equal (vec.repeated (vec.fromList []) 2) (vec.fromList []) and
|
Chris@269
|
98 vec.equal (vec.repeated (vec.fromList [1,2,3]) 0) (vec.fromList []) and
|
Chris@269
|
99 vec.equal (vec.repeated (vec.fromList [1,2,3]) 1) (vec.fromList [1,2,3]) and
|
Chris@269
|
100 vec.equal (vec.repeated (vec.fromList [1,2,3]) 2) (vec.fromList [1,2,3,1,2,3])
|
Chris@269
|
101 ),
|
Chris@269
|
102
|
Chris@265
|
103 "reversed": \(
|
Chris@265
|
104 vec.equal (vec.reversed (vec.fromList [])) (vec.fromList []) and
|
Chris@265
|
105 vec.equal (vec.reversed (vec.fromList [1,2,3])) (vec.fromList [3,2,1]) and
|
Chris@265
|
106 vec.equal (vec.reversed (vec.fromList [1,2])) (vec.fromList [2,1])
|
Chris@265
|
107 ),
|
Chris@265
|
108
|
Chris@35
|
109 "concat2": \(
|
Chris@211
|
110 v = vec.fromList [1,2,3];
|
Chris@211
|
111 w = vec.fromList [4,5,6];
|
Chris@35
|
112 x = vec.concat [v, w];
|
Chris@211
|
113 x' = vec.fromList [1,2,3,4,5,6];
|
Chris@27
|
114 vec.equal x x' and
|
Chris@211
|
115 vec.equal x' (vec.concat [x', vec.fromList []]) and
|
Chris@211
|
116 vec.equal x' (vec.concat [vec.fromList [], x'])
|
Chris@35
|
117 ),
|
Chris@35
|
118
|
Chris@35
|
119 "concatn": \(
|
Chris@211
|
120 v = vec.fromList [1,2,3];
|
Chris@211
|
121 w = vec.fromList [4,5,6];
|
Chris@35
|
122 vec.equal (vec.concat []) (vec.zeros 0) and
|
Chris@35
|
123 vec.equal (vec.concat [v]) v and
|
Chris@211
|
124 vec.equal (vec.concat [v,w,v]) (vec.fromList [1,2,3,4,5,6,1,2,3])
|
Chris@27
|
125 ),
|
Chris@27
|
126
|
Chris@53
|
127 ] is hash<string, () -> boolean>;
|
Chris@27
|
128
|
Chris@28
|
129
|
Chris@53
|
130
|