Prepare new Debian package
[conkeror.git] / modules / walnut.js
blob8cb30480c598be7c2b6efeee75d18e92eea982aa
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 function assert (got) {
9     if (! got)
10         throw new Error("expected a true value, got <"+got+">.");
11     return true;
14 function assert_equals (got, expect) {
15     if (got != expect)
16         throw new Error("expected <"+expect+">, got <"+got+">.");
17     return true;
20 function assert_error (fn) {
21     try {
22         fn();
23     } catch (e) {
24         return true;
25     }
26     throw new Error("expected an error calling <"+fn+">.");
29 function assert_null (got) {
30     if (got !== null)
31         throw new Error("expected null, got <"+got+">.");
32     return true;
35 function assert_not (got) {
36     if (got)
37         throw new Error("expected a false value, got <"+got+">.");
38     return true;
41 function assert_objects_equal (got, expect) {
42     if (typeof(got) != "object" || typeof(expect) != "object")
43         return assert_equals(got, expect);
44     if (got.constructor !== expect.constructor)
45         throw new Error("objects are of different type");
46     var expectkeys = [i for (i in expect)];
47     var gotkeys = [i for (i in got)];
48     if (gotkeys.length != expectkeys.length)
49         throw new Error("objects have different property counts");
50     for (var i in expectkeys) {
51         assert_objects_equal(got[i], expect[i]);
52     }
53     return true;
57 function walnut_results () {
58     this.run = 0;
59     this.failed = 0;
62 function walnut_run (suite) {
63     var results = new walnut_results();
64     if (suite.suite_setup)
65         suite.suite_setup();
66     for (var k in suite) {
67         if (k.substr(0,5) == 'test_') {
68             if (suite.setup)
69                 suite.setup();
70             results.run++;
71             dump(k+'..');
72             try {
73                 suite[k]();
74                 dumpln('ok');
75             } catch (e) {
76                 results.failed++;
77                 dumpln('failed');
78                 dump_error(e);
79             }
80             if (suite.teardown)
81                 suite.teardown();
82         }
83     }
84     if (suite.suite_teardown)
85         suite.suite_teardown();
86     dumpln(results.run+" run, "+results.failed+" failed");
87     return results;