annotate test/test_fvector.yeti @ 35:1f80673af4c7

Make concat take a list of arbitrary length; test it, and improve test output
author Chris Cannam
date Sat, 22 Dec 2012 10:08:06 +0000
parents e20d3c23a243
children fa49869bda51
rev   line source
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@35 88 "concat2": \(
Chris@27 89 v = vec.vector [1,2,3];
Chris@27 90 w = vec.vector [4,5,6];
Chris@35 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@35 97 vec.equal x' (vec.concat [x', vec.vector []]) and
Chris@35 98 vec.equal x' (vec.concat [vec.vector [], x'])
Chris@35 99 ),
Chris@35 100
Chris@35 101 "concatn": \(
Chris@35 102 v = vec.vector [1,2,3];
Chris@35 103 w = vec.vector [4,5,6];
Chris@35 104 vec.equal (vec.concat []) (vec.zeros 0) and
Chris@35 105 vec.equal (vec.concat [v]) v and
Chris@35 106 vec.equal (vec.concat [v,w,v]) (vec.vector [1,2,3,4,5,6,1,2,3])
Chris@27 107 ),
Chris@27 108
Chris@28 109 ];
Chris@27 110
Chris@28 111