66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Uses native enum, which does not play nice with Dynamic - must use @:unreflective
							 | 
						||
| 
								 | 
							
								@:unreflective
							 | 
						||
| 
								 | 
							
								@:enum extern abstract SystemMetric(SystemMetricImpl) {
							 | 
						||
| 
								 | 
							
								    @:native("wxSYS_MOUSE_BUTTONS")      var MOUSE_BUTTONS;
							 | 
						||
| 
								 | 
							
								    @:native("wxSYS_OS")      var OS;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								@:unreflective
							 | 
						||
| 
								 | 
							
								@:native("wxSystemMetric")
							 | 
						||
| 
								 | 
							
								extern class SystemMetricImpl { }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Wraps enum in struct, which does play nice...
							 | 
						||
| 
								 | 
							
								@:enum extern abstract SystemMetricStruct(SystemMetricStructImpl) {
							 | 
						||
| 
								 | 
							
								    @:native("wxSYS_MOUSE_BUTTONS")      var MOUSE_BUTTONS;
							 | 
						||
| 
								 | 
							
								    @:native("wxSYS_OS")      var OS;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								@:native("cpp::Struct<wxSystemMetric, cpp::EnumHandler>")
							 | 
						||
| 
								 | 
							
								extern class SystemMetricStructImpl { }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@:headerCode('
							 | 
						||
| 
								 | 
							
								enum wxSystemMetric
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   wxSYS_OS = 3,
							 | 
						||
| 
								 | 
							
								   wxSYS_MOUSE_BUTTONS = 27,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								')
							 | 
						||
| 
								 | 
							
								class TestNativeEnum extends haxe.unit.TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   var x:SystemMetric = SystemMetric.MOUSE_BUTTONS;
							 | 
						||
| 
								 | 
							
								   var xStruct:SystemMetricStruct = SystemMetricStruct.MOUSE_BUTTONS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function isX(val:SystemMetric)
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      return (val==x);
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   function isXStruct(val:SystemMetricStruct)
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      return (val==xStruct);
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   public function test()
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      assertTrue( isX(SystemMetric.MOUSE_BUTTONS)==true );
							 | 
						||
| 
								 | 
							
								      assertTrue( isX(SystemMetric.OS)==false );
							 | 
						||
| 
								 | 
							
								      assertTrue( isXStruct(SystemMetricStruct.MOUSE_BUTTONS)==true );
							 | 
						||
| 
								 | 
							
								      assertTrue( isXStruct(SystemMetricStruct.OS)==false );
							 | 
						||
| 
								 | 
							
								      var d:Dynamic = this;
							 | 
						||
| 
								 | 
							
								      assertTrue( d.x==null );
							 | 
						||
| 
								 | 
							
								      assertTrue( d.xStruct!=null );
							 | 
						||
| 
								 | 
							
								      assertTrue( d.isX==null );
							 | 
						||
| 
								 | 
							
								      assertTrue( d.isXStruct!=null );
							 | 
						||
| 
								 | 
							
								      var func = d.isXStruct;
							 | 
						||
| 
								 | 
							
								      assertTrue(func!=null);
							 | 
						||
| 
								 | 
							
								      assertTrue(func(SystemMetricStruct.MOUSE_BUTTONS)==true );
							 | 
						||
| 
								 | 
							
								      assertTrue(func(SystemMetricStruct.OS)==false );
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |