diff --git a/lib/js/test/test.js b/lib/js/test/test.js
index 0c7d2cb..2d8ec9b 100755
--- a/lib/js/test/test.js
+++ b/lib/js/test/test.js
@@ -58,7 +58,7 @@
     if (!details.result) {
       console.log('======== FAIL ========');
       console.log('TestName: ' + details.name);
-      details.message && console.log(details.message);
+      if (details.message) console.log(details.message);
       console.log('Expected: ' + details.expected);
       console.log('Actual  : ' + details.actual);
       console.log('======================');
@@ -86,6 +86,24 @@
   test("Void", function() {
     equal(client.testVoid(), undefined);
   });
+  test("Binary (String)", function() {
+    var binary = '';
+    for (var v = 255; v >= 0; --v) {
+      binary += String.fromCharCode(v);
+    }
+    equal(client.testBinary(binary), binary);
+  });
+  test("Binary (Uint8Array)", function() {
+    var binary = '';
+    for (var v = 255; v >= 0; --v) {
+      binary += String.fromCharCode(v);
+    }
+    var arr = new Uint8Array(binary.length);
+    for (var i = 0; i < binary.length; ++i) {
+      arr[i] = binary[i].charCodeAt();
+    }
+    equal(client.testBinary(arr), binary);
+  });
   test("String", function() {
     equal(client.testString(''), '');
     equal(client.testString(stringTest), stringTest);
