-removed some unittest and unused code
This commit is contained in:
parent
204ce9dc79
commit
dec0582398
3 changed files with 3 additions and 306 deletions
|
|
@ -239,162 +239,4 @@ public:
|
|||
export bool opEquals()(auto ref const Vector!(T) r) const {
|
||||
return used == r.used && array.ptr[0 .. used] == r.array.ptr[0 .. r.used];
|
||||
}
|
||||
|
||||
export size_t toHash() const nothrow @trusted {
|
||||
return hashOf(cast(Unqual!(T)[]) array.ptr[0 .. used]);
|
||||
}
|
||||
|
||||
import std.format : FormatSpec, formatValue;
|
||||
|
||||
/**
|
||||
* Preety print
|
||||
*/
|
||||
export void toString(scope void delegate(const(char)[]) sink, FormatSpec!char fmt) {
|
||||
static if (__traits(compiles, formatValue(sink, array[0 .. used], fmt))) {
|
||||
formatValue(sink, array[0 .. used], fmt);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Helper to avoid GC
|
||||
private T[n] s(T, size_t n)(auto ref T[n] array) pure nothrow @nogc @safe {
|
||||
return array;
|
||||
}
|
||||
|
||||
@nogc nothrow unittest {
|
||||
Vector!int vec;
|
||||
assert(vec.empty);
|
||||
vec.add(0);
|
||||
vec.add(1);
|
||||
vec.add(2);
|
||||
vec.add(3);
|
||||
vec.add(4);
|
||||
vec.add(5);
|
||||
assert(vec.length == 6);
|
||||
assert(vec[3] == 3);
|
||||
assert(vec[5] == 5);
|
||||
assert(vec[] == [0, 1, 2, 3, 4, 5].s);
|
||||
assert(!vec.empty);
|
||||
vec.remove(3);
|
||||
assert(vec.length == 5);
|
||||
assert(vec[] == [0, 1, 2, 5, 4].s); //unstable remove
|
||||
}
|
||||
|
||||
@nogc nothrow unittest {
|
||||
Vector!int vec;
|
||||
assert(vec.empty);
|
||||
vec ~= [0, 1, 2, 3, 4, 5].s;
|
||||
assert(vec[] == [0, 1, 2, 3, 4, 5].s);
|
||||
assert(vec.length == 6);
|
||||
vec ~= 6;
|
||||
assert(vec[] == [0, 1, 2, 3, 4, 5, 6].s);
|
||||
|
||||
}
|
||||
|
||||
@nogc nothrow unittest {
|
||||
Vector!int vec;
|
||||
vec ~= [0, 1, 2, 3, 4, 5].s;
|
||||
vec[3] = 33;
|
||||
assert(vec[3] == 33);
|
||||
}
|
||||
|
||||
@nogc nothrow unittest {
|
||||
Vector!char vec;
|
||||
vec ~= "abcd";
|
||||
assert(vec[] == cast(char[]) "abcd");
|
||||
}
|
||||
|
||||
@nogc nothrow unittest {
|
||||
Vector!int vec;
|
||||
vec ~= [0, 1, 2, 3, 4, 5].s;
|
||||
vec.length = 2;
|
||||
assert(vec[] == [0, 1].s);
|
||||
}
|
||||
///////////////////////////////////////////
|
||||
|
||||
enum string checkVectorAllocations = `
|
||||
//assert(gVectorsCreated==gVectorsDestroyed);
|
||||
gVectorsCreated=gVectorsDestroyed=0;
|
||||
scope(exit){if(gVectorsCreated!=gVectorsDestroyed){
|
||||
import std.stdio : writefln;
|
||||
writefln("created==destroyed %s==%s", gVectorsCreated, gVectorsDestroyed);
|
||||
assert(gVectorsCreated==gVectorsDestroyed, "Vector memory leak");
|
||||
}}
|
||||
`;
|
||||
|
||||
unittest {
|
||||
mixin(checkVectorAllocations);
|
||||
Vector!int vecA = Vector!int([0, 1, 2, 3, 4, 5].s);
|
||||
assert(vecA[] == [0, 1, 2, 3, 4, 5].s);
|
||||
Vector!int vecB;
|
||||
vecB = vecA;
|
||||
assert(vecB[] == [0, 1, 2, 3, 4, 5].s);
|
||||
assert(vecB.array.ptr != vecA.array.ptr);
|
||||
assert(vecB.used == vecA.used);
|
||||
Vector!int vecC = vecA;
|
||||
assert(vecC[] == [0, 1, 2, 3, 4, 5].s);
|
||||
assert(vecC.array.ptr != vecA.array.ptr);
|
||||
assert(vecC.used == vecA.used);
|
||||
Vector!int vecD = vecA.init;
|
||||
}
|
||||
|
||||
unittest {
|
||||
static int numInit = 0;
|
||||
static int numDestroy = 0;
|
||||
scope (exit) {
|
||||
assert(numInit == numDestroy);
|
||||
}
|
||||
static struct CheckDestructor {
|
||||
int num = 1;
|
||||
|
||||
this(this) {
|
||||
numInit++;
|
||||
}
|
||||
|
||||
this(int n) {
|
||||
num = n;
|
||||
numInit++;
|
||||
|
||||
}
|
||||
|
||||
~this() {
|
||||
numDestroy++;
|
||||
}
|
||||
}
|
||||
|
||||
CheckDestructor[2] arr = [CheckDestructor(1), CheckDestructor(1)];
|
||||
Vector!CheckDestructor vec;
|
||||
vec ~= CheckDestructor(1);
|
||||
vec ~= arr;
|
||||
vec.remove(1);
|
||||
}
|
||||
|
||||
unittest {
|
||||
assert(gVectorsCreated == gVectorsDestroyed);
|
||||
gVectorsCreated = 0;
|
||||
gVectorsDestroyed = 0;
|
||||
scope (exit) {
|
||||
assert(gVectorsCreated == gVectorsDestroyed);
|
||||
}
|
||||
string strA = "aaa bbb";
|
||||
string strB = "ccc";
|
||||
Vector!(Vector!char) vecA = Vector!(Vector!char)(Vector!char(cast(char[]) strA));
|
||||
assert(vecA[0] == Vector!char(cast(char[]) strA));
|
||||
Vector!(Vector!char) vecB;
|
||||
vecB = vecA;
|
||||
assert(vecB[0] == Vector!char(cast(char[]) strA));
|
||||
assert(vecA.array.ptr != vecB.array.ptr);
|
||||
assert(vecB.used == vecA.used);
|
||||
assert(vecB[0].array.ptr != vecA[0].array.ptr);
|
||||
assert(vecB[0].used == vecA[0].used);
|
||||
}
|
||||
|
||||
unittest {
|
||||
static struct Test {
|
||||
int num;
|
||||
@disable this(this);
|
||||
}
|
||||
|
||||
Vector!Test test;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue