📄 unittest.js
字号:
try {$A(expected).length == $A(actual).length && expected.zip(actual).all(function (pair) {return pair[0] == pair[1];}) ? this.pass() : this.fail(message + ": expected " + Test.Unit.inspect(expected) + ", actual " + Test.Unit.inspect(actual));}catch (e) {this.error(e);}}, assertNotEqual:function (expected, actual) {var message = arguments[2] || "assertNotEqual";try {(expected != actual) ? this.pass() : this.fail(message + ": got \"" + Test.Unit.inspect(actual) + "\"");}catch (e) {this.error(e);}}, assertIdentical:function (expected, actual) {var message = arguments[2] || "assertIdentical";try {(expected === actual) ? this.pass() : this.fail(message + ": expected \"" + Test.Unit.inspect(expected) + "\", actual \"" + Test.Unit.inspect(actual) + "\"");}catch (e) {this.error(e);}}, assertNotIdentical:function (expected, actual) {var message = arguments[2] || "assertNotIdentical";try {!(expected === actual) ? this.pass() : this.fail(message + ": expected \"" + Test.Unit.inspect(expected) + "\", actual \"" + Test.Unit.inspect(actual) + "\"");}catch (e) {this.error(e);}}, assertNull:function (obj) {var message = arguments[1] || "assertNull";try {(obj == null) ? this.pass() : this.fail(message + ": got \"" + Test.Unit.inspect(obj) + "\"");}catch (e) {this.error(e);}}, assertMatch:function (expected, actual) {var message = arguments[2] || "assertMatch";var regex = new RegExp(expected);try {(regex.exec(actual)) ? this.pass() : this.fail(message + " : regex: \"" + Test.Unit.inspect(expected) + " did not match: " + Test.Unit.inspect(actual) + "\"");}catch (e) {this.error(e);}}, assertHidden:function (element) {var message = arguments[1] || "assertHidden";this.assertEqual("none", element.style.display, message);}, assertNotNull:function (object) {var message = arguments[1] || "assertNotNull";this.assert(object != null, message);}, assertType:function (expected, actual) {var message = arguments[2] || "assertType";try {(actual.constructor == expected) ? this.pass() : this.fail(message + ": expected \"" + Test.Unit.inspect(expected) + "\", actual \"" + (actual.constructor) + "\"");}catch (e) {this.error(e);}}, assertNotOfType:function (expected, actual) {var message = arguments[2] || "assertNotOfType";try {(actual.constructor != expected) ? this.pass() : this.fail(message + ": expected \"" + Test.Unit.inspect(expected) + "\", actual \"" + (actual.constructor) + "\"");}catch (e) {this.error(e);}}, assertInstanceOf:function (expected, actual) {var message = arguments[2] || "assertInstanceOf";try {(actual instanceof expected) ? this.pass() : this.fail(message + ": object was not an instance of the expected type");}catch (e) {this.error(e);}}, assertNotInstanceOf:function (expected, actual) {var message = arguments[2] || "assertNotInstanceOf";try {!(actual instanceof expected) ? this.pass() : this.fail(message + ": object was an instance of the not expected type");}catch (e) {this.error(e);}}, assertRespondsTo:function (method, obj) {var message = arguments[2] || "assertRespondsTo";try {(obj[method] && typeof obj[method] == "function") ? this.pass() : this.fail(message + ": object doesn't respond to [" + method + "]");}catch (e) {this.error(e);}}, assertReturnsTrue:function (method, obj) {var message = arguments[2] || "assertReturnsTrue";try {var m = obj[method];if (!m) {m = obj["is" + method.charAt(0).toUpperCase() + method.slice(1)];}m() ? this.pass() : this.fail(message + ": method returned false");}catch (e) {this.error(e);}}, assertReturnsFalse:function (method, obj) {var message = arguments[2] || "assertReturnsFalse";try {var m = obj[method];if (!m) {m = obj["is" + method.charAt(0).toUpperCase() + method.slice(1)];}!m() ? this.pass() : this.fail(message + ": method returned true");}catch (e) {this.error(e);}}, assertRaise:function (exceptionName, method) {var message = arguments[2] || "assertRaise";try {method();this.fail(message + ": exception expected but none was raised");}catch (e) {((exceptionName == null) || (e.name == exceptionName)) ? this.pass() : this.error(e);}}, assertElementsMatch:function () {var expressions = $A(arguments), elements = $A(expressions.shift());if (elements.length != expressions.length) {this.fail("assertElementsMatch: size mismatch: " + elements.length + " elements, " + expressions.length + " expressions");return false;}elements.zip(expressions).all(function (pair, index) {var element = $(pair.first()), expression = pair.last();if (element.match(expression)) {return true;}this.fail("assertElementsMatch: (in index " + index + ") expected " + expression.inspect() + " but got " + element.inspect());}.bind(this)) && this.pass();}, assertElementMatches:function (element, expression) {this.assertElementsMatch([element], expression);}, benchmark:function (operation, iterations) {var startAt = new Date();(iterations || 1).times(operation);var timeTaken = ((new Date()) - startAt);this.info((arguments[2] || "Operation") + " finished " + iterations + " iterations in " + (timeTaken / 1000) + "s");return timeTaken;}, _isVisible:function (element) {element = $(element);if (!element.parentNode) {return true;}this.assertNotNull(element);if (element.style && Element.getStyle(element, "display") == "none") {return false;}return this._isVisible(element.parentNode);}, assertNotVisible:function (element) {this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));}, assertVisible:function (element) {this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));}, benchmark:function (operation, iterations) {var startAt = new Date();(iterations || 1).times(operation);var timeTaken = ((new Date()) - startAt);this.info((arguments[2] || "Operation") + " finished " + iterations + " iterations in " + (timeTaken / 1000) + "s");return timeTaken;}};Test.Unit.Testcase = Class.create();Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {initialize:function (name, test, setup, teardown) {Test.Unit.Assertions.prototype.initialize.bind(this)();this.name = name;if (typeof test == "string") {test = test.gsub(/(\.should[^\(]+\()/, "#{0}this,");test = test.gsub(/(\.should[^\(]+)\(this,\)/, "#{1}(this)");this.test = function () {eval("with(this){" + test + "}");};} else {this.test = test || function () {};}this.setup = setup || function () {};this.teardown = teardown || function () {};this.isWaiting = false;this.timeToWait = 1000;}, wait:function (time, nextPart) {this.isWaiting = true;this.test = nextPart;this.timeToWait = time;}, run:function () {try {try {if (!this.isWaiting) {this.setup.bind(this)();}this.isWaiting = false;this.test.bind(this)();}finally {if (!this.isWaiting) {this.teardown.bind(this)();}}}catch (e) {this.error(e);}}});Test.setupBDDExtensionMethods = function () {var METHODMAP = {shouldEqual:"assertEqual", shouldNotEqual:"assertNotEqual", shouldEqualEnum:"assertEnumEqual", shouldBeA:"assertType", shouldNotBeA:"assertNotOfType", shouldBeAn:"assertType", shouldNotBeAn:"assertNotOfType", shouldBeNull:"assertNull", shouldNotBeNull:"assertNotNull", shouldBe:"assertReturnsTrue", shouldNotBe:"assertReturnsFalse", shouldRespondTo:"assertRespondsTo"};Test.BDDMethods = {};for (m in METHODMAP) {Test.BDDMethods[m] = eval("function(){" + "var args = $A(arguments);" + "var scope = args.shift();" + "scope." + METHODMAP[m] + ".apply(scope,(args || []).concat([this])); }");}[Array.prototype, String.prototype, Number.prototype].each(function (p) {Object.extend(p, Test.BDDMethods);});};Test.context = function (name, spec, log) {Test.setupBDDExtensionMethods();var compiledSpec = {};var titles = {};for (specName in spec) {switch (specName) {case "setup":case "teardown":compiledSpec[specName] = spec[specName];break;default:var testName = "test" + specName.gsub(/\s+/, "-").camelize();var body = spec[specName].toString().split("\n").slice(1);if (/^\{/.test(body[0])) {body = body.slice(1);}body.pop();body = body.map(function (statement) {return statement.strip();});compiledSpec[testName] = body.join("\n");titles[testName] = specName;}}new Test.Unit.Runner(compiledSpec, {titles:titles, testLog:log || "testlog", context:name});};});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -