From 29a0e1f51964d5dd1e59904a76e060ec7ec619c4 Mon Sep 17 00:00:00 2001 From: pivotal Date: Mon, 1 Dec 2008 15:59:41 -0800 Subject: [PATCH] dwf/rva: more async refactoring; results now stored on a per-spec basis; --- jasmine.iws | 34 ++++++++-------- lib/jasmine.js | 33 ++++++---------- test/bootstrap.js | 99 ++++++++++++++++++++++------------------------- 3 files changed, 75 insertions(+), 91 deletions(-) diff --git a/jasmine.iws b/jasmine.iws index 8006b47..8ca22d3 100644 --- a/jasmine.iws +++ b/jasmine.iws @@ -92,7 +92,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -515,6 +515,20 @@ + + + + + + + + + + + + + + @@ -525,23 +539,9 @@ - - - - - - - - - - - - - - - + diff --git a/lib/jasmine.js b/lib/jasmine.js index 6ebe565..841df5e 100755 --- a/lib/jasmine.js +++ b/lib/jasmine.js @@ -25,14 +25,15 @@ if (typeof Function.method !== 'function') { /* * Matchers methods; add your own with Matchers.method() */ -Matchers = function (actual) { +Matchers = function (actual, results) { this.actual = actual; this.passing_message = 'Passed.' + this.results = results || []; } Matchers.method('report', function (result, failing_message) { - Jasmine.results.push({ + this.results.push({ passed: result, message: result ? this.passing_message : failing_message }); @@ -51,27 +52,9 @@ Matchers.method('should_not_equal', function (expected) { 'Expected ' + expected + ' to not equal ' + this.actual + ', but it does.'); }); -/* - * expects_hat helper method that allows for chaining Matcher - */ -var expects_that = function (actual) { - return new Matchers(actual); -} - /* * Jasmine spec constructor */ -//var it = function (description, func) { -// var that = { -// description: description, -// func: func, -// done: false, -// execute: function() { -// that.func.apply(that); -// } -// } -// return that; -//} var queuedFunction = function(func, timeout, spec) { var that = { @@ -82,11 +65,11 @@ var queuedFunction = function(func, timeout, spec) { execute: function () { if (timeout > 0) { setTimeout(function () { - that.func(); + that.func.apply(spec); that.next(); }, timeout); } else { - that.func(); + that.func.apply(spec); that.next(); } } @@ -94,12 +77,18 @@ var queuedFunction = function(func, timeout, spec) { return that; } + var it = function (description) { var that = { description: description, queue: [], currentTimeout: 0, done: false, + results: [], + + expects_that: function (actual) { + return new Matchers(actual, that.results); + }, waits: function (timeout) { that.currentTimeout = timeout; diff --git a/test/bootstrap.js b/test/bootstrap.js index 242dd20..9a5de2f 100755 --- a/test/bootstrap.js +++ b/test/bootstrap.js @@ -42,126 +42,123 @@ var reporter = function () { }(); var testMatchersComparisons = function () { - Jasmine = jasmine_init(); - reporter.test(expects_that(true).should_equal(true), + var expected = new Matchers(true); + reporter.test(expected.should_equal(true), 'expects_that(true).should_equal(true) returned false'); - reporter.test(!(expects_that(false).should_equal(true)), + expected = new Matchers(false); + reporter.test(!(expected.should_equal(true)), 'expects_that(true).should_equal(true) returned true'); - reporter.test(expects_that(true).should_not_equal(false), + expected = new Matchers(true); + reporter.test(expected.should_not_equal(false), 'expects_that(true).should_not_equal(false) retruned false'); - reporter.test(!(expects_that(true).should_not_equal(true)), + expected = new Matchers(true); + reporter.test(!(expected.should_not_equal(true)), 'expects_that(true).should_not_equal(false) retruned true'); } var testMatchersReporting = function () { - Jasmine = jasmine_init(); - expects_that(true).should_equal(true); - expects_that(false).should_equal(true); + var results = []; + var expected = new Matchers(true, results); + expected.should_equal(true); + expected.should_equal(false); - reporter.test((Jasmine.results.length == 2), - "Jasmine results array doesn't have 2 results"); + reporter.test((results.length == 2), + "Results array doesn't have 2 results"); - reporter.test((Jasmine.results[0].passed == true), + reporter.test((results[0].passed == true), "First spec didn't pass"); - reporter.test((Jasmine.results[1].passed == false), + reporter.test((results[1].passed == false), "Second spec did pass"); - Jasmine = jasmine_init(); + results = []; + var expected = new Matchers(false, results); + expected.should_equal(true); - expects_that(false).should_equal(true); - - reporter.test((Jasmine.results[0].message == 'Expected true but got false.'), + reporter.test((results[0].message == 'Expected true but got false.'), "Failed expectation didn't test the failure message"); - Jasmine = jasmine_init(); + results = []; + var expected = new Matchers(true, results); + expected.should_equal(true); - expects_that(true).should_equal(true); - - reporter.test((Jasmine.results[0].message == 'Passed.'), + reporter.test((results[0].message == 'Passed.'), "Passing expectation didn't test the passing message"); } var testSpecs = function () { - Jasmine = jasmine_init(); var spec = it('new spec'); reporter.test((spec.description == 'new spec'), "Spec did not have a description"); - Jasmine = jasmine_init(); var another_spec = it('spec with an expectation').runs(function () { var foo = 'bar'; - expects_that(foo).should_equal('bar'); + this.expects_that(foo).should_equal('bar'); }); another_spec.execute(); another_spec.done = true; - reporter.test((Jasmine.results.length == 1), + reporter.test((another_spec.results.length == 1), "Results aren't there after a spec was executed"); - reporter.test((Jasmine.results[0].passed == true), + reporter.test((another_spec.results[0].passed == true), "Results has a result, but it's true"); - Jasmine = jasmine_init(); var yet_another_spec = it('spec with failing expectation').runs(function () { var foo = 'bar'; - expects_that(foo).should_equal('baz'); + this.expects_that(foo).should_equal('baz'); }); yet_another_spec.execute(); - another_spec.done = true; + yet_another_spec.done = true; - reporter.test((Jasmine.results[0].passed == false), + reporter.test((yet_another_spec.results[0].passed == false), "Expectation that failed, passed"); - Jasmine = jasmine_init(); var yet_yet_another_spec = it('spec with multiple assertions').runs( function () { var foo = 'bar'; var baz = 'quux'; - expects_that(foo).should_equal('bar'); - expects_that(baz).should_equal('quux'); + this.expects_that(foo).should_equal('bar'); + this.expects_that(baz).should_equal('quux'); }); yet_yet_another_spec.execute(); - another_spec.done = true; + yet_yet_another_spec.done = true; - reporter.test((Jasmine.results.length == 2), + reporter.test((yet_yet_another_spec.results.length == 2), "Spec doesn't support multiple expectations"); } var testAsyncSpecs = function () { - Jasmine = jasmine_init(); var foo = 0; var a_spec = it('simple queue test'). runs(function () { foo++; }).then(function() { - expects_that(foo).should_equal(1) + this.expects_that(foo).should_equal(1) }); reporter.test(a_spec.queue.length === 2, 'Spec queue length is not 2'); - Jasmine = jasmine_init(); foo = 0; a_spec = it('spec w/ queued statments'). runs(function () { foo++; }).then(function() { - expects_that(foo).should_equal(1); + this.expects_that(foo).should_equal(1); }); a_spec.execute(); - reporter.test((Jasmine.results.length === 1), + reporter.test((a_spec.results.length === 1), 'No call to waits(): Spec queue did not run all functions'); - reporter.test((Jasmine.results[0].passed === true), + reporter.test((a_spec.results[0].passed === true), 'No call to waits(): Queued expectation failed'); - Jasmine = jasmine_init(); foo = 0; a_spec = it('spec w/ queued statments'). runs(function () { @@ -170,20 +167,19 @@ var testAsyncSpecs = function () { }, 500); }).waits(1000). then(function() { - expects_that(foo).should_equal(1); + this.expects_that(foo).should_equal(1); }); a_spec.execute(); setTimeout(function(){ - reporter.test((Jasmine.results.length === 1), + reporter.test((a_spec.results.length === 1), 'Calling waits(): Spec queue did not run all functions'); - reporter.test((Jasmine.results[0].passed === true), + reporter.test((a_spec.results[0].passed === true), 'Calling waits(): Queued expectation failed'); }, 1250); setTimeout(function() { - Jasmine = jasmine_init(); var bar = 0; var another_spec = it('spec w/ queued statments'). runs(function () { @@ -199,22 +195,21 @@ var testAsyncSpecs = function () { }). waits(1500). then(function() { - expects_that(bar).should_equal(2); + this.expects_that(bar).should_equal(2); }); another_spec.execute(); setTimeout(function(){ reporter.test((another_spec.queue.length === 3), 'Calling 2 waits(): Spec queue was less than expected length'); - reporter.test((Jasmine.results.length === 1), + reporter.test((another_spec.results.length === 1), 'Calling 2 waits(): Spec queue did not run all functions'); - reporter.test((Jasmine.results[0].passed === true), + reporter.test((another_spec.results[0].passed === true), 'Calling 2 waits(): Queued expectation failed'); }, 2500); }, 1500); setTimeout(function() { - Jasmine = jasmine_init(); var baz = 0; var yet_another_spec = it('spec w/ async fail'). runs(function () { @@ -224,16 +219,16 @@ var testAsyncSpecs = function () { }). waits(100). then(function() { - expects_that(baz).should_equal(1); + this.expects_that(baz).should_equal(1); }); yet_another_spec.execute(); setTimeout(function(){ reporter.test((yet_another_spec.queue.length === 2), 'Calling 2 waits(): Spec queue was less than expected length'); - reporter.test((Jasmine.results.length === 1), + reporter.test((yet_another_spec.results.length === 1), 'Calling 2 waits(): Spec queue did not run all functions'); - reporter.test((Jasmine.results[0].passed === false), + reporter.test((yet_another_spec.results[0].passed === false), 'Calling 2 waits(): Queued expectation failed'); }, 2500); }, 5000);