1 module tests.vector; 2 3 import bubel.ecs.simple_vector; 4 import bubel.ecs.vector; 5 6 version(GNU) 7 { 8 pragma(inline, true) T[n] staticArray(T, size_t n)(auto ref T[n] a) 9 { 10 return a; 11 } 12 } 13 else import std.array : staticArray; 14 15 @("simple-vector") 16 unittest 17 { 18 SimpleVector vector; 19 vector.add(cast(ubyte[]) "a"); 20 vector.add(cast(ubyte[]) "bsdf"); 21 assert(vector[0 .. 5] == cast(ubyte[]) "absdf"); 22 assert(vector[4] == 'f'); 23 assert(vector[] == cast(ubyte[]) "absdf"); 24 assert(vector[$ - 1] == 'f'); 25 26 vector.clear(); 27 assert(vector.length == 0); 28 29 ubyte[1025] array; 30 foreach(i;0..cast(uint)array.length)array[i] = cast(ubyte)i; 31 vector.add(array); 32 assert(vector.length == 1025); 33 assert(vector[] == array[]); 34 35 SimpleVector vector2; 36 vector2.clear(); 37 vector2.add(array[0..1023]); 38 vector2.add('a'); 39 vector2.add('b'); 40 assert(vector2.length == 1025); 41 assert(vector2[0..1023] == array[0..1023]); 42 assert(vector2[1023] == 'a'); 43 assert(vector2[1024] == 'b'); 44 } 45 46 @("Vector") 47 unittest 48 { 49 struct G 50 { 51 int a; 52 } 53 54 Vector!G vector; 55 assert(vector.empty()); 56 vector.add(G(1)); 57 assert(!vector.empty()); 58 vector.clear(); 59 assert(vector.empty()); 60 vector.add(G(1)); 61 assert(!vector.empty()); 62 vector.reset(); 63 assert(vector.empty()); 64 65 vector.add(G(1)); 66 vector.add([G(2),G(5)].staticArray); 67 assert(vector.length == 3); 68 assert(vector.capacity == 1); 69 70 Vector!G vector2; 71 vector2.add([G(1),G(2),G(5)].staticArray); 72 assert(vector == vector2); 73 vector2.remove(1); 74 assert(vector != vector2); 75 assert(vector2.length == 2); 76 assert(vector2[1] == G(5)); 77 vector2.add(G(2),1); 78 assert(vector == vector2); 79 }