headless-squirrel 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. data/README.rdoc +55 -0
  2. data/Rakefile +27 -0
  3. data/bin/jstest +10 -0
  4. data/lib/headless_squirrel.rb +2 -0
  5. data/lib/headless_squirrel/console.rb +24 -0
  6. data/lib/headless_squirrel/runner.rb +70 -0
  7. data/lib/headless_squirrel/test.rb +17 -0
  8. data/lib/headless_squirrel/test_case.rb +158 -0
  9. data/test/fixtures/a_unit_test.html +27 -0
  10. data/test/fixtures/a_unit_test.js +22 -0
  11. data/test/fixtures/syntax_error.html +27 -0
  12. data/test/fixtures/syntax_error.js +5 -0
  13. data/test/fixtures/type_error.html +27 -0
  14. data/test/fixtures/type_error.js +1 -0
  15. data/test/regression/prototype/unit/ajax_test.html +29 -0
  16. data/test/regression/prototype/unit/array_test.html +28 -0
  17. data/test/regression/prototype/unit/assets/prototype.js +4900 -0
  18. data/test/regression/prototype/unit/assets/unittest.css +50 -0
  19. data/test/regression/prototype/unit/assets/unittest.js +615 -0
  20. data/test/regression/prototype/unit/assets/unittest_transport.js +1 -0
  21. data/test/regression/prototype/unit/base_test.html +27 -0
  22. data/test/regression/prototype/unit/class_test.html +27 -0
  23. data/test/regression/prototype/unit/date_test.html +27 -0
  24. data/test/regression/prototype/unit/dom_test.html +304 -0
  25. data/test/regression/prototype/unit/element_mixins_test.html +30 -0
  26. data/test/regression/prototype/unit/enumerable_test.html +35 -0
  27. data/test/regression/prototype/unit/event_test.html +31 -0
  28. data/test/regression/prototype/unit/fixtures/ajax.html +2 -0
  29. data/test/regression/prototype/unit/fixtures/ajax.js +42 -0
  30. data/test/regression/prototype/unit/fixtures/array.html +1 -0
  31. data/test/regression/prototype/unit/fixtures/class.js +83 -0
  32. data/test/regression/prototype/unit/fixtures/content.html +1 -0
  33. data/test/regression/prototype/unit/fixtures/data.json +1 -0
  34. data/test/regression/prototype/unit/fixtures/dom.css +84 -0
  35. data/test/regression/prototype/unit/fixtures/dom.html +278 -0
  36. data/test/regression/prototype/unit/fixtures/dom.js +17 -0
  37. data/test/regression/prototype/unit/fixtures/element_mixins.html +4 -0
  38. data/test/regression/prototype/unit/fixtures/element_mixins.js +2 -0
  39. data/test/regression/prototype/unit/fixtures/empty.html +0 -0
  40. data/test/regression/prototype/unit/fixtures/empty.js +1 -0
  41. data/test/regression/prototype/unit/fixtures/enumerable.html +8 -0
  42. data/test/regression/prototype/unit/fixtures/enumerable.js +23 -0
  43. data/test/regression/prototype/unit/fixtures/event.html +4 -0
  44. data/test/regression/prototype/unit/fixtures/form.html +108 -0
  45. data/test/regression/prototype/unit/fixtures/function.js +13 -0
  46. data/test/regression/prototype/unit/fixtures/hash.js +25 -0
  47. data/test/regression/prototype/unit/fixtures/hello.js +1 -0
  48. data/test/regression/prototype/unit/fixtures/logo.gif +0 -0
  49. data/test/regression/prototype/unit/fixtures/object.html +6 -0
  50. data/test/regression/prototype/unit/fixtures/object.js +7 -0
  51. data/test/regression/prototype/unit/fixtures/position.html +9 -0
  52. data/test/regression/prototype/unit/fixtures/selector.html +71 -0
  53. data/test/regression/prototype/unit/fixtures/string.js +8 -0
  54. data/test/regression/prototype/unit/fixtures/unittest.html +18 -0
  55. data/test/regression/prototype/unit/form_test.html +135 -0
  56. data/test/regression/prototype/unit/function_test.html +27 -0
  57. data/test/regression/prototype/unit/hash_test.html +27 -0
  58. data/test/regression/prototype/unit/number_test.html +27 -0
  59. data/test/regression/prototype/unit/object_test.html +32 -0
  60. data/test/regression/prototype/unit/periodical_executer_test.html +27 -0
  61. data/test/regression/prototype/unit/position_test.html +36 -0
  62. data/test/regression/prototype/unit/prototype_test.html +27 -0
  63. data/test/regression/prototype/unit/range_test.html +27 -0
  64. data/test/regression/prototype/unit/regexp_test.html +27 -0
  65. data/test/regression/prototype/unit/selector_test.html +98 -0
  66. data/test/regression/prototype/unit/string_test.html +27 -0
  67. data/test/regression/prototype/unit/tests/ajax_test.js +379 -0
  68. data/test/regression/prototype/unit/tests/array_test.js +186 -0
  69. data/test/regression/prototype/unit/tests/base_test.js +43 -0
  70. data/test/regression/prototype/unit/tests/class_test.js +136 -0
  71. data/test/regression/prototype/unit/tests/date_test.js +5 -0
  72. data/test/regression/prototype/unit/tests/dom_test.js +1493 -0
  73. data/test/regression/prototype/unit/tests/element_mixins_test.js +32 -0
  74. data/test/regression/prototype/unit/tests/enumerable_test.js +271 -0
  75. data/test/regression/prototype/unit/tests/event_test.js +235 -0
  76. data/test/regression/prototype/unit/tests/form_test.js +382 -0
  77. data/test/regression/prototype/unit/tests/function_test.js +133 -0
  78. data/test/regression/prototype/unit/tests/hash_test.js +178 -0
  79. data/test/regression/prototype/unit/tests/number_test.js +44 -0
  80. data/test/regression/prototype/unit/tests/object_test.js +180 -0
  81. data/test/regression/prototype/unit/tests/periodical_executer_test.js +15 -0
  82. data/test/regression/prototype/unit/tests/position_test.js +44 -0
  83. data/test/regression/prototype/unit/tests/prototype_test.js +43 -0
  84. data/test/regression/prototype/unit/tests/range_test.js +58 -0
  85. data/test/regression/prototype/unit/tests/regexp_test.js +42 -0
  86. data/test/regression/prototype/unit/tests/selector_test.js +408 -0
  87. data/test/regression/prototype/unit/tests/string_test.js +548 -0
  88. data/test/regression/prototype/unit/tests/unittest_test.js +148 -0
  89. data/test/regression/prototype/unit/unittest_test.html +45 -0
  90. data/test/regression/prototype/upstream +1 -0
  91. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_ipce_alt_text.html +1 -0
  92. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_ipce_collection.js +1 -0
  93. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_result.html +1 -0
  94. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_result2.html +1 -0
  95. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_tagged.html +1 -0
  96. data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_text.html +1 -0
  97. data/test/regression/scriptaculous/unit/_ajax_updater_result.html +20 -0
  98. data/test/regression/scriptaculous/unit/_autocomplete_result.html +11 -0
  99. data/test/regression/scriptaculous/unit/_autocomplete_result_nobr.html +1 -0
  100. data/test/regression/scriptaculous/unit/ajax_autocompleter_test.html +243 -0
  101. data/test/regression/scriptaculous/unit/ajax_inplaceeditor_test.html +895 -0
  102. data/test/regression/scriptaculous/unit/assets/builder.js +134 -0
  103. data/test/regression/scriptaculous/unit/assets/controls.js +963 -0
  104. data/test/regression/scriptaculous/unit/assets/dragdrop.js +973 -0
  105. data/test/regression/scriptaculous/unit/assets/effects.js +1122 -0
  106. data/test/regression/scriptaculous/unit/assets/javascripttest.rb +203 -0
  107. data/test/regression/scriptaculous/unit/assets/prototype.js +4320 -0
  108. data/test/regression/scriptaculous/unit/assets/scriptaculous.js +66 -0
  109. data/test/regression/scriptaculous/unit/assets/slider.js +273 -0
  110. data/test/regression/scriptaculous/unit/assets/sound.js +57 -0
  111. data/test/regression/scriptaculous/unit/assets/unittest.js +566 -0
  112. data/test/regression/scriptaculous/unit/bdd_test.html +150 -0
  113. data/test/regression/scriptaculous/unit/builder_test.html +262 -0
  114. data/test/regression/scriptaculous/unit/dragdrop_test.html +131 -0
  115. data/test/regression/scriptaculous/unit/effects_test.html +547 -0
  116. data/test/regression/scriptaculous/unit/element_test.html +116 -0
  117. data/test/regression/scriptaculous/unit/icon.png +0 -0
  118. data/test/regression/scriptaculous/unit/index.html +70 -0
  119. data/test/regression/scriptaculous/unit/loading_test.html +41 -0
  120. data/test/regression/scriptaculous/unit/position_clone_test.html +312 -0
  121. data/test/regression/scriptaculous/unit/slider_test.html +437 -0
  122. data/test/regression/scriptaculous/unit/sortable_test.html +205 -0
  123. data/test/regression/scriptaculous/unit/string_test.html +71 -0
  124. data/test/regression/scriptaculous/unit/unittest_test.html +154 -0
  125. data/test/regression/scriptaculous/upstream +1 -0
  126. data/test/test_helper.rb +20 -0
  127. data/test/unit/runner_test.rb +165 -0
  128. data/test/unit/test_case_test.rb +207 -0
  129. data/test/unit/test_test.rb +24 -0
  130. metadata +209 -0
@@ -0,0 +1,27 @@
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>Unit test file | Function | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+ <script src="fixtures/function.js" type="text/javascript" charset="utf-8"></script>
16
+ <script src="tests/function_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Hash | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+ <script src="fixtures/hash.js" type="text/javascript" charset="utf-8"></script>
16
+ <script src="tests/hash_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Number | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/number_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,32 @@
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>Unit test file | Object | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+ <script src="fixtures/object.js" type="text/javascript" charset="utf-8"></script>
16
+ <script src="tests/object_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+ <div id="test"></div>
23
+ <ul id="list">
24
+ <li></li>
25
+ <li></li>
26
+ <li></li>
27
+ </ul>
28
+ </body>
29
+ </html>
30
+ <script type="text/javascript" charset="utf-8">
31
+ eventResults.endOfDocument = true;
32
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Periodical Executer | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/periodical_executer_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,36 @@
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>Unit test file | Position | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/position_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+ <div id="ensure_scrollbars" style="width:10000px; height:10000px; position:absolute" > </div>
23
+
24
+ <div id="body_absolute" style="position: absolute; top: 10px; left: 10px">
25
+ <div id="absolute_absolute" style="position: absolute; top: 10px; left:10px"> </div>
26
+ <div id="absolute_relative" style="position: relative; top: 10px; left:10px">
27
+ <div style="height:10px;font-size:2px">test<span id="inline">test</span></div>
28
+ <div id="absolute_relative_undefined"> </div>
29
+ </div>
30
+ </div>
31
+
32
+ </body>
33
+ </html>
34
+ <script type="text/javascript" charset="utf-8">
35
+ eventResults.endOfDocument = true;
36
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Prototype | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/prototype_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Range | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/range_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | Regexp | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/regexp_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,98 @@
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>Unit test file | Selector | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+
16
+ <script src="tests/selector_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+ <div id="fixtures" style="display: none">
23
+ <h1 class="title">Some title <span>here</span></h1>
24
+ <p id="p" class="first summary">
25
+ <strong id="strong">This</strong> is a short blurb
26
+ <a id="link_1" class="first internal" rel="external nofollow" href="#">with a <em id="em2">link</em></a> or
27
+ <a id="link_2" class="internal highlight" href="#"><em id="em">two</em></a>.
28
+ Or <cite id="with_title" title="hello world!">a citation</cite>.
29
+ </p>
30
+ <ul id="list">
31
+ <li id="item_1" class="first"><a id="link_3" href="#" class="external"><span id="span">Another link</span></a></li>
32
+ <li id="item_2">Some text</li>
33
+ <li id="item_3" xml:lang="es-us" class="">Otra cosa</li>
34
+ </ul>
35
+
36
+ <!-- this form has a field with the name 'id',
37
+ therefore its ID property won't be 'troubleForm': -->
38
+ <form id="troubleForm">
39
+ <input type="hidden" name="id" id="hidden" />
40
+ <input type="text" name="disabled_text_field" id="disabled_text_field" disabled="disabled" />
41
+ <input type="text" name="enabled_text_field" id="enabled_text_field" />
42
+ <input type="checkbox" name="checkboxes" id="checked_box" checked="checked" value="Checked" />
43
+ <input type="checkbox" name="checkboxes" id="unchecked_box" value="Unchecked"/>
44
+ <input type="radio" name="radiobuttons" id="checked_radio" checked="checked" value="Checked" />
45
+ <input type="radio" name="radiobuttons" id="unchecked_radio" value="Unchecked" />
46
+ </form>
47
+
48
+ <form id="troubleForm2">
49
+ <input type="checkbox" name="brackets[5][]" id="chk_1" checked="checked" value="1" />
50
+ <input type="checkbox" name="brackets[5][]" id="chk_2" value="2" />
51
+ </form>
52
+
53
+ <div id="level1">
54
+ <span id="level2_1">
55
+ <span id="level3_1"></span>
56
+ <!-- This comment should be ignored by the adjacent selector -->
57
+ <span id="level3_2"></span>
58
+ </span>
59
+ <span id="level2_2">
60
+ <em id="level_only_child">
61
+ </em>
62
+ </span>
63
+ <div id="level2_3"></div>
64
+ </div> <!-- #level1 -->
65
+
66
+ <div id="dupContainer">
67
+ <span id="dupL1" class="span_foo span_bar">
68
+ <span id="dupL2">
69
+ <span id="dupL3">
70
+ <span id="dupL4">
71
+ <span id="dupL5"></span>
72
+ </span>
73
+ </span>
74
+ </span>
75
+ </span>
76
+ </div> <!-- #dupContainer -->
77
+
78
+ <div id="grandfather"> grandfather
79
+ <div id="father" class="brothers men"> father
80
+ <div id="son"> son </div>
81
+ </div>
82
+ <div id="uncle" class="brothers men"> uncle </div>
83
+ </div>
84
+
85
+ <form id="commaParent" title="commas,are,good">
86
+ <input type="hidden" id="commaChild" name="foo" value="#commaOne,#commaTwo" />
87
+ <input type="hidden" id="commaTwo" name="foo2" value="oops" />
88
+ </form>
89
+ <div id="counted_container"><div class="is_counted"></div></div>
90
+
91
+ <div foo-bar="baz" id="attr_with_dash">blah</div>
92
+ </div>
93
+
94
+ </body>
95
+ </html>
96
+ <script type="text/javascript" charset="utf-8">
97
+ eventResults.endOfDocument = true;
98
+ </script>
@@ -0,0 +1,27 @@
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>Unit test file | String | default template | 2009-04-11 15:28</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
7
+ <script type="text/javascript" charset="utf-8">
8
+ var eventResults = {};
9
+ var originalElement = window.Element;
10
+ </script>
11
+ <script src="assets/prototype.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="assets/unittest.js" type="text/javascript" charset="utf-8"></script>
13
+ <link rel="stylesheet" href="assets/unittest.css" type="text/css" />
14
+
15
+ <script src="fixtures/string.js" type="text/javascript" charset="utf-8"></script>
16
+ <script src="tests/string_test.js" type="text/javascript" charset="utf-8"></script>
17
+ </head>
18
+ <body>
19
+
20
+ <div id="testlog"></div>
21
+
22
+
23
+ </body>
24
+ </html>
25
+ <script type="text/javascript" charset="utf-8">
26
+ eventResults.endOfDocument = true;
27
+ </script>
@@ -0,0 +1,379 @@
1
+ var extendDefault = function(options) {
2
+ return Object.extend({
3
+ asynchronous: false,
4
+ method: 'get',
5
+ onException: function(e) { throw e }
6
+ }, options);
7
+ };
8
+
9
+ new Test.Unit.Runner({
10
+ setup: function() {
11
+ $('content').update('');
12
+ $('content2').update('');
13
+ },
14
+
15
+ teardown: function() {
16
+ // hack to cleanup responders
17
+ Ajax.Responders.responders = [Ajax.Responders.responders[0]];
18
+ },
19
+
20
+ testSynchronousRequest: function() {
21
+ this.assertEqual("", $("content").innerHTML);
22
+
23
+ this.assertEqual(0, Ajax.activeRequestCount);
24
+ new Ajax.Request("fixtures/hello.js", {
25
+ asynchronous: false,
26
+ method: 'GET',
27
+ evalJS: 'force'
28
+ });
29
+ this.assertEqual(0, Ajax.activeRequestCount);
30
+
31
+ var h2 = $("content").firstChild;
32
+ this.assertEqual("Hello world!", h2.innerHTML);
33
+ },
34
+
35
+ testAsynchronousRequest: function() {
36
+ this.assertEqual("", $("content").innerHTML);
37
+
38
+ new Ajax.Request("fixtures/hello.js", {
39
+ asynchronous: true,
40
+ method: 'get',
41
+ evalJS: 'force'
42
+ });
43
+ this.wait(1000, function() {
44
+ var h2 = $("content").firstChild;
45
+ this.assertEqual("Hello world!", h2.innerHTML);
46
+ });
47
+ },
48
+
49
+ testUpdater: function() {
50
+ this.assertEqual("", $("content").innerHTML);
51
+
52
+ new Ajax.Updater("content", "fixtures/content.html", { method:'get' });
53
+
54
+ this.wait(1000, function() {
55
+ this.assertEqual(sentence, $("content").innerHTML.strip().toLowerCase());
56
+
57
+ $('content').update('');
58
+ this.assertEqual("", $("content").innerHTML);
59
+
60
+ new Ajax.Updater({ success:"content", failure:"content2" },
61
+ "fixtures/content.html", { method:'get', parameters:{ pet:'monkey' } });
62
+
63
+ new Ajax.Updater("", "fixtures/content.html", { method:'get', parameters:"pet=monkey" });
64
+
65
+ this.wait(1000, function() {
66
+ this.assertEqual(sentence, $("content").innerHTML.strip().toLowerCase());
67
+ this.assertEqual("", $("content2").innerHTML);
68
+ });
69
+ });
70
+ },
71
+
72
+ testUpdaterWithInsertion: function() {
73
+ $('content').update();
74
+ new Ajax.Updater("content", "fixtures/content.html", { method:'get', insertion: Insertion.Top });
75
+ this.wait(1000, function() {
76
+ this.assertEqual(sentence, $("content").innerHTML.strip().toLowerCase());
77
+ $('content').update();
78
+ new Ajax.Updater("content", "fixtures/content.html", { method:'get', insertion: 'bottom' });
79
+ this.wait(1000, function() {
80
+ this.assertEqual(sentence, $("content").innerHTML.strip().toLowerCase());
81
+
82
+ $('content').update();
83
+ new Ajax.Updater("content", "fixtures/content.html", { method:'get', insertion: 'after' });
84
+ this.wait(1000, function() {
85
+ this.assertEqual('five dozen', $("content").next().innerHTML.strip().toLowerCase());
86
+ });
87
+ });
88
+ });
89
+ },
90
+
91
+ testUpdaterOptions: function() {
92
+ var options = {
93
+ method: 'get',
94
+ asynchronous: false,
95
+ evalJS: 'force',
96
+ onComplete: Prototype.emptyFunction
97
+ }
98
+ var request = new Ajax.Updater("content", "../fixtures/hello.js", options);
99
+ request.options.onComplete = Prototype.emptyFunction;
100
+ this.assertIdentical(Prototype.emptyFunction, options.onComplete);
101
+ },
102
+
103
+ testResponders: function(){
104
+ // check for internal responder
105
+ this.assertEqual(1, Ajax.Responders.responders.length);
106
+
107
+ var dummyResponder = {
108
+ onComplete: Prototype.emptyFunction
109
+ };
110
+
111
+ Ajax.Responders.register(dummyResponder);
112
+ this.assertEqual(2, Ajax.Responders.responders.length);
113
+
114
+ // don't add twice
115
+ Ajax.Responders.register(dummyResponder);
116
+ this.assertEqual(2, Ajax.Responders.responders.length);
117
+
118
+ Ajax.Responders.unregister(dummyResponder);
119
+ this.assertEqual(1, Ajax.Responders.responders.length);
120
+
121
+ var responder = {
122
+ onCreate: function(req){ responderCounter++ },
123
+ onLoading: function(req){ responderCounter++ },
124
+ onComplete: function(req){ responderCounter++ }
125
+ };
126
+ Ajax.Responders.register(responder);
127
+
128
+ this.assertEqual(0, responderCounter);
129
+ this.assertEqual(0, Ajax.activeRequestCount);
130
+ new Ajax.Request("../fixtures/content.html", { method:'get', parameters:"pet=monkey" });
131
+ this.assertEqual(1, responderCounter);
132
+ this.assertEqual(1, Ajax.activeRequestCount);
133
+
134
+ this.wait(1000,function() {
135
+ this.assertEqual(3, responderCounter);
136
+ this.assertEqual(0, Ajax.activeRequestCount);
137
+ });
138
+ },
139
+
140
+ testEvalResponseShouldBeCalledBeforeOnComplete: function() {
141
+ if (this.isRunningFromRake) {
142
+ this.assertEqual("", $("content").innerHTML);
143
+
144
+ this.assertEqual(0, Ajax.activeRequestCount);
145
+ new Ajax.Request("../fixtures/hello.js", extendDefault({
146
+ onComplete: function(response) { this.assertNotEqual("", $("content").innerHTML) }.bind(this)
147
+ }));
148
+ this.assertEqual(0, Ajax.activeRequestCount);
149
+
150
+ var h2 = $("content").firstChild;
151
+ this.assertEqual("Hello world!", h2.innerHTML);
152
+ } else {
153
+ this.info(message);
154
+ }
155
+ },
156
+
157
+ testContentTypeSetForSimulatedVerbs: function() {
158
+ if (this.isRunningFromRake) {
159
+ new Ajax.Request('/inspect', extendDefault({
160
+ method: 'put',
161
+ contentType: 'application/bogus',
162
+ onComplete: function(response) {
163
+ this.assertEqual('application/bogus; charset=UTF-8', response.responseJSON.headers['content-type']);
164
+ }.bind(this)
165
+ }));
166
+ } else {
167
+ this.info(message);
168
+ }
169
+ },
170
+
171
+ testOnCreateCallback: function() {
172
+ new Ajax.Request("../fixtures/content.html", extendDefault({
173
+ onCreate: function(transport) { this.assertEqual(0, transport.readyState) }.bind(this),
174
+ onComplete: function(transport) { this.assertNotEqual(0, transport.readyState) }.bind(this)
175
+ }));
176
+ },
177
+
178
+ testEvalJS: function() {
179
+ if (this.isRunningFromRake) {
180
+
181
+ $('content').update();
182
+ new Ajax.Request("/response", extendDefault({
183
+ parameters: Fixtures.js,
184
+ onComplete: function(transport) {
185
+ var h2 = $("content").firstChild;
186
+ this.assertEqual("Hello world!", h2.innerHTML);
187
+ }.bind(this)
188
+ }));
189
+
190
+ $('content').update();
191
+ new Ajax.Request("/response", extendDefault({
192
+ evalJS: false,
193
+ parameters: Fixtures.js,
194
+ onComplete: function(transport) {
195
+ this.assertEqual("", $("content").innerHTML);
196
+ }.bind(this)
197
+ }));
198
+ } else {
199
+ this.info(message);
200
+ }
201
+
202
+ $('content').update();
203
+ new Ajax.Request("../fixtures/hello.js", extendDefault({
204
+ evalJS: 'force',
205
+ onComplete: function(transport) {
206
+ var h2 = $("content").firstChild;
207
+ this.assertEqual("Hello world!", h2.innerHTML);
208
+ }.bind(this)
209
+ }));
210
+ },
211
+
212
+ testCallbacks: function() {
213
+ var options = extendDefault({
214
+ onCreate: function(transport) { this.assertInstanceOf(Ajax.Response, transport) }.bind(this)
215
+ });
216
+
217
+ Ajax.Request.Events.each(function(state){
218
+ options['on' + state] = options.onCreate;
219
+ });
220
+
221
+ new Ajax.Request("../fixtures/content.html", options);
222
+ },
223
+
224
+ testResponseText: function() {
225
+ new Ajax.Request("fixtures/empty.html", extendDefault({
226
+ onComplete: function(transport) { this.assertEqual('', transport.responseText) }.bind(this)
227
+ }));
228
+
229
+ new Ajax.Request("fixtures/content.html", extendDefault({
230
+ onComplete: function(transport) { this.assertEqual(sentence, transport.responseText.toLowerCase()) }.bind(this)
231
+ }));
232
+ },
233
+
234
+ testResponseXML: function() {
235
+ if (this.isRunningFromRake) {
236
+ new Ajax.Request("/response", extendDefault({
237
+ parameters: Fixtures.xml,
238
+ onComplete: function(transport) {
239
+ this.assertEqual('foo', transport.responseXML.getElementsByTagName('name')[0].getAttribute('attr'))
240
+ }.bind(this)
241
+ }));
242
+ } else {
243
+ this.info(message);
244
+ }
245
+ },
246
+
247
+ testResponseJSON: function() {
248
+ if (this.isRunningFromRake) {
249
+ new Ajax.Request("/response", extendDefault({
250
+ parameters: Fixtures.json,
251
+ onComplete: function(transport) { this.assertEqual(123, transport.responseJSON.test) }.bind(this)
252
+ }));
253
+
254
+ new Ajax.Request("/response", extendDefault({
255
+ parameters: {
256
+ 'Content-Length': 0,
257
+ 'Content-Type': 'application/json'
258
+ },
259
+ onComplete: function(transport) { this.assertNull(transport.responseJSON) }.bind(this)
260
+ }));
261
+
262
+ new Ajax.Request("/response", extendDefault({
263
+ evalJSON: false,
264
+ parameters: Fixtures.json,
265
+ onComplete: function(transport) { this.assertNull(transport.responseJSON) }.bind(this)
266
+ }));
267
+
268
+ new Ajax.Request("/response", extendDefault({
269
+ parameters: Fixtures.jsonWithoutContentType,
270
+ onComplete: function(transport) { this.assertNull(transport.responseJSON) }.bind(this)
271
+ }));
272
+
273
+ new Ajax.Request("/response", extendDefault({
274
+ sanitizeJSON: true,
275
+ parameters: Fixtures.invalidJson,
276
+ onException: function(request, error) {
277
+ this.assert(error.message.include('Badly formed JSON string'));
278
+ this.assertInstanceOf(Ajax.Request, request);
279
+ }.bind(this)
280
+ }));
281
+ } else {
282
+ this.info(message);
283
+ }
284
+
285
+ new Ajax.Request("../fixtures/data.json", extendDefault({
286
+ evalJSON: 'force',
287
+ onComplete: function(transport) { this.assertEqual(123, transport.responseJSON.test) }.bind(this)
288
+ }));
289
+ },
290
+
291
+ testHeaderJSON: function() {
292
+ if (this.isRunningFromRake) {
293
+ new Ajax.Request("/response", extendDefault({
294
+ parameters: Fixtures.headerJson,
295
+ onComplete: function(transport, json) {
296
+ this.assertEqual('hello #éà', transport.headerJSON.test);
297
+ this.assertEqual('hello #éà', json.test);
298
+ }.bind(this)
299
+ }));
300
+
301
+ new Ajax.Request("/response", extendDefault({
302
+ onComplete: function(transport, json) {
303
+ this.assertNull(transport.headerJSON)
304
+ this.assertNull(json)
305
+ }.bind(this)
306
+ }));
307
+ } else {
308
+ this.info(message);
309
+ }
310
+ },
311
+
312
+ testGetHeader: function() {
313
+ if (this.isRunningFromRake) {
314
+ new Ajax.Request("/response", extendDefault({
315
+ parameters: { 'X-TEST': 'some value' },
316
+ onComplete: function(transport) {
317
+ this.assertEqual('some value', transport.getHeader('X-Test'));
318
+ this.assertNull(transport.getHeader('X-Inexistant'));
319
+ }.bind(this)
320
+ }));
321
+ } else {
322
+ this.info(message);
323
+ }
324
+ },
325
+
326
+ testParametersCanBeHash: function() {
327
+ if (this.isRunningFromRake) {
328
+ new Ajax.Request("/response", extendDefault({
329
+ parameters: $H({ "one": "two", "three": "four" }),
330
+ onComplete: function(transport) {
331
+ this.assertEqual("two", transport.getHeader("one"));
332
+ this.assertEqual("four", transport.getHeader("three"));
333
+ this.assertNull(transport.getHeader("toObject"));
334
+ }.bind(this)
335
+ }));
336
+ } else {
337
+ this.info(message);
338
+ }
339
+ },
340
+
341
+ testIsSameOriginMethod: function() {
342
+ var isSameOrigin = Ajax.Request.prototype.isSameOrigin;
343
+ this.assert(isSameOrigin.call({ url: '/foo/bar.html' }), '/foo/bar.html');
344
+ this.assert(isSameOrigin.call({ url: window.location.toString() }), window.location);
345
+ this.assert(!isSameOrigin.call({ url: 'http://example.com' }), 'http://example.com');
346
+
347
+ if (this.isRunningFromRake) {
348
+ Ajax.Request.prototype.isSameOrigin = function() {
349
+ return false
350
+ };
351
+
352
+ $("content").update('same origin policy');
353
+ new Ajax.Request("/response", extendDefault({
354
+ parameters: Fixtures.js,
355
+ onComplete: function(transport) {
356
+ this.assertEqual("same origin policy", $("content").innerHTML);
357
+ }.bind(this)
358
+ }));
359
+
360
+ new Ajax.Request("/response", extendDefault({
361
+ parameters: Fixtures.invalidJson,
362
+ onException: function(request, error) {
363
+ this.assert(error.message.include('Badly formed JSON string'));
364
+ }.bind(this)
365
+ }));
366
+
367
+ new Ajax.Request("/response", extendDefault({
368
+ parameters: { 'X-JSON': '{});window.attacked = true;({}' },
369
+ onException: function(request, error) {
370
+ this.assert(error.message.include('Badly formed JSON string'));
371
+ }.bind(this)
372
+ }));
373
+
374
+ Ajax.Request.prototype.isSameOrigin = isSameOrigin;
375
+ } else {
376
+ this.info(message);
377
+ }
378
+ }
379
+ });