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 | 10 | |
6c8003d8 | 11 | <!-- Scripts for library support --> |
7165f97b RK |
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> |
9f636500 | 18 | <script type="text/javascript" src="../tests/PixelSampler.js"></script> |
fa607ffb | 19 | <script type="text/javascript" src="../tests/Util.js"></script> |
6c8003d8 RK |
20 | |
21 | <!-- Scripts for automated tests --> | |
6a4587ac | 22 | <script type="text/javascript" src="../tests/annotations.js"></script> |
6d6c60b6 | 23 | <script type="text/javascript" src="../tests/axis_labels.js"></script> |
3d3001cf | 24 | <script type="text/javascript" src="../tests/axis_labels-deprecated.js"></script> |
6a4587ac | 25 | <script type="text/javascript" src="../tests/callback.js"></script> |
d413f791 | 26 | <script type="text/javascript" src="../tests/connect_separated_points.js"></script> |
6a4587ac RK |
27 | <script type="text/javascript" src="../tests/css.js"></script> |
28 | <script type="text/javascript" src="../tests/custom_bars.js"></script> | |
29 | <script type="text/javascript" src="../tests/date_formats.js"></script> | |
cd872296 | 30 | <script type="text/javascript" src="../tests/dygraph-options-tests.js"></script> |
6a4587ac RK |
31 | <script type="text/javascript" src="../tests/error_bars.js"></script> |
32 | <script type="text/javascript" src="../tests/formats.js"></script> | |
4a0567da | 33 | <script type="text/javascript" src="../tests/grid_per_axis.js"></script> |
9c831431 | 34 | <script type="text/javascript" src="../tests/interaction_model.js"></script> |
cea0fb70 | 35 | <script type="text/javascript" src="../tests/missing_points.js"></script> |
6a4587ac | 36 | <script type="text/javascript" src="../tests/multi_csv.js"></script> |
71e72c82 | 37 | <script type="text/javascript" src="../tests/multiple_axes.js"></script> |
08c74b2d | 38 | <script type="text/javascript" src="../tests/multiple_axes-old.js"></script> |
8e19509a | 39 | <script type="text/javascript" src="../tests/numeric-labels.js"></script> |
6a4587ac | 40 | <script type="text/javascript" src="../tests/no_hours.js"></script> |
6c8003d8 | 41 | <script type="text/javascript" src="../tests/parser.js"></script> |
6a4587ac | 42 | <script type="text/javascript" src="../tests/pathological_cases.js"></script> |
f112135d | 43 | <script type="text/javascript" src="../tests/per_series.js"></script> |
63623c70 | 44 | <script type="text/javascript" src="../tests/plugins.js"></script> |
6c8003d8 | 45 | <script type="text/javascript" src="../tests/range_selector.js"></script> |
6a4587ac RK |
46 | <script type="text/javascript" src="../tests/range_tests.js"></script> |
47 | <script type="text/javascript" src="../tests/rolling_average.js"></script> | |
48 | <script type="text/javascript" src="../tests/sanity.js"></script> | |
6a4587ac RK |
49 | <script type="text/javascript" src="../tests/scientific_notation.js"></script> |
50 | <script type="text/javascript" src="../tests/scrolling_div.js"></script> | |
6c8003d8 | 51 | <script type="text/javascript" src="../tests/selection.js"></script> |
6a4587ac | 52 | <script type="text/javascript" src="../tests/simple_drawing.js"></script> |
5546c2e3 | 53 | <script type="text/javascript" src="../tests/step_plot_per_series.js"></script> |
6c8003d8 | 54 | <script type="text/javascript" src="../tests/stacked.js"></script> |
0842b24b | 55 | <!-- |
48e614ac | 56 | <script type="text/javascript" src="../tests/tickers.js"></script> |
0842b24b | 57 | --> |
6a4587ac | 58 | <script type="text/javascript" src="../tests/to_dom_coords.js"></script> |
24f7710b | 59 | <script type="text/javascript" src="../tests/resize.js"></script> |
9ca829f2 | 60 | <script type="text/javascript" src="../tests/update_options.js"></script> |
6c8003d8 | 61 | <script type="text/javascript" src="../tests/update_while_panning.js"></script> |
48e614ac | 62 | <script type="text/javascript" src="../tests/utils_test.js"></script> |
87bbdb4d | 63 | |
5cfed8c5 RK |
64 | <style type="text/css"> |
65 | .pass .outcome { | |
66 | color: green; | |
67 | } | |
68 | ||
69 | .fail .outcome { | |
70 | color: red; | |
71 | } | |
87bbdb4d | 72 | |
5cfed8c5 RK |
73 | .activeAnchor { |
74 | color: black; | |
75 | text-decoration: none; | |
76 | } | |
77 | </style> | |
6788e30b | 78 | <script type="text/javascript"> |
fa607ffb RK |
79 | |
80 | // save Dygraph.warn so we can catch warnings. | |
7db3d60b RK |
81 | if (false) { // Set true if you want warnings to cause failures. |
82 | var originalDygraphWarn = Dygraph.warn; | |
83 | Dygraph.warn = function(msg) { | |
84 | if (msg == "Using default labels. Set labels explicitly via 'labels' in the options parameter") { | |
85 | originalDygraphWarn(msg); | |
86 | return; | |
87 | } | |
88 | throw "Warnings not permitted: " + msg; | |
89 | } | |
90 | Dygraph.prototype.warn = Dygraph.warn; | |
91 | } | |
fa607ffb | 92 | |
b43b50fe RK |
93 | var tc = null; // Selected test case |
94 | var name = null; | |
5cfed8c5 RK |
95 | |
96 | var resultDiv = null; | |
97 | ||
6788e30b RK |
98 | function processVariables() { |
99 | var splitVariables = function() { // http://www.idealog.us/2006/06/javascript_to_p.html | |
100 | var query = window.location.search.substring(1); | |
101 | var args = {}; | |
102 | var vars = query.split("&"); | |
3d8093fa RK |
103 | for (var i = 0; i < vars.length; i++) { |
104 | if (vars[i].length > 0) { | |
105 | var pair = vars[i].split("="); | |
106 | args[pair[0]] = pair[1]; | |
107 | } | |
6788e30b RK |
108 | } |
109 | return args; | |
110 | } | |
111 | ||
112 | var args = splitVariables(); | |
113 | var test = args.test; | |
114 | var command = args.command; | |
115 | ||
ef13835b | 116 | // args.testCaseName uses the string name of the test. |
357f7a8a RK |
117 | if (args.testCaseName) { |
118 | var testCases = getAllTestCases(); | |
0c393397 | 119 | name = args.testCaseName; |
357f7a8a RK |
120 | for (var idx in testCases) { |
121 | var entry = testCases[idx]; | |
122 | if (entry.name == args.testCaseName) { | |
123 | var prototype = entry.testCase; | |
124 | tc = new entry.testCase(); | |
125 | break; | |
126 | } | |
127 | } | |
ef13835b | 128 | } else if (args.testCase) { // The class name of the test. |
0c393397 | 129 | name = args.testCase; |
6788e30b | 130 | eval("tc = new " + args.testCase + "()"); |
357f7a8a | 131 | } |
ef13835b | 132 | |
5cfed8c5 | 133 | var results = null; |
ef13835b | 134 | // If the test class is defined. |
357f7a8a | 135 | if (tc != null) { |
ef13835b RK |
136 | if (args.command == "runAllTests") { |
137 | console.log("Running all tests for " + args.testCase); | |
5cfed8c5 RK |
138 | results = tc.runAllTests(); |
139 | } else if (args.command == "runTest") { | |
ef13835b | 140 | console.log("Running test " + args.testCase + "." + args.test); |
5cfed8c5 | 141 | results = tc.runTest(args.test); |
ef13835b RK |
142 | } |
143 | } else { | |
144 | if (args.command == "runAllTests") { | |
145 | console.log("Running all tests for all test cases"); | |
146 | var testCases = getAllTestCases(); | |
5cfed8c5 | 147 | results = {}; |
ef13835b RK |
148 | for (var idx in testCases) { |
149 | var entry = testCases[idx]; | |
150 | var prototype = entry.testCase; | |
151 | tc = new entry.testCase(); | |
152 | results[entry.name] = tc.runAllTests(); | |
6788e30b RK |
153 | } |
154 | } | |
155 | } | |
5cfed8c5 | 156 | resultsDiv = createResultsDiv(); |
b43b50fe RK |
157 | var summary = { failed: 0, passed: 0 }; |
158 | postResults(results, summary); | |
5cfed8c5 | 159 | resultsDiv.appendChild(document.createElement("hr")); |
0bdbfaf3 | 160 | document.getElementById('summary').innerHTML = "(" + summary.failed + " failed, " + summary.passed + " passed)"; |
6788e30b | 161 | } |
da11a9a7 | 162 | |
5cfed8c5 RK |
163 | function createResultsDiv() { |
164 | var body = document.getElementsByTagName("body")[0]; | |
165 | div = document.createElement("div"); | |
166 | div.id='results'; | |
825a47fc | 167 | div.innerHTML = "Test results: <span id='summary'></span> <a href='#' id='passed'>passed</a> <a href='#' id='failed'>failed</a> <a href='#' id='all'>all</a><br/>"; |
5cfed8c5 RK |
168 | body.insertBefore(div, body.firstChild); |
169 | ||
170 | var setByClassName = function(name, displayStyle) { | |
171 | var elements = div.getElementsByClassName(name); | |
172 | for (var i = 0; i < elements.length; i++) { | |
173 | elements[i].style.display = displayStyle; | |
ef13835b | 174 | } |
ef13835b | 175 | } |
da11a9a7 | 176 | |
5cfed8c5 RK |
177 | var passedAnchor = document.getElementById('passed'); |
178 | var failedAnchor = document.getElementById('failed'); | |
179 | var allAnchor = document.getElementById('all'); | |
180 | passedAnchor.onclick = function() { | |
181 | setByClassName('fail', 'none'); | |
182 | setByClassName('pass', 'block'); | |
183 | ||
184 | passedAnchor.setAttribute("class", 'activeAnchor'); | |
185 | failedAnchor.setAttribute("class", ''); | |
186 | }; | |
187 | failedAnchor.onclick = function() { | |
188 | setByClassName('fail', 'block'); | |
189 | setByClassName('pass', 'none'); | |
190 | passedAnchor.setAttribute("class", ''); | |
191 | failedAnchor.setAttribute("class", 'activeAnchor'); | |
192 | }; | |
193 | allAnchor.onclick = function() { | |
194 | setByClassName('fail', 'block'); | |
195 | setByClassName('pass', 'block'); | |
196 | passedAnchor.setAttribute("class", ''); | |
197 | failedAnchor.setAttribute("class", ''); | |
198 | }; | |
199 | return div; | |
200 | } | |
da11a9a7 | 201 | |
b43b50fe | 202 | function postResults(results, summary, title) { |
da11a9a7 | 203 | if (typeof(results) == "boolean") { |
ef13835b | 204 | var elem = document.createElement("div"); |
5cfed8c5 RK |
205 | elem.setAttribute("class", results ? 'pass' : 'fail'); |
206 | ||
207 | var prefix = title ? (title + ": ") : ""; | |
208 | elem.innerHTML = prefix + '<span class=\'outcome\'>' + (results ? 'pass' : 'fail') + '</span>'; | |
209 | resultsDiv.appendChild(elem); | |
b43b50fe RK |
210 | if (results) { |
211 | summary.passed++; | |
212 | } else { | |
213 | summary.failed++; | |
214 | } | |
da11a9a7 | 215 | } else { // hash |
825a47fc | 216 | var failed = 0; |
da11a9a7 RK |
217 | var html = ""; |
218 | for (var key in results) { | |
219 | if (results.hasOwnProperty(key)) { | |
ef13835b RK |
220 | var elem = results[key]; |
221 | if (typeof(elem) == "boolean" && title) { | |
b43b50fe | 222 | postResults(results[key], summary, title + "." + key); |
ef13835b | 223 | } else { |
b43b50fe | 224 | postResults(results[key], summary, key); |
ef13835b | 225 | } |
da11a9a7 RK |
226 | } |
227 | } | |
da11a9a7 | 228 | } |
da11a9a7 | 229 | } |
5cfed8c5 | 230 | |
6788e30b | 231 | </script> |
644eff8b RK |
232 | </head> |
233 | <body> | |
234 | <div id='graph'></div> | |
33933283 | 235 | <div id="selector"></div> |
3914c8e1 | 236 | <p>This file is really nothing more than all the tests coalesced into a single |
33933283 RK |
237 | HTML file. To run a test, use the selector above, or |
238 | open a Javascript console and execute, for instance,</p> | |
3914c8e1 | 239 | <code>testDrawSimpleRangePlusOne()</code> |
6788e30b RK |
240 | |
241 | <p>Alternatively you can use query args: <ul> | |
33933283 RK |
242 | <li>testCase - for the name of the test case prototype |
243 | <li>testCaseName - for the name of the test case | |
6788e30b RK |
244 | <li>test - for the name of the test (use command=runTest) |
245 | <li>command - either runTest or runAllTests. | |
246 | </ul> | |
247 | Example: <code>local.html?testCase=ScrollingDivTestCase&test=testNestedDiv_Scrolled&command=runTest</code> | |
357f7a8a | 248 | <p/> |
644eff8b | 249 | </body> |
6788e30b RK |
250 | <script> |
251 | processVariables(); | |
3914c8e1 | 252 | addGlobalTestSymbols(); |
357f7a8a | 253 | |
357f7a8a | 254 | var selector = document.getElementById("selector"); |
0c393397 | 255 | |
357f7a8a | 256 | if (selector != null) { // running a test |
da11a9a7 RK |
257 | var createAttached = function(name, parent) { |
258 | var elem = document.createElement(name); | |
259 | parent.appendChild(elem); | |
260 | return elem; | |
261 | } | |
262 | ||
357f7a8a RK |
263 | var description = createAttached("div", selector); |
264 | var list = createAttached("ul", selector); | |
265 | var parent = list.parentElement; | |
da11a9a7 | 266 | var createLink = function(parent, text, url) { |
5cfed8c5 RK |
267 | var li = createAttached("li", parent); |
268 | var a = createAttached("a", li); | |
0bdbfaf3 | 269 | a.innerHTML = text; |
5cfed8c5 | 270 | a.href = url; |
da11a9a7 | 271 | } |
357f7a8a RK |
272 | if (tc == null) { |
273 | description.innerHTML = "Test cases:"; | |
274 | var testCases = getAllTestCases(); | |
ef13835b | 275 | createLink(list, "(run all tests)", document.URL + "?command=runAllTests"); |
357f7a8a | 276 | for (var idx in testCases) { |
da11a9a7 RK |
277 | var entryName = testCases[idx].name; |
278 | createLink(list, entryName, document.URL + "?testCaseName=" + entryName); | |
357f7a8a RK |
279 | } |
280 | } else { | |
281 | description.innerHTML = "Tests for " + name; | |
282 | var names = tc.getTestNames(); | |
da11a9a7 | 283 | createLink(list, "Run All Tests", document.URL + "&command=runAllTests"); |
357f7a8a RK |
284 | for (var idx in names) { |
285 | var name = names[idx]; | |
da11a9a7 | 286 | createLink(list, name, document.URL + "&test=" + name + "&command=runTest"); |
357f7a8a RK |
287 | } |
288 | } | |
289 | } | |
6788e30b | 290 | </script> |
644eff8b | 291 | </html> |