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