| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | import haxe.ds.WeakMap;using Lambda;/**	The goal with this test is to test the 'weak' behaviour of WeakMap.	If it works, it will run forever, with constant memory usage;	Otherwise it will exhaust the memory**/class TestWeakMap{	static function main()	{#if sys		var iterate = Sys.args().has('-iterate');#else		var iterate = true;#end		var map = new WeakMap(),				saved = new List();		var i = 0;		while(true)		{			i++;			var obj = { count:i };			map.set(obj, i);			if (i % 77 == 0)			{				// test also some strong references				if (i & 1 == 0)					saved.add(obj);				else					saved.push(obj);				if (saved.length > 1000)					saved.pop();				//check if all references are still present				for (s in saved)				{					var val = map.get(s);					if (val == null)						trace('ERROR: Reference from $s not found!');					if (val != s.count)						trace('ERROR: Wrong value for $s: $val');				}			} else if (iterate && i % 10000 == 0) {				var count = 0;				for (v in map.keys())				{					count++;					if (v == null) trace("ITERATION ERROR:NULL");					var val = map.get(v);					if (val != v.count)						trace('ITERATION ERROR: $val != ${v.count}');				}#if false				Sys.print('$count (${count / saved.length}) \r');#else				trace(count, count / saved.length);#end			}		}	}}
 |