Skip to content

Commit

Permalink
issue #307
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
vivin committed Aug 16, 2012
1 parent dfc27bb commit 0508b89
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 24 deletions.
44 changes: 31 additions & 13 deletions qunit/qunit.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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", .. );
Expand All @@ -418,6 +433,7 @@ QUnit.assert = {

var source,
details = {
assertion: QUnit.AssertionType.OK,
result: result,
message: msg
};
Expand Down Expand Up @@ -447,47 +463,47 @@ 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 );
},

/**
* @name notEqual
* @function
*/
notEqual: function( actual, expected, message ) {
QUnit.push( expected != actual, actual, expected, message );
QUnit.push( expected != actual, actual, expected, message, QUnit.AssertionType.NOT_EQUAL );
},

/**
* @name deepEqual
* @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 );
},

/**
* @name notDeepEqual
* @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 );
},

/**
* @name strictEqual
* @function
*/
strictEqual: function( actual, expected, message ) {
QUnit.push( expected === actual, actual, expected, message );
QUnit.push( expected === actual, actual, expected, message, QUnit.AssertionType.STRICT_EQUAL );
},

/**
* @name notStrictEqual
* @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 ) {
Expand Down Expand Up @@ -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 );
}
}
};
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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
};
Expand Down
31 changes: 20 additions & 11 deletions test/logs.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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, {
Expand All @@ -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);
Expand All @@ -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",
Expand All @@ -106,7 +115,7 @@ test("test2", 10, function() {
name: "logs1"
});

equal(log, 22);
equal(log, 24);
});

module("logs2");
Expand All @@ -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);
Expand All @@ -149,7 +158,7 @@ test("test2", 8, function() {
name: "logs2"
});

equal(log, 39);
equal(log, 41);
});

var testAutorun = true;
Expand Down

0 comments on commit 0508b89

Please sign in to comment.