forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
class ObjectData
 | 
						|
{
 | 
						|
   public var id:Int;
 | 
						|
   public function new(inId:Int) id = inId;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
class TestObjectHash extends haxe.unit.TestCase
 | 
						|
{
 | 
						|
   function spamAlot()
 | 
						|
   {
 | 
						|
      var values = new Array< Null<Int> >();
 | 
						|
      values[0] = null;
 | 
						|
      var h = new Map<ObjectData,Int>();
 | 
						|
      var idxToKey = new Array<ObjectData>();
 | 
						|
      for(idx in 0...3000)
 | 
						|
         idxToKey[idx] = new ObjectData(idx);
 | 
						|
 | 
						|
      for(i in 0...2000)
 | 
						|
      {
 | 
						|
         for(j in 0...2000)
 | 
						|
         {
 | 
						|
            var idxInt = Std.int(Math.random()*2999);
 | 
						|
            var idx = idxToKey[idxInt];
 | 
						|
            if (h.get(idx)!=values[idxInt])
 | 
						|
            {
 | 
						|
               throw "Bad value";
 | 
						|
            }
 | 
						|
            if ( (i % 4)== 1 || Math.random()>0.5 )
 | 
						|
            {
 | 
						|
               if (h.remove(idx) != (values[idxInt]!=null))
 | 
						|
               {
 | 
						|
                  trace("Bad remove");
 | 
						|
                  throw "Error in remove!";
 | 
						|
               }
 | 
						|
               values[idxInt] = null;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
               h.set(idx,j);
 | 
						|
               values[idxInt] = j;
 | 
						|
            }
 | 
						|
         }
 | 
						|
         var keys = h.keys();
 | 
						|
         var keyed = new Array<Bool>();
 | 
						|
         for(i in 0...values.length)
 | 
						|
            keyed[i] = false;
 | 
						|
         for( key in h.keys())
 | 
						|
         {
 | 
						|
            var idxInt = key.id;
 | 
						|
            keyed[ idxInt ] = true;
 | 
						|
         }
 | 
						|
         for(i in 0...values.length)
 | 
						|
            if (keyed[i]!=(values[i]!=null))
 | 
						|
               throw "Bad value";
 | 
						|
 | 
						|
         var valued = new Array<Int>();
 | 
						|
         #if neko
 | 
						|
         valued[3000]=0;
 | 
						|
         for(i in 0...3000)
 | 
						|
            valued[i] = 0;
 | 
						|
         #end
 | 
						|
         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:Dynamic)
 | 
						|
      {
 | 
						|
         trace(e);
 | 
						|
         err = e;
 | 
						|
      }
 | 
						|
      assertTrue(err=="");
 | 
						|
   }
 | 
						|
 | 
						|
}
 |