index.html.tpl (2734B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta name="google" content="notranslate" /> 5 <style> 6 body { 7 background: white; 8 color: black; 9 } 10 .test p { 11 margin: 1px; 12 } 13 .test { 14 font-family: monospace; 15 white-space: pre; 16 } 17 .err { 18 background: red; 19 color: white; 20 } 21 .passed { 22 background: green; 23 color: white; 24 } 25 </style> 26 </head> 27 <body> 28 <h1></h1> 29 <section class="test" id="test-res"></section> 30 <script> 31 var performance; 32 if (typeof performance !== 'object') { 33 performance = { 34 mark: function(s) { this[s] = new Date() }, 35 measure: function(_t, s1, s2) { this.t = this[s2] - this[s1] }, 36 getEntriesByName: function() { return [ { duration: this.t } ] } 37 }; 38 } 39 40 var Module = { preRun: function() { performance.mark('bench_start') } }; 41 42 function runTest(tname) { 43 var xhr, expected, hn, idx = 0, passed = true; 44 45 function outputReceived(e) { 46 var found = e.data; 47 var p = document.createElement('p'); 48 if (found !== expected[idx++]) { 49 p.className = 'err'; 50 passed = false; 51 } 52 p.appendChild(document.createTextNode(found)); 53 document.getElementById('test-res').appendChild(p); 54 if (idx >= expected.length) { 55 if (passed) { 56 performance.mark('bench_end') 57 performance.measure('bench', 'bench_start', 'bench_end'); 58 var duration = Math.round(performance.getEntriesByName('bench')[0].duration); 59 hn.appendChild(document.createTextNode(' - PASSED (time: ' + duration + ' ms)')); 60 hn.className = 'passed'; 61 } else { 62 hn.appendChild(document.createTextNode(' - FAILED')); 63 hn.className = 'err'; 64 } 65 } 66 } 67 68 hn = document.getElementsByTagName('h1')[0]; 69 hn.appendChild(document.createTextNode('Test: ' + tname)); 70 71 try { 72 xhr = new ActiveXObject('Microsoft.XMLHTTP'); 73 } catch (e) { 74 xhr = new XMLHttpRequest(); 75 } 76 xhr.open('GET', tname + '.exp'); 77 xhr.onreadystatechange = function() { 78 if (xhr.readyState != 4 || 79 (xhr.status != 200 && xhr.status != 302 && xhr.status != 0)) { 80 return; 81 } 82 expected = xhr.responseText.split('\n'); 83 if (expected.length > 0 && expected[expected.length - 1] === '') { 84 expected.pop(); 85 } 86 expected.push('--- SUCCESS ---'); 87 window.addEventListener('test-output', outputReceived, false); 88 var s = document.getElementsByTagName('script')[0]; 89 var st = document.createElement('script'); 90 st.src = tname + '.js'; 91 s.parentNode.insertBefore(st, s); 92 } 93 xhr.send(null); 94 } 95 runTest('{{tname}}'); 96 </script> 97 </body> 98 </html>