Chris@27
|
1
|
Chris@27
|
2 module test.test_fvector;
|
Chris@27
|
3
|
Chris@27
|
4 vec = load fvector;
|
Chris@27
|
5 t = load test.test;
|
Chris@27
|
6
|
Chris@33
|
7 t.declare [
|
Chris@27
|
8
|
Chris@27
|
9 "zeros-empty": \(
|
Chris@27
|
10 v = vec.zeros 0;
|
Chris@27
|
11 t.compare (vec.length v) 0;
|
Chris@27
|
12 ),
|
Chris@27
|
13
|
Chris@27
|
14 "zeros": \(
|
Chris@27
|
15 v = vec.zeros 3;
|
Chris@27
|
16 t.compare (vec.length v) 3 and
|
Chris@27
|
17 t.compare v[0] 0 and
|
Chris@27
|
18 t.compare v[1] 0 and
|
Chris@27
|
19 t.compare v[2] 0;
|
Chris@27
|
20 ),
|
Chris@27
|
21
|
Chris@27
|
22 "ones-empty": \(
|
Chris@27
|
23 v = vec.ones 0;
|
Chris@27
|
24 t.compare (vec.length v) 0;
|
Chris@27
|
25 ),
|
Chris@27
|
26
|
Chris@27
|
27 "ones": \(
|
Chris@27
|
28 v = vec.ones 3;
|
Chris@27
|
29 t.compare (vec.length v) 3 and
|
Chris@27
|
30 t.compare v[0] 1 and
|
Chris@27
|
31 t.compare v[1] 1 and
|
Chris@27
|
32 t.compare v[2] 1;
|
Chris@27
|
33 ),
|
Chris@27
|
34
|
Chris@27
|
35 "from-list-empty": \(
|
Chris@27
|
36 v = vec.vector [];
|
Chris@27
|
37 t.compare (vec.length v) 0;
|
Chris@27
|
38 ),
|
Chris@27
|
39
|
Chris@27
|
40 "from-list": \(
|
Chris@27
|
41 v = vec.vector [1,2,3,4];
|
Chris@27
|
42 t.compare (vec.length v) 4 and
|
Chris@27
|
43 t.compare v[0] 1 and
|
Chris@27
|
44 t.compare v[1] 2 and
|
Chris@27
|
45 t.compare v[2] 3 and
|
Chris@27
|
46 t.compare v[3] 4;
|
Chris@27
|
47 ),
|
Chris@27
|
48
|
Chris@27
|
49 "equal-empty": \(
|
Chris@27
|
50 vec.equal (vec.vector []) (vec.vector [])
|
Chris@27
|
51 ),
|
Chris@27
|
52
|
Chris@27
|
53 "equal": \(
|
Chris@27
|
54 v = vec.vector [1,1,1,1];
|
Chris@27
|
55 w = vec.ones 4;
|
Chris@27
|
56 w' = vec.zeros 4;
|
Chris@27
|
57 w'' = vec.ones 3;
|
Chris@27
|
58 vec.equal v w and not vec.equal v w' and not vec.equal v w'';
|
Chris@27
|
59 ),
|
Chris@27
|
60
|
Chris@27
|
61 "copyOf-empty": \(
|
Chris@27
|
62 vec.equal (vec.vector []) (vec.copyOf (vec.vector []))
|
Chris@27
|
63 ),
|
Chris@27
|
64
|
Chris@27
|
65 "copyOf": \(
|
Chris@27
|
66 v = vec.vector [1,2,3,4];
|
Chris@27
|
67 w = vec.copyOf v;
|
Chris@27
|
68 vec.equal v w and (
|
Chris@27
|
69 v[0] := 0; // check result is not aliasing inputs
|
Chris@27
|
70 not vec.equal v w
|
Chris@27
|
71 );
|
Chris@27
|
72 ),
|
Chris@27
|
73
|
Chris@27
|
74 "rangeOf": \(
|
Chris@27
|
75 v = vec.vector [1,2,3,4];
|
Chris@27
|
76 vec.equal (vec.rangeOf v 0 4) v and (
|
Chris@27
|
77 vec.equal (vec.rangeOf v 2 2) (vec.vector [3,4])
|
Chris@27
|
78 )
|
Chris@27
|
79 ),
|
Chris@27
|
80
|
Chris@27
|
81 "resizedTo": \(
|
Chris@27
|
82 vec.equal (vec.resizedTo 4 (vec.vector [])) (vec.zeros 4) and
|
Chris@27
|
83 vec.equal (vec.resizedTo 2 (vec.vector [1,2])) (vec.vector [1,2]) and
|
Chris@27
|
84 vec.equal (vec.resizedTo 3 (vec.vector [1,2])) (vec.vector [1,2,0]) and
|
Chris@27
|
85 vec.equal (vec.resizedTo 2 (vec.vector [1,2,3])) (vec.vector [1,2]);
|
Chris@27
|
86 ),
|
Chris@27
|
87
|
Chris@27
|
88 "concat": \(
|
Chris@27
|
89 v = vec.vector [1,2,3];
|
Chris@27
|
90 w = vec.vector [4,5,6];
|
Chris@27
|
91 x = vec.concat v w;
|
Chris@27
|
92 x' = vec.vector [1,2,3,4,5,6];
|
Chris@27
|
93 vec.equal x x' and
|
Chris@27
|
94 (v[0] := 0; // check result is not aliasing inputs
|
Chris@27
|
95 w[0] := 0;
|
Chris@27
|
96 vec.equal x x') and
|
Chris@27
|
97 vec.equal x' (vec.concat x' (vec.vector [])) and
|
Chris@27
|
98 vec.equal x' (vec.concat (vec.vector []) x')
|
Chris@27
|
99 ),
|
Chris@27
|
100
|
Chris@28
|
101 ];
|
Chris@27
|
102
|
Chris@28
|
103
|