|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
|
4 <head> |
|
5 <title>script.aculo.us Unit test file</title> |
|
6 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
|
7 <script src="../../lib/prototype.js" type="text/javascript"></script> |
|
8 <script src="../../src/scriptaculous.js" type="text/javascript"></script> |
|
9 <script src="../../src/unittest.js" type="text/javascript"></script> |
|
10 <link rel="stylesheet" href="../test.css" type="text/css" /> |
|
11 </head> |
|
12 <body> |
|
13 <h1>script.aculo.us Unit test file</h1> |
|
14 |
|
15 <!-- Log output --> |
|
16 <div id="testlog"> </div> |
|
17 |
|
18 <div id="d">initial</div> |
|
19 |
|
20 <!-- Tests follow --> |
|
21 <script type="text/javascript" language="javascript" charset="utf-8"> |
|
22 // <![CDATA[ |
|
23 var moo = 0; |
|
24 |
|
25 var assertMethods = []; |
|
26 for(method in Test.Unit.Assertions.prototype) { |
|
27 if(/^assert/.test(method)) assertMethods.push(method); |
|
28 } |
|
29 |
|
30 var testObj = { |
|
31 isNice: function(){ |
|
32 return true; |
|
33 }, |
|
34 isBroken: function(){ |
|
35 return false; |
|
36 } |
|
37 } |
|
38 |
|
39 Test.context("BDD-style testing",{ |
|
40 |
|
41 setup: function() { |
|
42 $('d').update('setup!'); |
|
43 moo++; |
|
44 }, |
|
45 |
|
46 teardown: function() { |
|
47 moo--; |
|
48 }, |
|
49 |
|
50 'should run setup before each specification': function(){ |
|
51 assert($('d').innerHTML == 'setup!'); |
|
52 assert(moo == 1); |
|
53 }, |
|
54 |
|
55 'should run teardown after each specification': function(){ |
|
56 assert(moo == 1); |
|
57 }, |
|
58 |
|
59 'should provide extensions to tie in isSomething and respondsTo object methods': function(){ |
|
60 Object.extend(testObj, Test.BDDMethods); |
|
61 |
|
62 testObj.shouldBe('nice'); |
|
63 testObj.shouldNotBe('broken'); |
|
64 |
|
65 testObj.shouldRespondTo('isNice'); |
|
66 testObj.shouldRespondTo('isBroken'); |
|
67 }, |
|
68 |
|
69 'should automatically add extensions to strings': function(){ |
|
70 'a'.shouldEqual('a'); |
|
71 'a'.shouldNotEqual('b'); |
|
72 'a'.shouldNotBeNull(); |
|
73 'a'.shouldBeA(String); |
|
74 |
|
75 var aString = 'boo!'; |
|
76 aString.shouldEqual('boo!'); |
|
77 aString.shouldBeA(String); |
|
78 aString.shouldNotBeA(Number); |
|
79 }, |
|
80 |
|
81 'should automatically add extensions to numbers': function(){ |
|
82 var n = 123; |
|
83 n.shouldEqual(123); |
|
84 n.shouldNotEqual(4); |
|
85 |
|
86 n.shouldBeA(Number); |
|
87 n.shouldNotBeA(Test); |
|
88 }, |
|
89 |
|
90 'should automatically add extensions to arrays': function(){ |
|
91 ['a'].shouldNotBeA(String); |
|
92 [1,2,3].shouldBeAn(Array); |
|
93 [1,2,3].shouldEqualEnum([1,2,3]); |
|
94 }, |
|
95 |
|
96 'should support the eval() method': function(){ |
|
97 eval('2*2').shouldEqual(4); |
|
98 }, |
|
99 |
|
100 'should support equality assertion': function(){ |
|
101 assertEqual(1, 1); |
|
102 assertEqual('a', 'a'); |
|
103 assertEqual(1, '1'); |
|
104 |
|
105 var x = 1; |
|
106 var y = 1; |
|
107 assertEqual(1, x) |
|
108 assertEqual(x, y); |
|
109 }, |
|
110 |
|
111 'should provide all assertions': function(){ |
|
112 assertMethods.each(function(m){ |
|
113 assert(typeof this[m] == 'function'); |
|
114 }.bind(this)); |
|
115 }, |
|
116 |
|
117 'should support deferred execution': function(){ |
|
118 wait(10,function(){ |
|
119 'a'.shouldEqual('a'); |
|
120 }); |
|
121 |
|
122 wait(10,function(){ |
|
123 'a'.shouldEqual('a'); |
|
124 wait(10,function(){ |
|
125 'a'.shouldEqual('a'); |
|
126 wait(10,function(){ |
|
127 'a'.shouldEqual('a'); |
|
128 }); |
|
129 }); |
|
130 }); |
|
131 } |
|
132 |
|
133 }); |
|
134 |
|
135 // ]]> |
|
136 </script> |
|
137 </body> |
|
138 </html> |