browser_object_follow: do not give $opener for following non-element/window in new...
[conkeror.git] / modules / walnut.js
blobcceab15d3fa364ad50a1b32fbb84af8e05d7c241
1 /**
2  * (C) Copyright 2008 John J. Foerch
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 in_module(null);
10 function assert (got) {
11     if (! got)
12         throw new Error("expected a true value, got <"+got+">.");
13     return true;
16 function assert_equals (got, expect) {
17     if (got != expect)
18         throw new Error("expected <"+expect+">, got <"+got+">.");
19     return true;
22 function assert_error (fn) {
23     try {
24         fn();
25     } catch (e) {
26         return true;
27     }
28     throw new Error("expected an error calling <"+fn+">.");
31 function assert_null (got) {
32     if (got !== null)
33         throw new Error("expected null, got <"+got+">.");
34     return true;
37 function assert_not (got) {
38     if (got)
39         throw new Error("expected a false value, got <"+got+">.");
40     return true;
43 function assert_objects_equal (got, expect) {
44     if (typeof(got) != "object" || typeof(expect) != "object" ||
45         got === null || expect === null)
46     {
47         return assert_equals(got, expect);
48     }
49     if (got.constructor !== expect.constructor)
50         throw new Error("objects are of different type");
51     var expectkeys = [i for (i in expect)];
52     var gotkeys = [i for (i in got)];
53     if (gotkeys.length != expectkeys.length)
54         throw new Error("objects have different property counts");
55     for (var i in expectkeys) {
56         assert_objects_equal(got[i], expect[i]);
57     }
58     return true;
62 function walnut_results () {
63     this.run = 0;
64     this.failed = 0;
67 function walnut_run (suite) {
68     var results = new walnut_results();
69     if (suite.suite_setup)
70         suite.suite_setup();
71     for (var k in suite) {
72         if (k.substr(0,5) == 'test_') {
73             if (suite.setup)
74                 suite.setup();
75             results.run++;
76             dump(k+'..');
77             try {
78                 suite[k]();
79                 dumpln('ok');
80             } catch (e) {
81                 results.failed++;
82                 dumpln('failed');
83                 dump_error(e);
84             }
85             if (suite.teardown)
86                 suite.teardown();
87         }
88     }
89     if (suite.suite_teardown)
90         suite.suite_teardown();
91     dumpln(results.run+" run, "+results.failed+" failed");
92     return results;
95 provide("walnut");