1402da26cSstephan<!doctype html>
2402da26cSstephan<html lang="en-us">
3402da26cSstephan  <head>
4402da26cSstephan    <meta charset="utf-8">
5402da26cSstephan    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6402da26cSstephan    <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
7402da26cSstephan    <link rel="stylesheet" href="../common/emscripten.css"/>
8402da26cSstephan    <link rel="stylesheet" href="../common/testing.css"/>
9402da26cSstephan    <title>sqlite3 tester #1 (Worker thread)</title>
10402da26cSstephan    <style>
11402da26cSstephan      body {
12402da26cSstephan          font-family: monospace;
13402da26cSstephan      }
14402da26cSstephan    </style>
15402da26cSstephan  </head>
16402da26cSstephan  <body>
17*49048b14Sstephan    <h1 id='color-target'>sqlite3 WASM/JS tester #1 (Worker thread)</h1>
1898147dd5Sstephan    <div>See <a href='tester1.html' target='tester1.html'>tester1.html</a>
1998147dd5Sstephan      for the UI-thread variant.</div>
2098147dd5Sstephan    <div class='input-wrapper'>
21d3c8f2acSstephan      <input type='checkbox' id='cb-log-reverse'>
2298147dd5Sstephan      <label for='cb-log-reverse'>Reverse log order?</label>
2398147dd5Sstephan    </div>
24d85d0839Sstephan    <div id='test-output'></div>
25402da26cSstephan    <script>(function(){
26d85d0839Sstephan      const logTarget = document.querySelector('#test-output');
27402da26cSstephan      const logHtml = function(cssClass,...args){
28402da26cSstephan        const ln = document.createElement('div');
29848d27adSstephan        if(cssClass){
30848d27adSstephan          for(const c of (Array.isArray(cssClass) ? cssClass : [cssClass])){
31848d27adSstephan            ln.classList.add(c);
32848d27adSstephan          }
33848d27adSstephan        }
34402da26cSstephan        ln.append(document.createTextNode(args.join(' ')));
35d85d0839Sstephan        logTarget.append(ln);
36402da26cSstephan      };
3798147dd5Sstephan      const cbReverse = document.querySelector('#cb-log-reverse');
3898147dd5Sstephan      const cbReverseIt = ()=>{
3998147dd5Sstephan        logTarget.classList[cbReverse.checked ? 'add' : 'remove']('reverse');
4098147dd5Sstephan      };
4198147dd5Sstephan      cbReverse.addEventListener('change',cbReverseIt,true);
4298147dd5Sstephan      cbReverseIt();
43cd0df83cSstephan      const w = new Worker("tester1.js?sqlite3.dir=jswasm");
44402da26cSstephan      w.onmessage = function({data}){
45402da26cSstephan        switch(data.type){
46402da26cSstephan            case 'log':
47402da26cSstephan              logHtml(data.payload.cssClass, ...data.payload.args);
48402da26cSstephan              break;
49*49048b14Sstephan            case 'error':
50*49048b14Sstephan              logHtml('error', ...data.payload.args);
51*49048b14Sstephan              break;
52*49048b14Sstephan            case 'test-result':
53*49048b14Sstephan              document.querySelector('#color-target').classList.add(
54*49048b14Sstephan                data.payload.pass ? 'tests-pass' : 'tests-fail'
55*49048b14Sstephan              );
56*49048b14Sstephan              break;
57402da26cSstephan            default:
58402da26cSstephan              logHtml('error',"Unhandled message:",data.type);
59402da26cSstephan        };
60402da26cSstephan      };
61402da26cSstephan    })();</script>
62402da26cSstephan  </body>
63402da26cSstephan</html>
64