forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Haxe
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Haxe
		
	
	
		
			Executable File
		
	
	
	
	
| package tests;
 | |
| import externs.Rectangle;
 | |
| 
 | |
| class TestRectangle extends haxe.unit.TestCase
 | |
| {
 | |
|    static var statRect:Rectangle;
 | |
|    static var statRectPtr:RectanglePtr;
 | |
| 
 | |
|    static var statRectProp(get,set):Rectangle;
 | |
|    static var statRectPtrProp(get,set):RectanglePtr;
 | |
| 
 | |
|    var memRect:Rectangle;
 | |
|    var memRectPtr:RectanglePtr;
 | |
| 
 | |
|    var memRectProp(get,set):Rectangle;
 | |
|    var memRectPtrProp(get,set):RectanglePtr;
 | |
| 
 | |
|    static function get_statRectProp() return statRect;
 | |
|    static function set_statRectProp(val:Rectangle) return statRect=val;
 | |
|    static function get_statRectPtrProp() return statRectPtr;
 | |
|    static function set_statRectPtrProp(val:RectanglePtr) return statRectPtr=val;
 | |
| 
 | |
| 
 | |
|    function get_memRectProp() return memRect;
 | |
|    function set_memRectProp(val:Rectangle) return memRect=val;
 | |
|    function get_memRectPtrProp() return memRectPtr;
 | |
|    function set_memRectPtrProp(val:RectanglePtr) return memRectPtr=val;
 | |
| 
 | |
| 
 | |
|    public function testRect()
 | |
|    {
 | |
|       // Struct - copy semantic
 | |
|       var rectangle = Rectangle.make(3,4);
 | |
|       assertTrue( rectangle.area()==0 );
 | |
| 
 | |
|       var rect2 = rectangle;
 | |
|       rect2.width = 2;
 | |
|       rect2.height = 4;
 | |
|       assertTrue( rect2.area()==8 );
 | |
|       assertTrue( rectangle.area()==0 );
 | |
| 
 | |
| 
 | |
|       // Take address ...
 | |
|       var rectPtr:RectanglePtr = rectangle;
 | |
| 
 | |
|       // Pointer-like sysntax
 | |
|       rectPtr.width = 3;
 | |
|       rectPtr.height = 5;
 | |
|       var dynamicPtr:Dynamic  = rectPtr;
 | |
| 
 | |
|       assertTrue( rectPtr.area()==15 );
 | |
|       // Same object
 | |
|       assertTrue( rectangle.area()==15 );
 | |
| 
 | |
|       var dynamicCopy:Dynamic = rectangle; // 3,4  3x5
 | |
| 
 | |
|       rectangle.width = 10;
 | |
|       rectangle.height = 10;
 | |
|       assertTrue( rectangle.area()==100 );
 | |
| 
 | |
|       // points to original object
 | |
|       var fromDynamic:RectanglePtr = rectPtr;
 | |
|       assertTrue( fromDynamic.area()==100 );
 | |
| 
 | |
|       // Restore from Dynamic ...
 | |
|       rectangle = dynamicCopy;
 | |
|       assertTrue( rectangle.area()==15 );
 | |
|    }
 | |
| 
 | |
|    public function testReflect()
 | |
|    {
 | |
|       statRect = Rectangle.make(1,2,3,4);
 | |
|       memRect = Rectangle.make(4,5,6,7);
 | |
|       // This is not correct in the GC moving case ...
 | |
|       //statRectPtr = memRect;
 | |
|       statRectPtr = Rectangle.create(1,1,2,2);
 | |
|       memRectPtr = statRect;
 | |
| 
 | |
|       assertTrue( statRectProp.area()==12 );
 | |
|       assertTrue( memRectProp.area()==42 );
 | |
|       assertTrue( statRectPtrProp.area()==4 );
 | |
|       assertTrue( memRectPtrProp.area()==12 );
 | |
| 
 | |
|       var d:Dynamic = this;
 | |
|       var r:Rectangle = d.memRect;
 | |
|       assertTrue( r.area()==42 );
 | |
|       var prop:Rectangle = Reflect.getProperty(d,"memRectProp");
 | |
|       assertTrue( prop.area()==42 );
 | |
|       var propPtr:RectanglePtr = Reflect.getProperty(d,"memRectPtrProp");
 | |
|       assertTrue( propPtr.area()==12 );
 | |
| 
 | |
|       var d:Dynamic = TestRectangle;
 | |
|       var r:Rectangle = d.statRect;
 | |
|       assertTrue( r.area()==12 );
 | |
|       var prop:Rectangle = Reflect.getProperty(d,"statRectProp");
 | |
|       assertTrue( prop.area()==12 );
 | |
|       var propPtr:RectanglePtr = Reflect.getProperty(d,"statRectPtrProp");
 | |
|       assertTrue( propPtr.area()==4 );
 | |
| 
 | |
| 
 | |
|       // No longer valid
 | |
|       statRectPtr.delete();
 | |
|       statRectPtr = null;
 | |
|    }
 | |
| }
 | |
| 
 | |
| 
 |