Chris@27: Chris@222: module yetilab.vector.test.test_vector; Chris@27: Chris@273: vec = load yetilab.vector; Chris@27: Chris@93: { compare } = load yetilab.test.test; Chris@53: Chris@53: [ Chris@27: Chris@27: "zeros-empty": \( Chris@27: v = vec.zeros 0; Chris@53: compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "zeros": \( Chris@27: v = vec.zeros 3; Chris@211: a = vec.array v; Chris@53: compare (vec.length v) 3 and Chris@211: compare a[0] 0 and Chris@211: compare a[1] 0 and Chris@211: compare a[2] 0; Chris@27: ), Chris@27: Chris@36: "consts-empty": \( Chris@36: v = vec.consts 4 0; Chris@53: compare (vec.length v) 0; Chris@36: ), Chris@36: Chris@36: "consts": \( Chris@36: v = vec.consts 4 3; Chris@211: a = vec.array v; Chris@53: compare (vec.length v) 3 and Chris@211: compare a[0] 4 and Chris@211: compare a[1] 4 and Chris@211: compare a[2] 4; Chris@36: ), Chris@36: Chris@27: "ones-empty": \( Chris@27: v = vec.ones 0; Chris@53: compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "ones": \( Chris@27: v = vec.ones 3; Chris@211: a = vec.array v; Chris@53: compare (vec.length v) 3 and Chris@211: compare a[0] 1 and Chris@211: compare a[1] 1 and Chris@211: compare a[2] 1; Chris@27: ), Chris@27: Chris@27: "from-list-empty": \( Chris@211: v = vec.fromList []; Chris@53: compare (vec.length v) 0; Chris@27: ), Chris@27: Chris@27: "from-list": \( Chris@211: v = vec.fromList [1,2,3,4]; Chris@211: a = vec.array v; Chris@53: compare (vec.length v) 4 and Chris@211: compare a[0] 1 and Chris@211: compare a[1] 2 and Chris@211: compare a[2] 3 and Chris@211: compare a[3] 4; Chris@27: ), Chris@27: Chris@27: "equal-empty": \( Chris@211: vec.equal (vec.fromList []) (vec.fromList []) Chris@27: ), Chris@27: Chris@27: "equal": \( Chris@211: v = vec.fromList [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@260: "slice": \( Chris@211: v = vec.fromList [1,2,3,4]; Chris@276: vec.equal (vec.slice v 0 4) v and Chris@276: vec.equal (vec.slice v 2 4) (vec.fromList [3,4]) and Chris@276: vec.equal (vec.slice v (-1) 2) (vec.fromList [1,2]) and Chris@276: vec.equal (vec.slice v 3 5) (vec.fromList [4]) and Chris@276: vec.equal (vec.slice v 5 7) (vec.fromList []) and Chris@276: vec.equal (vec.slice v 3 2) (vec.fromList []) Chris@27: ), Chris@27: Chris@27: "resizedTo": \( Chris@211: vec.equal (vec.resizedTo 4 (vec.fromList [])) (vec.zeros 4) and Chris@211: vec.equal (vec.resizedTo 2 (vec.fromList [1,2])) (vec.fromList [1,2]) and Chris@211: vec.equal (vec.resizedTo 3 (vec.fromList [1,2])) (vec.fromList [1,2,0]) and Chris@211: vec.equal (vec.resizedTo 2 (vec.fromList [1,2,3])) (vec.fromList [1,2]); Chris@27: ), Chris@27: Chris@269: "repeated": \( Chris@269: vec.equal (vec.repeated (vec.fromList []) 2) (vec.fromList []) and Chris@269: vec.equal (vec.repeated (vec.fromList [1,2,3]) 0) (vec.fromList []) and Chris@269: vec.equal (vec.repeated (vec.fromList [1,2,3]) 1) (vec.fromList [1,2,3]) and Chris@269: vec.equal (vec.repeated (vec.fromList [1,2,3]) 2) (vec.fromList [1,2,3,1,2,3]) Chris@269: ), Chris@269: Chris@265: "reversed": \( Chris@265: vec.equal (vec.reversed (vec.fromList [])) (vec.fromList []) and Chris@265: vec.equal (vec.reversed (vec.fromList [1,2,3])) (vec.fromList [3,2,1]) and Chris@265: vec.equal (vec.reversed (vec.fromList [1,2])) (vec.fromList [2,1]) Chris@265: ), Chris@265: Chris@35: "concat2": \( Chris@211: v = vec.fromList [1,2,3]; Chris@211: w = vec.fromList [4,5,6]; Chris@35: x = vec.concat [v, w]; Chris@211: x' = vec.fromList [1,2,3,4,5,6]; Chris@27: vec.equal x x' and Chris@211: vec.equal x' (vec.concat [x', vec.fromList []]) and Chris@211: vec.equal x' (vec.concat [vec.fromList [], x']) Chris@35: ), Chris@35: Chris@35: "concatn": \( Chris@211: v = vec.fromList [1,2,3]; Chris@211: w = vec.fromList [4,5,6]; Chris@35: vec.equal (vec.concat []) (vec.zeros 0) and Chris@35: vec.equal (vec.concat [v]) v and Chris@211: vec.equal (vec.concat [v,w,v]) (vec.fromList [1,2,3,4,5,6,1,2,3]) Chris@27: ), Chris@27: Chris@53: ] is hash boolean>; Chris@27: Chris@28: Chris@53: