[html] Update and cleanup unit testing html, adapting to the namespace change
authorKalle Vahlman <kalle.vahlman@movial.com>
Mon, 20 Apr 2009 06:37:44 +0000 (09:37 +0300)
committerKalle Vahlman <kalle.vahlman@movial.com>
Mon, 20 Apr 2009 06:38:30 +0000 (09:38 +0300)
html/unit.html

index 4ad216c2f693379285e292717e9b389f738aeae3..e143f85264e39494393b0afa3325dabd7ca58d28 100644 (file)
@@ -9,7 +9,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>test</title>
-<script type='text/javascript' src='DBus.js'></script>
+<script type='text/javascript' src='dbus.js'></script>
 <script type='text/javascript'>
 
 var n_tests = 0;
@@ -56,11 +56,11 @@ Test.prototype =
       bad++;
       return;
     }
-    var method = DBus.getMethod(DBus.SESSION, 'org.movial.Unit',
+    var method = dbus.getMethod(dbus.SESSION, 'org.movial.Unit',
                                 '/org/movial/Unit',
                                 this.method_name, 'org.movial.Unit', this.signature,
                                 this);
-    this.signal = DBus.getSignal(DBus.SESSION, 'org.movial.Unit', this.method_name,
+    this.signal = dbus.getSignal(dbus.SESSION, 'org.movial.Unit', this.method_name,
                                 null, null, this);
     this.signal.onemit = this.onemit;
 
@@ -151,32 +151,7 @@ Test.prototype =
     if (!is_equal(this.arg, reply_arg))
       color = 'red';
 
-    var argstr;
-
-    if (reply_arg instanceof Array || reply_arg instanceof Object)
-    {
-      var first = true;
-      argstr = '['
-      for (var propname in reply_arg)
-      {
-        if (first) {
-          first = false;
-        } else {
-          argstr += ", ";
-        }
-        argstr += propname + ":" + reply_arg[propname];
-      }
-      argstr += ']';
-    } else {
-      if (typeof this.arg == 'boolean')
-      {
-        argstr = reply_arg.toString();
-      } else if (reply_arg) {
-        argstr = reply_arg.toString();
-      } else {
-        argstr = '';
-      }
-    }
+    var argstr = get_argstr(reply_arg);
 
     if (color == 'red')
     {
@@ -211,6 +186,38 @@ Test.prototype =
 
 };
 
+function get_argstr(arg)
+{
+  var argstr;
+
+  if (arg instanceof Array || arg instanceof Object)
+  {
+      var first = true;
+      argstr = '['
+      for (var propname in arg)
+      {
+        if (first) {
+            first = false;
+        } else {
+            argstr += ", ";
+        }
+        argstr += propname + ":" + get_argstr(arg[propname]);
+      }
+      argstr += ']';
+  } else {
+      if (typeof arg == 'boolean')
+      {
+        argstr = arg.toString();
+      } else if (arg) {
+        argstr = arg.toString();
+      } else {
+        argstr = '';
+      }
+  }
+
+  return argstr;
+}
+
 function is_equal(a, b)
 {
   if ((a instanceof Array && b instanceof Array)
@@ -240,7 +247,7 @@ function run_next()
 
   var status = document.getElementById('status');
   status.innerHTML += "<p>Ending test...";
-  var end = DBus.getMethod(DBus.SESSION, 'org.movial.Unit',
+  var end = dbus.getMethod(dbus.SESSION, 'org.movial.Unit',
                                 '/org/movial/Unit',
                                 "end", 'org.movial.Unit');
   end();
@@ -259,10 +266,16 @@ function do_unit()
 {
   var status = document.getElementById('status');
   
+  if (!window.dbus)
+  {
+    status.innerHTML += "<p>Browser D-Bus Bridge not available, cannot run tests.";
+    return;
+  }
+
   setTimeout(show_results, 1000);
   
   status.innerHTML += "<p>Starting test...";
-  var start = DBus.getMethod(DBus.SESSION, 'org.movial.Unit',
+  var start = dbus.getMethod(dbus.SESSION, 'org.movial.Unit',
                                 '/org/movial/Unit',
                                 "start", 'org.movial.Unit');
   start();
@@ -272,74 +285,71 @@ function do_unit()
   tests[i++] = new Test('Boolean', true, null, false);
   tests[i++] = new Test('Boolean', true, null, false, 'b');
 
-  tests[i++] = new Test('Int16', 32767, DBus.Int16, false);
+  tests[i++] = new Test('Int16', 32767, dbus.Int16, false);
   tests[i++] = new Test('Int16', 32767, null, true);
-  tests[i++] = new Test('Int16', 32767, DBus.Int16, false, 'n');
+  tests[i++] = new Test('Int16', 32767, dbus.Int16, false, 'n');
   tests[i++] = new Test('Int16', 32767, null, false, 'n');
 
-  tests[i++] = new Test('Int32', 2147483647, DBus.Int32, false);
+  tests[i++] = new Test('Int32', 2147483647, dbus.Int32, false);
   tests[i++] = new Test('Int32', 2147483647, null, true);
-  tests[i++] = new Test('Int32', 2147483647, DBus.Int32, false, 'i');
+  tests[i++] = new Test('Int32', 2147483647, dbus.Int32, false, 'i');
   tests[i++] = new Test('Int32', 2147483647, null, false, 'i');
 
   // There's problems with the (u)int64 types since doubles can't hold
   // large enough values accurately.
-  tests[i++] = new Test('Int64', 17179869176, DBus.Int64, false);
+  tests[i++] = new Test('Int64', 17179869176, dbus.Int64, false);
   tests[i++] = new Test('Int64', 17179869176, null, true);
-  tests[i++] = new Test('Int64', 17179869176, DBus.Int64, false, 'x');
+  tests[i++] = new Test('Int64', 17179869176, dbus.Int64, false, 'x');
   tests[i++] = new Test('Int64', 17179869176, null, false, 'x');
 
-  tests[i++] = new Test('UInt16', 32767, DBus.UInt16, false);
+  tests[i++] = new Test('UInt16', 32767, dbus.UInt16, false);
   tests[i++] = new Test('UInt16', 32767, null, true);
-  tests[i++] = new Test('UInt16', 32767, DBus.UInt16, false, 'q');
+  tests[i++] = new Test('UInt16', 32767, dbus.UInt16, false, 'q');
   tests[i++] = new Test('UInt16', 32767, null, false, 'q');
 
-  tests[i++] = new Test('UInt32', 2147483647, DBus.UInt32, false);
+  tests[i++] = new Test('UInt32', 2147483647, dbus.UInt32, false);
   tests[i++] = new Test('UInt32', 2147483647, null, true);
-  tests[i++] = new Test('UInt32', 2147483647, DBus.UInt32, false, 'u');
+  tests[i++] = new Test('UInt32', 2147483647, dbus.UInt32, false, 'u');
   tests[i++] = new Test('UInt32', 2147483647, null, false, 'u');
 
-  tests[i++] = new Test('UInt64', 17179869176, DBus.UInt64, false);
+  tests[i++] = new Test('UInt64', 17179869176, dbus.UInt64, false);
   tests[i++] = new Test('UInt64', 17179869176, null, true);
-  tests[i++] = new Test('UInt64', 17179869176, DBus.UInt64, false, 't');
+  tests[i++] = new Test('UInt64', 17179869176, dbus.UInt64, false, 't');
   tests[i++] = new Test('UInt64', 17179869176, null, false, 't');
 
   tests[i++] = new Test('Double', 1024.1024, null, false);
   tests[i++] = new Test('Double', 1024.1024, null, false, 'd');
 
-  tests[i++] = new Test('Byte', 1, DBus.Byte, false);
+  tests[i++] = new Test('Byte', 1, dbus.Byte, false);
   tests[i++] = new Test('Byte', 1, null, true);
-  tests[i++] = new Test('Byte', 1, DBus.Byte, false, 'y');
+  tests[i++] = new Test('Byte', 1, dbus.Byte, false, 'y');
   tests[i++] = new Test('Byte', 1, null, false, 'y');
 
-  tests[i++] = new Test('String', "Test string", null, false);
-  tests[i++] = new Test('String', "Test string", null, false, 's');
+  tests[i++] = new Test('String', "abc åäö", null, false);
+  tests[i++] = new Test('String', "abc åäö", null, false, 's');
 
-  tests[i++] = new Test('ObjectPath', "/org/movial/Unit", DBus.ObjectPath, false);
+  tests[i++] = new Test('ObjectPath', "/org/movial/Unit", dbus.ObjectPath, false);
   tests[i++] = new Test('ObjectPath', "/org/movial/Unit", null, true);
-  tests[i++] = new Test('ObjectPath', "/org/movial/Unit", DBus.ObjectPath, false, 'o');
-  tests[i++] = new Test('ObjectPath', "I'm invalid object path", DBus.ObjectPath, true);
-  tests[i++] = new Test('ObjectPath', "/not//valid/either", DBus.ObjectPath, true);
+  tests[i++] = new Test('ObjectPath', "/org/movial/Unit", dbus.ObjectPath, false, 'o');
+  tests[i++] = new Test('ObjectPath', "I'm invalid object path", dbus.ObjectPath, true);
+  tests[i++] = new Test('ObjectPath', "/not//valid/either", dbus.ObjectPath, true);
 
-  tests[i++] = new Test('Signature', "sib", DBus.Signature, false);
+  tests[i++] = new Test('Signature', "sib", dbus.Signature, false);
   tests[i++] = new Test('Signature', "sib", null, true);
-  tests[i++] = new Test('Signature', "sib", DBus.Signature, false, 'g');
+  tests[i++] = new Test('Signature', "sib", dbus.Signature, false, 'g');
   tests[i++] = new Test('Signature', "sib", null, false, 'g');
 
-  tests[i++] = new Test("Array", ["woot", "bleep", "wap"], null, false, null);
+  tests[i++] = new Test("Array", ["a", "b", "äöÄÖ"], null, false, null);
   tests[i++] = new Test("Array", [1, 2, 3], null, false, null);
-  tests[i++] = new Test("Array", ["woot", "bleep", "wap"], null, false, 'as');
+  tests[i++] = new Test("Array", ["a", "b", "äöÄÖ"], null, false, 'as');
   tests[i++] = new Test("Array", [1, 2, 3], null, false, 'ai');
 
   var dict = new Object();
-  dict["test"] = "me";
-  dict["test2"] = "you";
-
+  dict["abc åäö"] = "abc åäö";
   tests[i++] = new Test("Dict", dict, null, false, 'a{ss}');
-  tests[i++] = new Test("Dict", dict, null, false);
 
   var dict = new Object();
-  dict["test"] = [100, 2, 3000];
+  dict["test"] = [100.0, 2.0, 3000.0];
   tests[i++] = new Test("Dict", dict, null, false, 'a{sad}');
 
   var dict = new Object();
@@ -347,22 +357,67 @@ function do_unit()
   tests[i++] = new Test("Dict", dict, null, false, 'a{sai}');
 
   var dict = new Object();
-  var array = new Array("fää", "woo", "boo");
-  dict["test"] = array;
+  var array = new Array("abc", "def", "åäö");
+  dict["abc åäö"] = array;
   tests[i++] = new Test("Dict", dict, null, false, 'a{sas}');
 
+  var dict = new Object();
+  var dict2 = new Object();
+  dict2["abc"] = "åäö";
+  dict["åäö"] = dict2;
+  tests[i++] = new Test("Dict", dict, null, false, 'a{sa{ss}}');
+
+  var dict = new Object();
+  var dict2 = new Object();
+  dict2["åäö"] = ["abc", "def", "åäö"];
+  dict["abc"] = dict2;
+  tests[i++] = new Test("Dict", dict, null, false, 'a{sa{sas}}');
+
+  // Test for very deep container structure
+  var deep = new Object();
+  var deep_sig = "a{s";
+  function add_dict(o, d, depth)
+  {
+    o[0] = new Object();
+    deep_sig += "a{s";
+    if (d == depth)
+    {
+      o[0]["abc"] = "åäö";
+      deep_sig += "s}";
+      return;
+    }
+    add_array(o[0], d + 1, depth);
+    deep_sig += "}";
+  }
+  function add_array(o, d, depth)
+  {
+    o["abc"] = new Array();
+    deep_sig += "a";
+    if (d == depth)
+    {
+      o["abc"][0] = "åäö";
+      deep_sig += "s";
+      return;
+    }
+    add_dict(o["abc"], d + 1, depth);
+  }
+
+  add_array(deep, 0, 20);
+  deep_sig += "}";
+  tests[i++] = new Test("Dict", deep, null, false, deep_sig);
+
 /* TODO: We don't really yet know how exactly we want these to go...
-  tests[i++] = new Test("Variant", "woot", DBus.Variant, false);
-  tests[i++] = new Test("Variant", 1, DBus.Variant, false);
-  tests[i++] = new Test("Variant", "woot", DBus.Variant, false, 'v');
-  tests[i++] = new Test("Variant", ["woot", "bar"], DBus.Variant, false, 'v');
+  tests[i++] = new Test("Variant", "woot", null, false, 'v');
+  tests[i++] = new Test("Variant", 1, dbus.Variant, false);
+  tests[i++] = new Test("Variant", "woot", dbus.Variant, false, 'v');
+  tests[i++] = new Test("Variant", ["woot", "bar"], dbus.Variant, false, 'v');
 
   var struct = new Object();
   struct.what = "that";
   struct.how_many = 42;
 
-  tests[i++] = new Test("Struct", struct, DBus.Struct, false);
-  tests[i++] = new Test("Struct", struct, DBus.Struct, false, '(si)');
+  tests[i++] = new Test("Struct", struct, dbus.Struct, false);
+  tests[i++] = new Test("Struct", struct, dbus.Struct, false, '(si)');
 */
 
   for (var j = 0; j < i-1; j++)