2025-01-22 16:18:30 +01:00

54 lines
1.3 KiB
Haxe

package tests;
import externs.RGB;
class TestRgb extends haxe.unit.TestCase
{
public function testCreate()
{
// Pointer-like sysntax
var rgbPtr = RGB.create(255,0,128);
assertTrue( rgbPtr.ptr.toInt() == 0xff0080 );
rgbPtr.ptr.deleteMe();
// Structure-like syntax
var rgbStruct:RGBStruct = null;
rgbStruct.r = 1;
rgbStruct = null;
rgbStruct.r = 1;
rgbStruct.g = 2;
rgbStruct.b = 3;
assertTrue( rgbStruct.toInt() == 0x010203 );
// Store in dynamic
var d:Dynamic = rgbStruct;
// Reference (pointer) like syntax
var rgbRef:RGBRef = rgbStruct;
rgbRef.g = 255;
assertTrue( rgbStruct.toInt() == 0x01ff03 );
// Get from dynamic
rgbStruct = d;
assertTrue( rgbStruct.toInt() == 0x010203 );
var rgbStruct2:RGBStruct = cast rgbRef;
assertTrue( rgbStruct2.toInt() == 0x010203 );
// Reference refers to rgbStruct, not rgbStruct2
rgbRef.b = 0;
assertTrue( rgbStruct2.toInt() == 0x010203 );
assertTrue( rgbStruct.toInt() == 0x010200 );
// TODO - non-dynamic versions
var d2:Dynamic = rgbStruct2;
// == dynamic
assertTrue( d2==d );
// != dynamic
var d0:Dynamic = rgbStruct;
assertTrue( d0!=d );
}
}