168 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			168 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | class ClientOne implements pack.HostInterface | ||
|  | { | ||
|  |    public function new() { } | ||
|  |    public function getOne() : Int return 1; | ||
|  |    public function getOneString() : String return "1"; | ||
|  | } | ||
|  | 
 | ||
|  | class Client | ||
|  | { | ||
|  |    public static var clientBool0 = true; | ||
|  |    public static var clientBool1 = false; | ||
|  |    public static var clientBool2 = true; | ||
|  |    public static var clientBool3 = false; | ||
|  | 
 | ||
|  |    public static function main() | ||
|  |    { | ||
|  |       Common.status = "running"; | ||
|  | 
 | ||
|  |       // See if it compiles | ||
|  |       if (sys.thread.Thread.current()==null) | ||
|  |       { | ||
|  |          Common.status = "Cppia Thread.current not working."; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (Common.hostImplementation.getOne()!=1) | ||
|  |       { | ||
|  |          Common.status = "Bad call to getOne"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (Common.hostImplementation.getOneString()!="1") | ||
|  |       { | ||
|  |          Common.status = "Bad call to getOneString"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var c = new ClientExtends(); | ||
|  |       if (!c.ok()) | ||
|  |       { | ||
|  |          Common.status = "Bad client extension"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (c.whoStartedYou()!="HostBase") | ||
|  |       { | ||
|  |          Common.status = "Bad class fallthrough - got " + c.whoStartedYou(); | ||
|  |          return; | ||
|  |       } | ||
|  |       if (c.whoOverridesYou()!="ClientExtends") | ||
|  |       { | ||
|  |          Common.status = "Bad class override - got " + c.whoOverridesYou(); | ||
|  |          return; | ||
|  |       } | ||
|  |       if (!c.testPointers()) | ||
|  |       { | ||
|  |          Common.status = "Could not move native pointers"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var hostInterface:IHostInterface = c; | ||
|  |       if (hostInterface.whoStartedYou()!="HostBase") | ||
|  |       { | ||
|  |          Common.status = "Bad interface fallthrough"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (hostInterface.whoOverridesYou()!="ClientExtends") | ||
|  |       { | ||
|  |          Common.status = "Bad interface override"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (hostInterface.hostImplOnly(1,"two",3)!="1two3") | ||
|  |       { | ||
|  |          Common.status = "Bad hostImplOnly implementation"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (!c.testOne()) | ||
|  |       { | ||
|  |          Common.status = "Bad ClientExtends getOne"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |       var clientInterface:IClientInterface = c; | ||
|  |       if (clientInterface.whoStartedYou()!="HostBase") | ||
|  |       { | ||
|  |          Common.status = "Bad client interface fallthrough"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (clientInterface.uniqueClientFunc()!="uniqueClientFunc") | ||
|  |       { | ||
|  |          Common.status = "Bad new client interface call"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (clientInterface.whoOverridesYou()!="ClientExtends") | ||
|  |       { | ||
|  |          Common.status = "Bad client interface override"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var clientHostInterface:IClientHostInterface = c; | ||
|  |       if (clientHostInterface.whoStartedYou()!="HostBase") | ||
|  |       { | ||
|  |          Common.status = "Bad client interface fallthrough"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (clientHostInterface.whoOverridesYou()!="ClientExtends") | ||
|  |       { | ||
|  |          Common.status = "Bad client interface override"; | ||
|  |          return; | ||
|  |       } | ||
|  |       if (clientHostInterface.whoAreYou()!="ClientExtends") | ||
|  |       { | ||
|  |          Common.status = "Bad client/host interface"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var c:ClientIHostImpl = new ClientIHostImpl(); | ||
|  |       if (c.hostImplOnly(0,null,0)!="client" || c.whoStartedYou()!="client" || c.whoOverridesYou()!="client") | ||
|  |       { | ||
|  |          Common.status = "Trouble implementing host interface"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var c:ClientExtends = new ClientExtends2(); | ||
|  |       if (c.getGeneration()!=2) | ||
|  |       { | ||
|  |          Common.status = "Error calling cppia super function"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       var c = new ClientExtends2(); | ||
|  |       if (c.testOne()) | ||
|  |       { | ||
|  |          Common.status = "ClientExtends2 getOne should fail"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (!c.testOneExtended()) | ||
|  |       { | ||
|  |          Common.status = "ClientExtends2 testOneExtended failed"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (!c.testFour()) | ||
|  |       { | ||
|  |          Common.status = "ClientExtends2 testFour error"; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |       var hostBools = HostBase.hostBool0 + "/" + HostBase.hostBool1+ "/" + HostBase.hostBool2+ "/" + HostBase.hostBool3; | ||
|  |       var clientBools = clientBool0 + "/" + clientBool1+ "/" + clientBool2+ "/" + clientBool3; | ||
|  |       if (hostBools!=clientBools) | ||
|  |       { | ||
|  |          Common.status = "Error in bool representation:" + hostBools + "!=" + clientBools; | ||
|  |          return; | ||
|  |       } | ||
|  | 
 | ||
|  |       Common.clientImplementation = new ClientOne(); | ||
|  |       Common.status = "ok"; | ||
|  | 
 | ||
|  |       Common.callback = () -> Common.callbackSet = 2; | ||
|  |    } | ||
|  | } |