diff options
Diffstat (limited to 'dom/tests/mochitest/ajax/scriptaculous/test/unit/bdd_test.html')
-rw-r--r-- | dom/tests/mochitest/ajax/scriptaculous/test/unit/bdd_test.html | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/dom/tests/mochitest/ajax/scriptaculous/test/unit/bdd_test.html b/dom/tests/mochitest/ajax/scriptaculous/test/unit/bdd_test.html new file mode 100644 index 0000000000..02cb10bff7 --- /dev/null +++ b/dom/tests/mochitest/ajax/scriptaculous/test/unit/bdd_test.html @@ -0,0 +1,138 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>script.aculo.us Unit test file</title> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <script src="../../lib/prototype.js" type="text/javascript"></script> + <script src="../../src/scriptaculous.js" type="text/javascript"></script> + <script src="../../src/unittest.js" type="text/javascript"></script> + <link rel="stylesheet" href="../test.css" type="text/css" /> +</head> +<body> +<h1>script.aculo.us Unit test file</h1> + +<!-- Log output --> +<div id="testlog"> </div> + +<div id="d">initial</div> + +<!-- Tests follow --> +<script type="text/javascript" language="javascript" charset="utf-8"> +// <![CDATA[ +var moo = 0; + +var assertMethods = []; +for(method in Test.Unit.Assertions.prototype) { + if(/^assert/.test(method)) assertMethods.push(method); +} + +var testObj = { + isNice: function(){ + return true; + }, + isBroken: function(){ + return false; + } +} + +Test.context("BDD-style testing",{ + + setup: function() { + $('d').update('setup!'); + moo++; + }, + + teardown: function() { + moo--; + }, + + 'should run setup before each specification': function(){ + assert($('d').innerHTML == 'setup!'); + assert(moo == 1); + }, + + 'should run teardown after each specification': function(){ + assert(moo == 1); + }, + + 'should provide extensions to tie in isSomething and respondsTo object methods': function(){ + Object.extend(testObj, Test.BDDMethods); + + testObj.shouldBe('nice'); + testObj.shouldNotBe('broken'); + + testObj.shouldRespondTo('isNice'); + testObj.shouldRespondTo('isBroken'); + }, + + 'should automatically add extensions to strings': function(){ + 'a'.shouldEqual('a'); + 'a'.shouldNotEqual('b'); + 'a'.shouldNotBeNull(); + 'a'.shouldBeA(String); + + var aString = 'boo!'; + aString.shouldEqual('boo!'); + aString.shouldBeA(String); + aString.shouldNotBeA(Number); + }, + + 'should automatically add extensions to numbers': function(){ + var n = 123; + n.shouldEqual(123); + n.shouldNotEqual(4); + + n.shouldBeA(Number); + n.shouldNotBeA(Test); + }, + + 'should automatically add extensions to arrays': function(){ + ['a'].shouldNotBeA(String); + [1,2,3].shouldBeAn(Array); + [1,2,3].shouldEqualEnum([1,2,3]); + }, + + 'should support the eval() method': function(){ + eval('2*2').shouldEqual(4); + }, + + 'should support equality assertion': function(){ + assertEqual(1, 1); + assertEqual('a', 'a'); + assertEqual(1, '1'); + + var x = 1; + var y = 1; + assertEqual(1, x) + assertEqual(x, y); + }, + + 'should provide all assertions': function(){ + assertMethods.each(function(m){ + assert(typeof this[m] == 'function'); + }.bind(this)); + }, + + 'should support deferred execution': function(){ + wait(10,function(){ + 'a'.shouldEqual('a'); + }); + + wait(10,function(){ + 'a'.shouldEqual('a'); + wait(10,function(){ + 'a'.shouldEqual('a'); + wait(10,function(){ + 'a'.shouldEqual('a'); + }); + }); + }); + } + +}); + +// ]]> +</script> +</body> +</html>
\ No newline at end of file |