123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- package unit;
- import haxe.remoting.SocketProtocol;
- #if flash
- import haxe.remoting.SocketWrapper;
- #end
- class TestRemoting extends Test {
- static var HOST = "dev.unit-tests";
- static var PORT = 1999;
- static var _ : Dynamic = init();
- static var ecnx : haxe.remoting.ExternalConnection;
- static var ecnx2 : haxe.remoting.ExternalConnection;
- static var ecnx3 : haxe.remoting.ExternalConnection;
- static var lcnx : haxe.remoting.LocalConnection;
- static var fjscnx : haxe.remoting.FlashJsConnection;
- static function staticMethod( a : Int, b : Int ) {
- return a + b;
- }
- static function init() {
- var ctx = RemotingApi.context();
- #if flash
- if( !flash.external.ExternalInterface.available ) return;
- ecnx = haxe.remoting.ExternalConnection.jsConnect("cnx",ctx);
- ecnx3 = haxe.remoting.ExternalConnection.jsConnect("unknown",ctx);
- lcnx = haxe.remoting.LocalConnection.connect("local",ctx,[HOST]);
- fjscnx = haxe.remoting.FlashJsConnection.connect("cnx",#if flash9 "haxeFlash8" #else "haxeFlash9" #end,ctx);
- #elseif js
- ecnx = haxe.remoting.ExternalConnection.flashConnect("cnx","haxeFlash8",ctx);
- ecnx2 = haxe.remoting.ExternalConnection.flashConnect("cnx","haxeFlash9",ctx);
- ecnx3 = haxe.remoting.ExternalConnection.flashConnect("nothing","haxeFlash8",ctx);
- #end
- }
- public function test() {
- #if flash
- if( !flash.external.ExternalInterface.available ) return;
- #end
- // external connection
- #if (flash || js)
- doTestConnection(ecnx);
- #end
- #if !php // accessing the properties of a null object generates a fatal error in php
- exc(function() ecnx3.api.add.call([1,3]));
- #end
- #if js
- doTestConnection(ecnx2);
- #end
- #if flash
- // local connection
- doTestAsyncConnection(lcnx);
- // flash-flash through-js connection
- doTestAsyncConnection(fjscnx);
- #end
- #if (js || neko || php)
- // http sync connection
- var hcnx = haxe.remoting.HttpConnection.urlConnect("http://"+HOST+"/remoting.n");
- doTestConnection(hcnx);
- // test wrappers
- var dcnx = haxe.remoting.AsyncDebugConnection.create(haxe.remoting.AsyncAdapter.create(hcnx));
- dcnx.setErrorDebug(function(path,args,e) {});
- dcnx.setResultDebug(function(path,args,ret) {});
- dcnx.setCallDebug(function(path,args) {});
- doTestAsyncConnection(dcnx);
- #end
- // http async connection
- var hcnx = haxe.remoting.HttpAsyncConnection.urlConnect("http://"+HOST+"/remoting.n");
- doTestAsyncConnection(hcnx);
- var dcnx = haxe.remoting.DelayedConnection.create();
- dcnx.connection = hcnx;
- doTestAsyncConnection(dcnx);
- // socket connection
- #if (flash || neko || php)
- async( doConnect, new Socket(), true );
- #elseif js
- async( doConnect, new Socket("haxeFlash8"), true );
- async( doConnect, new Socket("haxeFlash9"), true );
- #end
- #if swf_mark
- return;
- #end
- var actx = new haxe.remoting.ContextAll();
- actx.addObject("fake",{ TestRemoting : TestRemoting },true);
- eq( actx.call(["unit","TestRemoting","staticMethod"],[2,3]), 5 );
- exc( function() actx.call(["unit2","TestRemoting","staticMethod"],[2,3]) );
- exc( function() actx.call(["unit","TestRemoting2","staticMethod"],[2,3]) );
- exc( function() actx.call(["unit","TestRemoting","staticMethod2"],[2,3]) );
- eq( actx.call(["fake","TestRemoting","staticMethod"],[2,3]), 5 );
- }
- function doConnect( s : Socket, onResult : Bool -> Void ) {
- var me = this;
- #if flash9
- var connected = false;
- s.addEventListener(flash.events.Event.CONNECT,function(e) {
- connected = true;
- me.doTestSocket(s);
- onResult(true);
- });
- s.addEventListener(flash.events.SecurityErrorEvent.SECURITY_ERROR,function(e) {
- onResult(false);
- });
- s.addEventListener(flash.events.Event.CLOSE,function(e) {
- if( !connected )
- onResult(false);
- });
- s.connect(HOST,PORT);
- #elseif (flash || js)
- s.onConnect = function(success) {
- if( success ) me.doTestSocket(s);
- onResult(success);
- };
- s.connect(HOST,PORT);
- #elseif neko
- var ret = try { s.connect(new neko.net.Host(HOST),PORT); true; } catch( e : Dynamic ) false;
- if( ret ) doTestSocket(s);
- onResult(ret);
- #elseif php
- var ret = try { s.connect(new php.net.Host(HOST),PORT); true; } catch( e : Dynamic ) false;
- if( ret ) doTestSocket(s);
- onResult(ret);
- #end
- }
- function doTestSocket( s : Socket ) {
- #if (neko || php)
- var scnx = haxe.remoting.SyncSocketConnection.create(s,new haxe.remoting.Context());
- doTestConnection(scnx);
- #else
- var scnx = haxe.remoting.SocketConnection.create(s,new haxe.remoting.Context());
- doTestAsyncConnection(scnx);
- #end
- }
- function doTestConnection( cnx : haxe.remoting.Connection ) {
- eq( cnx.api.add.call([1,2]), 3 );
- var strings = ["bla","\n","\r","\n\r","\t"," "," ","&","<",">"," ",">","<br/>"];
- for( s in strings ) {
- infos("using "+s);
- eq( cnx.api.id.call([s]), s );
- eq( cnx.api.arr.call([[s,s,s]]), [s,s,s].join("#") );
- }
- infos(null);
- eq( cnx.api.exc.call([null]), null );
- exc( function() cnx.api.exc.call([5]) );
- exc( function() cnx.api.call([]) );
- exc( function() cnx.call([]) );
- exc( function() cnx.api.unknown.call([]) );
- exc( function() cnx.api.sub.add.call([1,2]) );
- eq( cnx.apirec.sub.add.call([1,2]), 3 );
- }
- function doTestAsyncConnection( cnx : haxe.remoting.AsyncConnection ) {
- var asyncExc = callback(asyncExc,cnx.setErrorHandler);
- async( cnx.api.add.call, [1,2], 3 );
- var strings = ["bla","\n","\r","\n\r","\t"," "," ","&","<",">"," ",">","<br/>"];
- for( s in strings ) {
- async( cnx.api.id.call, [s], s );
- async( cnx.api.arr.call, [[s,s,s]], [s,s,s].join("#") );
- }
- async( cnx.api.exc.call, [null], null );
- asyncExc( cnx.api.exc.call, [5] );
- asyncExc( cnx.api.call, [] );
- asyncExc( cnx.call, [] );
- asyncExc( cnx.api.unknown.call, [] );
- asyncExc( cnx.api.sub.add.call, [1,2] );
- async( cnx.apirec.sub.add.call, [1,2], 3 );
- }
- }
|