Fix: merge conflict
[myslice.git] / third-party / codemirror-3.15 / test / index.html
1 <!doctype html>
2 <html>
3   <head>
4     <meta charset="utf-8">
5     <title>CodeMirror: Test Suite</title>
6     <link rel="stylesheet" href="../lib/codemirror.css">
7     <link rel="stylesheet" href="../doc/docs.css">
8     <link rel="stylesheet" href="mode_test.css">
9     <script src="../lib/codemirror.js"></script>
10     <script src="../addon/mode/overlay.js"></script>
11     <script src="../addon/mode/multiplex.js"></script>
12     <script src="../addon/search/searchcursor.js"></script>
13     <script src="../addon/dialog/dialog.js"></script>
14     <script src="../addon/edit/matchbrackets.js"></script>
15     <script src="../addon/comment/comment.js"></script>
16     <script src="../mode/javascript/javascript.js"></script>
17     <script src="../mode/xml/xml.js"></script>
18     <script src="../keymap/vim.js"></script>
19     <script src="../keymap/emacs.js"></script>
20
21     <style type="text/css">
22       .ok {color: #090;}
23       .fail {color: #e00;}
24       .error {color: #c90;}
25       .done {font-weight: bold;}
26       #progress {
27         background: #45d;
28         color: white;
29         text-shadow: 0 0 1px #45d, 0 0 2px #45d, 0 0 3px #45d;
30         font-weight: bold;
31         white-space: pre;
32       }
33       #testground {
34         visibility: hidden;
35       }
36       #testground.offscreen {
37         visibility: visible;
38         position: absolute;
39         left: -10000px;
40         top: -10000px;
41       }
42       .CodeMirror { border: 1px solid black; }
43     </style>
44   </head>
45   <body>
46     <h1>CodeMirror: Test Suite</h1>
47
48     <p>A limited set of programmatic sanity tests for CodeMirror.</p>
49
50     <div style="border: 1px solid black; padding: 1px; max-width: 700px;">
51       <div style="width: 0px;" id=progress><div style="padding: 3px;">Ran <span id="progress_ran">0</span><span id="progress_total"> of 0</span> tests</div></div>
52     </div>
53     <p id=status>Please enable JavaScript...</p>
54     <div id=output></div>
55
56     <div id=testground></div>
57
58     <script src="driver.js"></script>
59     <script src="test.js"></script>
60     <script src="doc_test.js"></script>
61     <script src="comment_test.js"></script>
62     <script src="mode_test.js"></script>
63     <script src="../mode/javascript/test.js"></script>
64     <script src="../mode/css/css.js"></script>
65     <script src="../mode/css/test.js"></script>
66     <script src="../mode/css/scss_test.js"></script>
67     <script src="../mode/xml/xml.js"></script>
68     <script src="../mode/htmlmixed/htmlmixed.js"></script>
69     <script src="../mode/ruby/ruby.js"></script>
70     <script src="../mode/haml/haml.js"></script>
71     <script src="../mode/haml/test.js"></script>
72     <script src="../mode/markdown/markdown.js"></script>
73     <script src="../mode/markdown/test.js"></script>
74     <script src="../mode/gfm/gfm.js"></script>
75     <script src="../mode/gfm/test.js"></script>
76     <script src="../mode/stex/stex.js"></script>
77     <script src="../mode/stex/test.js"></script>
78     <script src="../mode/xquery/xquery.js"></script>
79     <script src="../mode/xquery/test.js"></script>
80     <script src="../addon/mode/multiplex_test.js"></script>
81     <script src="vim_test.js"></script>
82     <script src="emacs_test.js"></script>
83     <script>
84       window.onload = runHarness;
85       CodeMirror.on(window, 'hashchange', runHarness);
86
87       function esc(str) {
88         return str.replace(/[<&]/, function(ch) { return ch == "<" ? "&lt;" : "&amp;"; });
89       }
90
91       var output = document.getElementById("output"),
92           progress = document.getElementById("progress"),
93           progressRan = document.getElementById("progress_ran").childNodes[0],
94           progressTotal = document.getElementById("progress_total").childNodes[0];
95       var count = 0,
96           failed = 0,
97           bad = "",
98           running = false, // Flag that states tests are running
99          quit = false, // Flag to quit tests ASAP
100          verbose = false; // Adds message for *every* test to output
101
102       function runHarness(){
103         if (running) {
104           quit = true;
105           setStatus("Restarting tests...", '', true);
106           setTimeout(function(){runHarness();}, 500);
107           return;
108         }
109         if (window.location.hash.substr(1)){
110           debug = window.location.hash.substr(1).split(",");
111         } else {
112           debug = null;
113         }
114         quit = false;
115         running = true;
116         setStatus("Loading tests...");
117         count = 0;
118         failed = 0;
119         bad = "";
120         verbose = false;
121         debugUsed = Array();
122         totalTests = countTests();
123         progressTotal.nodeValue = " of " + totalTests;
124         progressRan.nodeValue = count;
125         output.innerHTML = '';
126         document.getElementById("testground").innerHTML = "<form>" +
127           "<textarea id=\"code\" name=\"code\"></textarea>" +
128           "<input type=submit value=ok name=submit>" +
129           "</form>";
130         runTests(displayTest);
131       }
132
133       function setStatus(message, className, force){
134         if (quit && !force) return;
135         if (!message) throw("must provide message");
136         var status = document.getElementById("status").childNodes[0];
137         status.nodeValue = message;
138         status.parentNode.className = className;
139       }
140       function addOutput(name, className, code){
141         var newOutput = document.createElement("dl");
142         var newTitle = document.createElement("dt");
143         newTitle.className = className;
144         newTitle.appendChild(document.createTextNode(name));
145         newOutput.appendChild(newTitle);
146         var newMessage = document.createElement("dd");
147         newMessage.innerHTML = code;
148         newOutput.appendChild(newTitle);
149         newOutput.appendChild(newMessage);
150         output.appendChild(newOutput);
151       }
152       function displayTest(type, name, customMessage) {
153         var message = "???";
154         if (type != "done") ++count;
155         progress.style.width = (count * (progress.parentNode.clientWidth - 2) / totalTests) + "px";
156         progressRan.nodeValue = count;
157         if (type == "ok") {
158           message = "Test '" + name + "' succeeded";
159           if (!verbose) customMessage = false;
160         } else if (type == "expected") {
161           message = "Test '" + name + "' failed as expected";
162           if (!verbose) customMessage = false;
163         } else if (type == "error" || type == "fail") {
164           ++failed;
165           message = "Test '" + name + "' failed";
166         } else if (type == "done") {
167           if (failed) {
168             type += " fail";
169             message = failed + " failure" + (failed > 1 ? "s" : "");
170           } else if (count < totalTests) {
171             failed = totalTests - count;
172             type += " fail";
173             message = failed + " failure" + (failed > 1 ? "s" : "");
174           } else {
175             type += " ok";
176             message = "All passed";
177           }
178           if (debug && debug.length) {
179             var bogusTests = totalTests - count;
180             message += " — " + bogusTests + " nonexistent test" +
181               (bogusTests > 1 ? "s" : "") + " requested by location.hash: " +
182               "`" + debug.join("`, `") + "`";
183           } else {
184             progressTotal.nodeValue = '';
185           }
186           customMessage = true; // Hack to avoid adding to output
187         }
188         if (verbose && !customMessage)  customMessage = message;
189         setStatus(message, type);
190         if (customMessage && customMessage.length > 0) {
191           addOutput(name, type, customMessage);
192         }
193       }
194     </script>
195   </body>
196 </html>