annotate yetilab/vector/test/test_vector.yeti @ 254:5eb57c649de0 sparse

Using hashes is simpler, but turns out to be mostly no faster and sometimes much slower. Not one to merge back.
author Chris Cannam
date Tue, 21 May 2013 17:40:33 +0100
parents 77c6a81c577f
children de770971a628
rev   line source
Chris@27 1
Chris@222 2 module yetilab.vector.test.test_vector;
Chris@27 3
Chris@222 4 vec = load yetilab.vector.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@211 78 /*
Chris@27 79 "copyOf-empty": \(
Chris@211 80 vec.equal (vec.fromList []) (vec.copyOf (vec.fromList []))
Chris@27 81 ),
Chris@27 82
Chris@27 83 "copyOf": \(
Chris@211 84 v = vec.fromList [1,2,3,4];
Chris@27 85 w = vec.copyOf v;
Chris@27 86 vec.equal v w and (
Chris@27 87 v[0] := 0; // check result is not aliasing inputs
Chris@27 88 not vec.equal v w
Chris@27 89 );
Chris@27 90 ),
Chris@211 91 */
Chris@27 92 "rangeOf": \(
Chris@211 93 v = vec.fromList [1,2,3,4];
Chris@186 94 vec.equal (vec.rangeOf 0 4 v) v and (
Chris@211 95 vec.equal (vec.rangeOf 2 2 v) (vec.fromList [3,4])
Chris@27 96 )
Chris@27 97 ),
Chris@27 98
Chris@27 99 "resizedTo": \(
Chris@211 100 vec.equal (vec.resizedTo 4 (vec.fromList [])) (vec.zeros 4) and
Chris@211 101 vec.equal (vec.resizedTo 2 (vec.fromList [1,2])) (vec.fromList [1,2]) and
Chris@211 102 vec.equal (vec.resizedTo 3 (vec.fromList [1,2])) (vec.fromList [1,2,0]) and
Chris@211 103 vec.equal (vec.resizedTo 2 (vec.fromList [1,2,3])) (vec.fromList [1,2]);
Chris@27 104 ),
Chris@27 105
Chris@35 106 "concat2": \(
Chris@211 107 v = vec.fromList [1,2,3];
Chris@211 108 w = vec.fromList [4,5,6];
Chris@35 109 x = vec.concat [v, w];
Chris@211 110 x' = vec.fromList [1,2,3,4,5,6];
Chris@27 111 vec.equal x x' and
Chris@211 112 /* (v[0] := 0; // check result is not aliasing inputs
Chris@27 113 w[0] := 0;
Chris@211 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