From 0508b89166d37959f10679a21add0b73159f621e Mon Sep 17 00:00:00 2001 From: Vivin Paliath Date: Thu, 16 Aug 2012 13:50:38 -0700 Subject: [PATCH] issue #307 Approach #3: Public "enum" used for assertion type. Removed some of the tests because it seemed like they were more trouble than they were worth. It does have a few tests that checks for the assertion type. --- qunit/qunit.js | 44 +++++++++++++++++++++++++++++++------------- test/logs.js | 31 ++++++++++++++++++++----------- 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/qunit/qunit.js b/qunit/qunit.js index 6c6c4d21d..8619b3814 100644 --- a/qunit/qunit.js +++ b/qunit/qunit.js @@ -162,11 +162,11 @@ Test.prototype = { finish: function() { config.current = this; if ( config.requireExpects && this.expected == null ) { - QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack ); + QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack, null, QUnit.AssertionType.EXPECT ); } else if ( this.expected != null && this.expected != this.assertions.length ) { - QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack ); + QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack, null, QUnit.AssertionType.EXPECT ); } else if ( this.expected == null && !this.assertions.length ) { - QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack ); + QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack, null, QUnit.AssertionType.EXPECT ); } var assertion, a, b, i, li, ol, @@ -399,6 +399,21 @@ QUnit = { } }; +// Assertion types +QUnit.AssertionType = { + OK: "ok", + EQUAL: "equal", + NOT_EQUAL: "notEqual", + DEEP_EQUAL: "deepEqual", + NOT_DEEP_EQUAL: "notDeepEqual", + STRICT_EQUAL: "strictEqual", + NOT_STRICT_EQUAL: "notStrictEqual", + THROWS: "throws", + EXPECT: "expect" +}; + +extend( QUnit, QUnit.AssertionType ); + // Asssert helpers // All of these must call either QUnit.push() or manually do: // - runLoggingCallbacks( "log", .. ); @@ -418,6 +433,7 @@ QUnit.assert = { var source, details = { + assertion: QUnit.AssertionType.OK, result: result, message: msg }; @@ -447,7 +463,7 @@ QUnit.assert = { * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); */ equal: function( actual, expected, message ) { - QUnit.push( expected == actual, actual, expected, message ); + QUnit.push( expected == actual, actual, expected, message, QUnit.AssertionType.EQUAL ); }, /** @@ -455,7 +471,7 @@ QUnit.assert = { * @function */ notEqual: function( actual, expected, message ) { - QUnit.push( expected != actual, actual, expected, message ); + QUnit.push( expected != actual, actual, expected, message, QUnit.AssertionType.NOT_EQUAL ); }, /** @@ -463,7 +479,7 @@ QUnit.assert = { * @function */ deepEqual: function( actual, expected, message ) { - QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message, QUnit.AssertionType.DEEP_EQUAL ); }, /** @@ -471,7 +487,7 @@ QUnit.assert = { * @function */ notDeepEqual: function( actual, expected, message ) { - QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message, QUnit.AssertionType.NOT_DEEP_EQUAL ); }, /** @@ -479,7 +495,7 @@ QUnit.assert = { * @function */ strictEqual: function( actual, expected, message ) { - QUnit.push( expected === actual, actual, expected, message ); + QUnit.push( expected === actual, actual, expected, message, QUnit.AssertionType.STRICT_EQUAL ); }, /** @@ -487,7 +503,7 @@ QUnit.assert = { * @function */ notStrictEqual: function( actual, expected, message ) { - QUnit.push( expected !== actual, actual, expected, message ); + QUnit.push( expected !== actual, actual, expected, message, QUnit.AssertionType.NOT_STRICT_EQUAL ); }, throws: function( block, expected, message ) { @@ -523,9 +539,9 @@ QUnit.assert = { ok = true; } - QUnit.push( ok, actual, null, message ); + QUnit.push( ok, actual, null, message, QUnit.AssertionType.THROWS ); } else { - QUnit.pushFailure( message, null, 'No exception was thrown.' ); + QUnit.pushFailure( message, null, 'No exception was thrown.', QUnit.AssertionType.THROWS ); } } }; @@ -773,13 +789,14 @@ extend( QUnit, { return undefined; }, - push: function( result, actual, expected, message ) { + push: function( result, actual, expected, message, assertion ) { if ( !config.current ) { throw new Error( "assertion outside test context, was " + sourceFromStacktrace() ); } var output, source, details = { + assertion: assertion, result: result, message: message, actual: actual, @@ -818,13 +835,14 @@ extend( QUnit, { }); }, - pushFailure: function( message, source, actual ) { + pushFailure: function( message, source, actual, assertion ) { if ( !config.current ) { throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); } var output, details = { + assertion: assertion, result: false, message: message }; diff --git a/test/logs.js b/test/logs.js index 1efd05851..fc2dbc31c 100644 --- a/test/logs.js +++ b/test/logs.js @@ -51,7 +51,7 @@ for (var i = 0; i < logs.length; i++) { module("logs1"); -test("test1", 13, function() { +test("test1", 15, function() { equal(begin, 1); equal(moduleStart, 1); equal(testStart, 1); @@ -62,14 +62,16 @@ test("test1", 13, function() { result: true, message: undefined, actual: 0, - expected: 0 + expected: 0, + assertion: QUnit.AssertionType.EQUAL }); equal("foo", "foo", "msg"); deepEqual(logContext, { result: true, message: "msg", actual: "foo", - expected: "foo" + expected: "foo", + assertion: QUnit.AssertionType.EQUAL }); strictEqual(testDoneContext, undefined); deepEqual(testContext, { @@ -81,7 +83,14 @@ test("test1", 13, function() { name: "logs1" }); - equal(log, 12); + ok(true, "message"); + deepEqual(logContext, { + result: true, + message: "message", + assertion: QUnit.AssertionType.OK + }); + + equal(log, 14); }); test("test2", 10, function() { equal(begin, 1); @@ -94,8 +103,8 @@ test("test2", 10, function() { module: "logs1", name: "test1", failed: 0, - passed: 13, - total: 13 + passed: 15, + total: 15 }); deepEqual(testContext, { module: "logs1", @@ -106,7 +115,7 @@ test("test2", 10, function() { name: "logs1" }); - equal(log, 22); + equal(log, 24); }); module("logs2"); @@ -125,14 +134,14 @@ test("test1", 9, function() { deepEqual(moduleDoneContext, { name: "logs1", failed: 0, - passed: 23, - total: 23 + passed: 25, + total: 25 }); deepEqual(moduleContext, { name: "logs2" }); - equal(log, 31); + equal(log, 33); }); test("test2", 8, function() { equal(begin, 1); @@ -149,7 +158,7 @@ test("test2", 8, function() { name: "logs2" }); - equal(log, 39); + equal(log, 41); }); var testAutorun = true;