Files
kraken/tests/test_vectorTest.krak

139 lines
3.6 KiB
Plaintext

import io:*;
import mem:*;
import vector:*;
import vector_literals:*
obj AbleToBeDestroyed (Object) {
var data:int
fun construct(dat:int):void {
data = dat
print("Constructed: ")
println(data)
}
fun copy_construct(other:AbleToBeDestroyed*):void {
data = other->data+1
print("Copied: ")
print(other->data)
print(" to ")
println(data)
}
fun operator=(other:AbleToBeDestroyed):void {
print("Assigned: ")
print(other.data)
print(" to ")
print(data)
print(" is now ")
data = other.data+1
println(data)
}
fun destruct(): void {
print("Destroyed: ")
println(data)
}
};
fun main(): int {
var intVec.construct(): vector<int>;
intVec.addEnd(1);
intVec.addEnd(3);
intVec.addEnd(3);
intVec.addEnd(7);
println(intVec.size);
for (var i: int = 0; i < intVec.size; i++;)
print(intVec.at(i));
println();
for (var i: int = 0; i < intVec.size; i++;)
print(intVec[i]);
println();
// in place lambda map
intVec.in_place(fun(it:int):int { return it*2; })
for (var i: int = 0; i < intVec.size; i++;)
print(intVec.at(i));
println();
intVec.for_each(fun(it:int):void print(it+7);)
println();
var subd = intVec.map(fun(it:int):int { return it-1; })
for (var i: int = 0; i < subd.size; i++;)
print(subd.at(i));
println();
var newType = intVec.map(fun(it:int):double { return it+1.7; })
for (var i: int = 0; i < newType.size; i++;)
print(newType.at(i));
println();
vector(1,2,3,4,5,6,7,8,9,10,11,12).for_each(fun(i:int) { print(i); })
println()
var desVec: vector<AbleToBeDestroyed>* = new<vector<AbleToBeDestroyed>>()->construct();
var testDestruct.construct(0): AbleToBeDestroyed;
desVec->addEnd(testDestruct);
println("delete vector")
delete(desVec);
var newOne = vector("hayyy")
println(newOne[0])
var noParam = vector<double>()
noParam.add(4.7)
println(noParam[0])
var assignTest = vector("first")
println(assignTest[0])
var toAssign = vector("first")
toAssign.add("second")
assignTest = toAssign
println(assignTest[0])
println(assignTest[1])
var sliceTest = vector(1)
sliceTest.add(2)
sliceTest.add(3)
sliceTest.add(4)
print("full: ")
sliceTest.for_each(fun(it:int):void print(it);)
println()
print("middle: ")
sliceTest.slice(1,-2).for_each(fun(it:int):void print(it);)
println()
print("all but first: ")
sliceTest.slice(1,-1).for_each(fun(it:int):void print(it);)
println()
print("all but last: ")
sliceTest.slice(0,-2).for_each(fun(it:int):void print(it);)
println()
print("just some: ")
sliceTest.slice(1,2).for_each(fun(it:int):void print(it);)
println()
println("find test")
var multipleFindTest = vector(1,2,3)
println(multipleFindTest.find(1))
println(multipleFindTest.find(2))
println(multipleFindTest.find(3))
println("set, []=, and delete test")
var setTest = vector(4,5,6)
setTest.add(7)
setTest.set(1,8)
setTest[2] = 9
setTest.for_each(fun(it: int) println(it);)
println("delete")
setTest.remove(2)
setTest.for_each(fun(it: int) println(it);)
println("delete v2")
var firstRem.construct(100): AbleToBeDestroyed;
var secondRem.construct(200): AbleToBeDestroyed;
var thirdRem.construct(300): AbleToBeDestroyed;
var remTest = vector(firstRem, secondRem, thirdRem);
remTest.remove(1)
println("done")
return 0;
}