annotate yetilab/vector/test/test_vector.yeti @ 276:39b5f3fed12d

Make slice return partial slices when range extents overlap vector ends
author Chris Cannam
date Sat, 25 May 2013 18:31:10 +0100
parents 197d23954a4e
children
rev   line source
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