+/*
+ test the echo_TestCall2 interface
+*/
+function test_TestCall2(echo)
+{
+ var io = irpcObj();
+
+ print("Testing echo_TestCall2\n");
+
+ for (i=1;i<=7;i++) {
+ io.input.level = i;
+ status = echo.echo_TestCall2(io);
+ check_status_ok(status);
+ }
+}
+
+/*
+ test the echo_TestSleep interface
+*/
+function test_TestSleep(echo)
+{
+ var io = irpcObj();
+
+ print("Testing echo_TestSleep\n");
+
+ io.input.seconds = 1;
+ status = echo.echo_TestSleep(io);
+ check_status_ok(status);
+}
+
+/*
+ test the echo_TestEnum interface
+*/
+function test_TestEnum(echo)
+{
+ var io = irpcObj();
+
+ print("Testing echo_TestEnum\n");
+
+ io.input.foo1 = echo.ECHO_ENUM1;
+ io.input.foo2 = new Object();
+ io.input.foo2.e1 = echo.ECHO_ENUM1;
+ io.input.foo2.e2 = echo.ECHO_ENUM1_32;
+ io.input.foo3 = new Object();
+ io.input.foo3.e1 = echo.ECHO_ENUM2;
+ status = echo.echo_TestEnum(io);
+ check_status_ok(status);
+ assert(io.output.foo1 == echo.ECHO_ENUM1);
+ assert(io.output.foo2.e1 == echo.ECHO_ENUM2);
+ assert(io.output.foo2.e2 == echo.ECHO_ENUM1_32);
+ assert(io.output.foo3.e1 == echo.ECHO_ENUM2);
+}
+
+/*
+ test the echo_TestSurrounding interface
+*/
+function test_TestSurrounding(echo)
+{
+ var io = irpcObj();
+
+ print("Testing echo_TestSurrounding\n");
+
+ io.input.data = new Object();
+ io.input.data.x = 10;
+ io.input.data.surrounding = new Array(10);
+ status = echo.echo_TestSurrounding(io);
+ check_status_ok(status);
+ assert(io.output.data.surrounding.length == 20);
+ check_array_zero(io.output.data.surrounding);
+}
+
+/*
+ test the echo_TestDoublePointer interface
+*/
+function test_TestDoublePointer(echo)
+{
+ var io = irpcObj();
+
+ print("Testing echo_TestDoublePointer\n");
+
+ io.input.data = 7;
+ status = echo.echo_TestDoublePointer(io);
+ check_status_ok(status);
+ assert(io.input.data == io.input.data);
+}
+
+
+if (options.ARGV.length != 1) {
+ println("Usage: echo.js <BINDING>");
+ return -1;
+}
+var binding = options.ARGV[0];
+var echo = rpcecho_init();
+datablob_init(echo);