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;
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								}
							 |