testing/mochitest/tests/MochiKit-1.4.2/MochiKit/Test.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/testing/mochitest/tests/MochiKit-1.4.2/MochiKit/Test.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,162 @@
     1.4 +/***
     1.5 +
     1.6 +MochiKit.Test 1.4.2
     1.7 +
     1.8 +See <http://mochikit.com/> for documentation, downloads, license, etc.
     1.9 +
    1.10 +(c) 2005 Bob Ippolito.  All rights Reserved.
    1.11 +
    1.12 +***/
    1.13 +
    1.14 +MochiKit.Base._deps('Test', ['Base']);
    1.15 +
    1.16 +MochiKit.Test.NAME = "MochiKit.Test";
    1.17 +MochiKit.Test.VERSION = "1.4.2";
    1.18 +MochiKit.Test.__repr__ = function () {
    1.19 +    return "[" + this.NAME + " " + this.VERSION + "]";
    1.20 +};
    1.21 +
    1.22 +MochiKit.Test.toString = function () {
    1.23 +    return this.__repr__();
    1.24 +};
    1.25 +
    1.26 +
    1.27 +MochiKit.Test.EXPORT = ["runTests"];
    1.28 +MochiKit.Test.EXPORT_OK = [];
    1.29 +
    1.30 +MochiKit.Test.runTests = function (obj) {
    1.31 +    if (typeof(obj) == "string") {
    1.32 +        obj = JSAN.use(obj);
    1.33 +    }
    1.34 +    var suite = new MochiKit.Test.Suite();
    1.35 +    suite.run(obj);
    1.36 +};
    1.37 +
    1.38 +MochiKit.Test.Suite = function () {
    1.39 +    this.testIndex = 0;
    1.40 +    MochiKit.Base.bindMethods(this);
    1.41 +};
    1.42 +
    1.43 +MochiKit.Test.Suite.prototype = {
    1.44 +    run: function (obj) {
    1.45 +        try {
    1.46 +            obj(this);
    1.47 +        } catch (e) {
    1.48 +            this.traceback(e);
    1.49 +        }
    1.50 +    },
    1.51 +    traceback: function (e) {
    1.52 +        var items = MochiKit.Iter.sorted(MochiKit.Base.items(e));
    1.53 +        print("not ok " + this.testIndex + " - Error thrown");
    1.54 +        for (var i = 0; i < items.length; i++) {
    1.55 +            var kv = items[i];
    1.56 +            if (kv[0] == "stack") {
    1.57 +                kv[1] = kv[1].split(/\n/)[0];
    1.58 +            }
    1.59 +            this.print("# " + kv.join(": "));
    1.60 +        }
    1.61 +    },
    1.62 +    print: function (s) {
    1.63 +        print(s);
    1.64 +    },
    1.65 +    is: function (got, expected, /* optional */message) {
    1.66 +        var res = 1;
    1.67 +        var msg = null;
    1.68 +        try {
    1.69 +            res = MochiKit.Base.compare(got, expected);
    1.70 +        } catch (e) {
    1.71 +            msg = "Can not compare " + typeof(got) + ":" + typeof(expected);
    1.72 +        }
    1.73 +        if (res) {
    1.74 +            msg = "Expected value did not compare equal";
    1.75 +        }
    1.76 +        if (!res) {
    1.77 +            return this.testResult(true, message);
    1.78 +        }
    1.79 +        return this.testResult(false, message,
    1.80 +            [[msg], ["got:", got], ["expected:", expected]]);
    1.81 +    },
    1.82 +
    1.83 +    testResult: function (pass, msg, failures) {
    1.84 +        this.testIndex += 1;
    1.85 +        if (pass) {
    1.86 +            this.print("ok " + this.testIndex + " - " + msg);
    1.87 +            return;
    1.88 +        }
    1.89 +        this.print("not ok " + this.testIndex + " - " + msg);
    1.90 +        if (failures) {
    1.91 +            for (var i = 0; i < failures.length; i++) {
    1.92 +                this.print("# " + failures[i].join(" "));
    1.93 +            }
    1.94 +        }
    1.95 +    },
    1.96 +
    1.97 +    isDeeply: function (got, expected, /* optional */message) {
    1.98 +        var m = MochiKit.Base;
    1.99 +        var res = 1;
   1.100 +        try {
   1.101 +            res = m.compare(got, expected);
   1.102 +        } catch (e) {
   1.103 +            // pass
   1.104 +        }
   1.105 +        if (res === 0) {
   1.106 +            return this.ok(true, message);
   1.107 +        }
   1.108 +        var gk = m.keys(got);
   1.109 +        var ek = m.keys(expected);
   1.110 +        gk.sort();
   1.111 +        ek.sort();
   1.112 +        if (m.compare(gk, ek)) {
   1.113 +            // differing keys
   1.114 +            var cmp = {};
   1.115 +            var i;
   1.116 +            for (i = 0; i < gk.length; i++) {
   1.117 +                cmp[gk[i]] = "got";
   1.118 +            }
   1.119 +            for (i = 0; i < ek.length; i++) {
   1.120 +                if (ek[i] in cmp) {
   1.121 +                    delete cmp[ek[i]];
   1.122 +                } else {
   1.123 +                    cmp[ek[i]] = "expected";
   1.124 +                }
   1.125 +            }
   1.126 +            var diffkeys = m.keys(cmp);
   1.127 +            diffkeys.sort();
   1.128 +            var gotkeys = [];
   1.129 +            var expkeys = [];
   1.130 +            while (diffkeys.length) {
   1.131 +                var k = diffkeys.shift();
   1.132 +                if (k in Object.prototype) {
   1.133 +                    continue;
   1.134 +                }
   1.135 +                (cmp[k] == "got" ? gotkeys : expkeys).push(k);
   1.136 +            }
   1.137 +
   1.138 +
   1.139 +        }
   1.140 +
   1.141 +        return this.testResult((!res), msg,
   1.142 +            (msg ? [["got:", got], ["expected:", expected]] : undefined)
   1.143 +        );
   1.144 +    },
   1.145 +
   1.146 +    ok: function (res, message) {
   1.147 +        return this.testResult(res, message);
   1.148 +    }
   1.149 +};
   1.150 +
   1.151 +MochiKit.Test.__new__ = function () {
   1.152 +    var m = MochiKit.Base;
   1.153 +
   1.154 +    this.EXPORT_TAGS = {
   1.155 +        ":common": this.EXPORT,
   1.156 +        ":all": m.concat(this.EXPORT, this.EXPORT_OK)
   1.157 +    };
   1.158 +
   1.159 +    m.nameFunctions(this);
   1.160 +
   1.161 +};
   1.162 +
   1.163 +MochiKit.Test.__new__();
   1.164 +
   1.165 +MochiKit.Base._exportSymbols(this, MochiKit.Test);

mercurial