Commit | Line | Data |
---|---|---|
7165f97b | 1 | <!-- A local source file that allows dygraph developers to test locally. --> |
644eff8b RK |
2 | <html> |
3 | <head> | |
7165f97b RK |
4 | <!-- Standard Dygraph scripts --> |
5 | <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9"> | |
6 | <!--[if IE]> | |
7 | <script type="text/javascript" src="../../excanvas.js"></script> | |
8 | <![endif]--> | |
8d3d15af | 9 | <script type="text/javascript" src="../../dygraph-dev.js"></script> |
7165f97b RK |
10 | |
11 | <!-- Scripts for automated tests --> | |
12 | <script type="text/javascript" src="../lib/jquery-1.4.2.js"></script> | |
13 | <script type="text/javascript" src="../lib/Asserts.js"></script> | |
14 | <script type="text/javascript" src="fake-jstestdriver.js"></script> | |
15 | <script type="text/javascript" src="../tests/Proxy.js"></script> | |
16 | <script type="text/javascript" src="../tests/CanvasAssertions.js"></script> | |
72a74f04 | 17 | <script type="text/javascript" src="../tests/DygraphOps.js"></script> |
7165f97b RK |
18 | <script type="text/javascript" src="../tests/sanity.js"></script> |
19 | <script type="text/javascript" src="../tests/simple_drawing.js"></script> | |
72a74f04 | 20 | <script type="text/javascript" src="../tests/range_tests.js"></script> |
f3cbe61e DV |
21 | <script type="text/javascript" src="../tests/axis_labels.js"></script> |
22 | <script type="text/javascript" src="../tests/multi_csv.js"></script> | |
063e83ba | 23 | <script type="text/javascript" src="../tests/to_dom_coords.js"></script> |
9c831431 | 24 | <script type="text/javascript" src="../tests/interaction_model.js"></script> |
0842b24b | 25 | <!-- |
48e614ac | 26 | <script type="text/javascript" src="../tests/tickers.js"></script> |
0842b24b | 27 | --> |
6788e30b | 28 | <script type="text/javascript" src="../tests/scrolling_div.js"></script> |
502d5996 | 29 | <script type="text/javascript" src="../tests/custom_bars.js"></script> |
0cb9bd91 | 30 | <script type="text/javascript" src="../tests/css.js"></script> |
87bbdb4d | 31 | <script type="text/javascript" src="../tests/selection.js"></script> |
77b5e09d | 32 | <script type="text/javascript" src="../tests/rolling_average.js"></script> |
f35016e8 | 33 | <script type="text/javascript" src="../tests/error_bars.js"></script> |
c9faeafd | 34 | <script type="text/javascript" src="../tests/annotations.js"></script> |
0842b24b | 35 | <script type="text/javascript" src="../tests/scientific_notation.js"></script> |
395e98a3 | 36 | <script type="text/javascript" src="../tests/pathological_cases.js"></script> |
769e8bc7 | 37 | <script type="text/javascript" src="../tests/date_formats.js"></script> |
36d4fabf | 38 | <script type="text/javascript" src="../tests/formats.js"></script> |
97583b90 | 39 | <script type="text/javascript" src="../tests/update_while_panning.js"></script> |
3f675fe5 | 40 | <script type="text/javascript" src="../tests/no_hours.js"></script> |
9ca829f2 | 41 | <script type="text/javascript" src="../tests/update_options.js"></script> |
48e614ac DV |
42 | <script type="text/javascript" src="../tests/utils_test.js"></script> |
43 | <script type="text/javascript" src="../tests/multiple_axes.js"></script> | |
1c6b239c | 44 | <script type="text/javascript" src="../tests/callback.js"></script> |
87bbdb4d DV |
45 | |
46 | ||
6788e30b RK |
47 | <script type="text/javascript"> |
48 | var tc = null; | |
0c393397 | 49 | var name = null; |
6788e30b RK |
50 | function processVariables() { |
51 | var splitVariables = function() { // http://www.idealog.us/2006/06/javascript_to_p.html | |
52 | var query = window.location.search.substring(1); | |
53 | var args = {}; | |
54 | var vars = query.split("&"); | |
3d8093fa RK |
55 | for (var i = 0; i < vars.length; i++) { |
56 | if (vars[i].length > 0) { | |
57 | var pair = vars[i].split("="); | |
58 | args[pair[0]] = pair[1]; | |
59 | } | |
6788e30b RK |
60 | } |
61 | return args; | |
62 | } | |
63 | ||
64 | var args = splitVariables(); | |
65 | var test = args.test; | |
66 | var command = args.command; | |
67 | ||
ef13835b | 68 | // args.testCaseName uses the string name of the test. |
357f7a8a RK |
69 | if (args.testCaseName) { |
70 | var testCases = getAllTestCases(); | |
0c393397 | 71 | name = args.testCaseName; |
357f7a8a RK |
72 | for (var idx in testCases) { |
73 | var entry = testCases[idx]; | |
74 | if (entry.name == args.testCaseName) { | |
75 | var prototype = entry.testCase; | |
76 | tc = new entry.testCase(); | |
77 | break; | |
78 | } | |
79 | } | |
ef13835b | 80 | } else if (args.testCase) { // The class name of the test. |
0c393397 | 81 | name = args.testCase; |
6788e30b | 82 | eval("tc = new " + args.testCase + "()"); |
357f7a8a | 83 | } |
ef13835b RK |
84 | |
85 | // If the test class is defined. | |
357f7a8a | 86 | if (tc != null) { |
ef13835b RK |
87 | if (args.command == "runAllTests") { |
88 | console.log("Running all tests for " + args.testCase); | |
89 | postResults(tc.runAllTests()); | |
90 | } | |
91 | if (args.command == "runTest") { | |
92 | console.log("Running test " + args.testCase + "." + args.test); | |
93 | postResults(tc.runTest(args.test)); | |
94 | } | |
95 | } else { | |
96 | if (args.command == "runAllTests") { | |
97 | console.log("Running all tests for all test cases"); | |
98 | var testCases = getAllTestCases(); | |
99 | var results = {}; | |
100 | for (var idx in testCases) { | |
101 | var entry = testCases[idx]; | |
102 | var prototype = entry.testCase; | |
103 | tc = new entry.testCase(); | |
104 | results[entry.name] = tc.runAllTests(); | |
6788e30b | 105 | } |
ef13835b | 106 | postResults(results); |
6788e30b RK |
107 | } |
108 | } | |
109 | } | |
da11a9a7 | 110 | |
ef13835b RK |
111 | function postResults(results, title, div) { |
112 | var first = false; | |
113 | if (div == null) { | |
114 | var body = document.getElementsByTagName("body")[0]; | |
115 | div = document.createElement("div"); | |
116 | div.innerHTML = "Test results:"; | |
117 | if (typeof(results) != "boolean"); { | |
118 | div.innerHTML = "Test results:<br/>"; | |
119 | } | |
120 | body.insertBefore(div, body.firstChild); | |
121 | first = true; | |
122 | } | |
da11a9a7 RK |
123 | |
124 | var resultToHtml = function(result) { | |
125 | return result ? | |
126 | "<span style='color:green;'>pass</span>" : | |
127 | "<span style='color:red;'>fail</span>"; | |
128 | } | |
129 | ||
130 | if (typeof(results) == "boolean") { | |
ef13835b RK |
131 | var elem = document.createElement("div"); |
132 | if (title) { | |
133 | elem.innerHTML = title + ": " + resultToHtml(results); | |
134 | } else { | |
135 | elem.innerHTML = resultToHtml(results); | |
136 | } | |
137 | div.appendChild(elem); | |
da11a9a7 RK |
138 | } else { // hash |
139 | var html = ""; | |
140 | for (var key in results) { | |
141 | if (results.hasOwnProperty(key)) { | |
ef13835b RK |
142 | var elem = results[key]; |
143 | if (typeof(elem) == "boolean" && title) { | |
144 | postResults(results[key], title + "." + key, div); | |
145 | } else { | |
146 | postResults(results[key], key, div); | |
147 | } | |
da11a9a7 RK |
148 | } |
149 | } | |
da11a9a7 | 150 | } |
ef13835b RK |
151 | if (first) { |
152 | div.appendChild(document.createElement("hr")); | |
153 | } | |
da11a9a7 | 154 | } |
6788e30b | 155 | </script> |
644eff8b RK |
156 | </head> |
157 | <body> | |
158 | <div id='graph'></div> | |
33933283 | 159 | <div id="selector"></div> |
3914c8e1 | 160 | <p>This file is really nothing more than all the tests coalesced into a single |
33933283 RK |
161 | HTML file. To run a test, use the selector above, or |
162 | open a Javascript console and execute, for instance,</p> | |
3914c8e1 | 163 | <code>testDrawSimpleRangePlusOne()</code> |
6788e30b RK |
164 | |
165 | <p>Alternatively you can use query args: <ul> | |
33933283 RK |
166 | <li>testCase - for the name of the test case prototype |
167 | <li>testCaseName - for the name of the test case | |
6788e30b RK |
168 | <li>test - for the name of the test (use command=runTest) |
169 | <li>command - either runTest or runAllTests. | |
170 | </ul> | |
171 | Example: <code>local.html?testCase=ScrollingDivTestCase&test=testNestedDiv_Scrolled&command=runTest</code> | |
357f7a8a | 172 | <p/> |
644eff8b | 173 | </body> |
6788e30b RK |
174 | <script> |
175 | processVariables(); | |
3914c8e1 | 176 | addGlobalTestSymbols(); |
357f7a8a | 177 | |
357f7a8a | 178 | var selector = document.getElementById("selector"); |
0c393397 | 179 | |
357f7a8a | 180 | if (selector != null) { // running a test |
da11a9a7 RK |
181 | var createAttached = function(name, parent) { |
182 | var elem = document.createElement(name); | |
183 | parent.appendChild(elem); | |
184 | return elem; | |
185 | } | |
186 | ||
357f7a8a RK |
187 | var description = createAttached("div", selector); |
188 | var list = createAttached("ul", selector); | |
189 | var parent = list.parentElement; | |
da11a9a7 RK |
190 | var createLink = function(parent, text, url) { |
191 | var li = createAttached("li", parent); | |
192 | var a = createAttached("a", li); | |
193 | a.innerText = text; | |
194 | a.href = url; | |
195 | } | |
357f7a8a RK |
196 | if (tc == null) { |
197 | description.innerHTML = "Test cases:"; | |
198 | var testCases = getAllTestCases(); | |
ef13835b | 199 | createLink(list, "(run all tests)", document.URL + "?command=runAllTests"); |
357f7a8a | 200 | for (var idx in testCases) { |
da11a9a7 RK |
201 | var entryName = testCases[idx].name; |
202 | createLink(list, entryName, document.URL + "?testCaseName=" + entryName); | |
357f7a8a RK |
203 | } |
204 | } else { | |
205 | description.innerHTML = "Tests for " + name; | |
206 | var names = tc.getTestNames(); | |
da11a9a7 | 207 | createLink(list, "Run All Tests", document.URL + "&command=runAllTests"); |
357f7a8a RK |
208 | for (var idx in names) { |
209 | var name = names[idx]; | |
da11a9a7 | 210 | createLink(list, name, document.URL + "&test=" + name + "&command=runTest"); |
357f7a8a RK |
211 | } |
212 | } | |
213 | } | |
6788e30b | 214 | </script> |
644eff8b | 215 | </html> |