[tor-commits] [flashproxy/master] Add the beginning of a unit test program for flashproxy.js.

dcf at torproject.org dcf at torproject.org
Mon Apr 9 04:08:42 UTC 2012


commit 41750ae520ce1f9994dc74800605d6e92d085361
Author: David Fifield <david at bamsoftware.com>
Date:   Mon Mar 12 09:57:32 2012 -0700

    Add the beginning of a unit test program for flashproxy.js.
    
    I run this using Rhino, which is "apt-get install rhino" on Debian.
---
 Makefile           |    5 ++-
 flashproxy-test.js |  106 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 flashproxy.js      |    5 ++
 3 files changed, 115 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 7f6e02e..0fb0c79 100644
--- a/Makefile
+++ b/Makefile
@@ -19,4 +19,7 @@ install:
 clean:
 	rm -f $(TARGETS)
 
-.PHONY: all clean
+test:
+	./flashproxy-test.js
+
+.PHONY: all clean test
diff --git a/flashproxy-test.js b/flashproxy-test.js
new file mode 100755
index 0000000..21ae756
--- /dev/null
+++ b/flashproxy-test.js
@@ -0,0 +1,106 @@
+#!/usr/bin/js
+
+/* To run this test program, install the Rhino JavaScript interpreter
+   (apt-get install rhino). */
+
+var num_tests = 0;
+var num_failed = 0;
+
+load("flashproxy.js");
+
+function objects_equal(a, b)
+{
+    if (typeof a != typeof b)
+        return false;
+    if (typeof a != "object")
+        return a == b;
+
+    for (var k in a) {
+        if (!objects_equal(a[k], b[k]))
+            return false;
+    }
+    for (var k in b) {
+        if (!objects_equal(a[k], b[k]))
+            return false;
+    }
+
+    return true;
+}
+
+function quote(s)
+{
+    return "\"" + s.replace(/([\\\"])/, "\\$1") + "\"";
+}
+
+function maybe_quote(s)
+{
+    if (/[\\\"]/.test(s))
+        return quote(s);
+    else
+        return s;
+}
+
+function repr(x)
+{
+    if (typeof x === null) {
+        return "null";
+    } else if (typeof x == "undefined") {
+        return "undefined";
+    } else if (typeof x == "object") {
+        var elems = [];
+        for (var k in x)
+            elems.push(maybe_quote(k) + ": " + repr(x[k]));
+        return "{ " + elems.join(", ") + " }";
+    } else if (typeof x == "string") {
+        return quote(x);
+    } else {
+        return x.toString();
+    }
+}
+
+function pass(test)
+{
+    num_tests++;
+    print("PASS " + repr(test));
+}
+
+function fail(test, expected, actual)
+{
+    num_tests++;
+    num_failed++;
+    print("FAIL " + repr(test) + "  expected: " + repr(expected) + "  actual: " + repr(actual));
+}
+
+function test_parse_query_string()
+{
+    var TESTS = [
+        { qs: "",
+          expected: { } },
+        { qs: "a=b",
+          expected: { a: "b" } },
+        { qs: "a=b=c",
+          expected: { a: "b=c" } },
+        { qs: "a=b&c=d",
+          expected: { a: "b", c: "d" } },
+        { qs: "client=&relay=1.2.3.4%3A9001",
+          expected: { client: "", relay: "1.2.3.4:9001" } },
+    ];
+
+    for (var i = 0; i < TESTS.length; i++) {
+        var test = TESTS[i];
+        var actual;
+
+        actual = parse_query_string(test.qs);
+        if (objects_equal(actual, test.expected))
+            pass(test.qs);
+        else
+            fail(test.qs, test.expected, actual);
+    }
+}
+
+test_parse_query_string();
+
+if (num_failed == 0)
+    quit(0);
+else
+    quit(1);
diff --git a/flashproxy.js b/flashproxy.js
index 7bab9e9..e4c7319 100644
--- a/flashproxy.js
+++ b/flashproxy.js
@@ -3,6 +3,11 @@ var DEFAULT_FACILITATOR_ADDR = {
     port: 9002
 };
 
+function parse_query_string(qs)
+{
+    return {};
+}
+
 function format_addr(addr)
 {
     return addr.host + ":" + addr.port;





More information about the tor-commits mailing list