Chris@27: Chris@27: module test.test_fvector; Chris@27: Chris@27: vec = load fvector; Chris@27: t = load test.test; Chris@27: Chris@33: t.declare [ Chris@27: Chris@27: "zeros-empty": \( Chris@27: v = vec.zeros 0; Chris@27: t.compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "zeros": \( Chris@27: v = vec.zeros 3; Chris@27: t.compare (vec.length v) 3 and Chris@27: t.compare v[0] 0 and Chris@27: t.compare v[1] 0 and Chris@27: t.compare v[2] 0; Chris@27: ), Chris@27: Chris@27: "ones-empty": \( Chris@27: v = vec.ones 0; Chris@27: t.compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "ones": \( Chris@27: v = vec.ones 3; Chris@27: t.compare (vec.length v) 3 and Chris@27: t.compare v[0] 1 and Chris@27: t.compare v[1] 1 and Chris@27: t.compare v[2] 1; Chris@27: ), Chris@27: Chris@27: "from-list-empty": \( Chris@27: v = vec.vector []; Chris@27: t.compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "from-list": \( Chris@27: v = vec.vector [1,2,3,4]; Chris@27: t.compare (vec.length v) 4 and Chris@27: t.compare v[0] 1 and Chris@27: t.compare v[1] 2 and Chris@27: t.compare v[2] 3 and Chris@27: t.compare v[3] 4; Chris@27: ), Chris@27: Chris@27: "equal-empty": \( Chris@27: vec.equal (vec.vector []) (vec.vector []) Chris@27: ), Chris@27: Chris@27: "equal": \( Chris@27: v = vec.vector [1,1,1,1]; Chris@27: w = vec.ones 4; Chris@27: w' = vec.zeros 4; Chris@27: w'' = vec.ones 3; Chris@27: vec.equal v w and not vec.equal v w' and not vec.equal v w''; Chris@27: ), Chris@27: Chris@27: "copyOf-empty": \( Chris@27: vec.equal (vec.vector []) (vec.copyOf (vec.vector [])) Chris@27: ), Chris@27: Chris@27: "copyOf": \( Chris@27: v = vec.vector [1,2,3,4]; Chris@27: w = vec.copyOf v; Chris@27: vec.equal v w and ( Chris@27: v[0] := 0; // check result is not aliasing inputs Chris@27: not vec.equal v w Chris@27: ); Chris@27: ), Chris@27: Chris@27: "rangeOf": \( Chris@27: v = vec.vector [1,2,3,4]; Chris@27: vec.equal (vec.rangeOf v 0 4) v and ( Chris@27: vec.equal (vec.rangeOf v 2 2) (vec.vector [3,4]) Chris@27: ) Chris@27: ), Chris@27: Chris@27: "resizedTo": \( Chris@27: vec.equal (vec.resizedTo 4 (vec.vector [])) (vec.zeros 4) and Chris@27: vec.equal (vec.resizedTo 2 (vec.vector [1,2])) (vec.vector [1,2]) and Chris@27: vec.equal (vec.resizedTo 3 (vec.vector [1,2])) (vec.vector [1,2,0]) and Chris@27: vec.equal (vec.resizedTo 2 (vec.vector [1,2,3])) (vec.vector [1,2]); Chris@27: ), Chris@27: Chris@27: "concat": \( Chris@27: v = vec.vector [1,2,3]; Chris@27: w = vec.vector [4,5,6]; Chris@27: x = vec.concat v w; Chris@27: x' = vec.vector [1,2,3,4,5,6]; Chris@27: vec.equal x x' and Chris@27: (v[0] := 0; // check result is not aliasing inputs Chris@27: w[0] := 0; Chris@27: vec.equal x x') and Chris@27: vec.equal x' (vec.concat x' (vec.vector [])) and Chris@27: vec.equal x' (vec.concat (vec.vector []) x') Chris@27: ), Chris@27: Chris@28: ]; Chris@27: Chris@28: