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);