forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | class TestStringHash extends haxe.unit.TestCase | ||
|  | { | ||
|  |    function spamAlot() | ||
|  |    { | ||
|  |       var values = new Array< Null<Int> >(); | ||
|  |       values[0] = null; | ||
|  |       var h = new Map<String,Int>(); | ||
|  |       var idxToKey = new Array<String>(); | ||
|  |       for(idx in 0...3000) | ||
|  |          idxToKey[idx] = Std.string(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 arr = [0,1,2]; | ||
|  |          var keys = h.keys(); | ||
|  |          // Empty allocations can mess with the GC nursery | ||
|  |          cpp.NativeArray.setSize(arr,0); | ||
|  |          cpp.NativeArray.setSize(arr,3); | ||
|  |          var keyed = new Array<Bool>(); | ||
|  |          for(i in 0...values.length) | ||
|  |             keyed[i] = false; | ||
|  |          for( key in h.keys()) | ||
|  |          { | ||
|  |             var idxInt = Std.parseInt(key); | ||
|  |             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==""); | ||
|  |    } | ||
|  | 
 | ||
|  | } |