67 lines
1.5 KiB
Haxe
67 lines
1.5 KiB
Haxe
|
class TestIntHash extends haxe.unit.TestCase
|
||
|
{
|
||
|
function spamAlot()
|
||
|
{
|
||
|
var values = new Array< Null<Int> >();
|
||
|
values[0] = null;
|
||
|
var h = new Map<Int,Int>();
|
||
|
|
||
|
for(i in 0...2000)
|
||
|
{
|
||
|
for(j in 0...2000)
|
||
|
{
|
||
|
var idx = Std.int(Math.random()*2999);
|
||
|
if (h.get(idx)!=values[idx])
|
||
|
throw "Bad value";
|
||
|
if ( (i % 4)== 1 || Math.random()>0.5 )
|
||
|
{
|
||
|
if (h.remove(idx) != (values[idx]!=null))
|
||
|
throw "Error in remove!";
|
||
|
values[idx] = null;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
h.set(idx,j);
|
||
|
values[idx] = j;
|
||
|
}
|
||
|
}
|
||
|
var keys = h.keys();
|
||
|
var keyed = new Array<Bool>();
|
||
|
for(i in 0...values.length)
|
||
|
keyed[i] = false;
|
||
|
for( key in h.keys())
|
||
|
keyed[ key ] = true;
|
||
|
for(i in 0...values.length)
|
||
|
if (keyed[i]!=(values[i]!=null))
|
||
|
throw "Bad value";
|
||
|
|
||
|
var valued = new Array<Int>();
|
||
|
for( val in h.iterator())
|
||
|
valued[val]++;
|
||
|
|
||
|
for(val in values)
|
||
|
if (val!=null)
|
||
|
{
|
||
|
if (valued[val]<1)
|
||
|
throw "Not valued!";
|
||
|
valued[val]--;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function test()
|
||
|
{
|
||
|
var err = "";
|
||
|
try
|
||
|
{
|
||
|
spamAlot();
|
||
|
}
|
||
|
catch(e:String)
|
||
|
{
|
||
|
err = e;
|
||
|
}
|
||
|
assertTrue(err=="");
|
||
|
}
|
||
|
|
||
|
}
|