| <!doctype html> |
| <html lang="en-us"> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> |
| <link rel="stylesheet" href="../../../common/emscripten.css"/> |
| <link rel="stylesheet" href="../../../common/testing.css"/> |
| <title>sqlite3 tester: OpfsSAHPool Digest</title> |
| <style></style> |
| </head> |
| <body><h1 id='color-target'></h1> |
|
|
| <p> |
| This is a test app for the digest calculation of the OPFS |
| SAHPool VFS. It requires running it with a new database created using |
| v3.49.0 or older, then running it again with a newer version, then |
| again with 3.49.0 or older. |
| </p> |
| <div class='input-wrapper'> |
| <input type='checkbox' id='cb-log-reverse'> |
| <label for='cb-log-reverse'>Reverse log order?</label> |
| </div> |
| <div id='test-output'></div> |
| <script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| (function(){ |
| 'use strict'; |
| document.querySelector('h1').innerHTML = |
| document.querySelector('title').innerHTML; |
| const mapToString = (v)=>{ |
| switch(typeof v){ |
| case 'number': case 'string': case 'boolean': |
| case 'undefined': case 'bigint': |
| return ''+v; |
| default: break; |
| } |
| if(null===v) return 'null'; |
| if(v instanceof Error){ |
| v = { |
| message: v.message, |
| stack: v.stack, |
| errorClass: v.name |
| }; |
| } |
| return JSON.stringify(v,undefined,2); |
| }; |
| const normalizeArgs = (args)=>args.map(mapToString); |
| const logTarget = document.querySelector('#test-output'); |
| const logClass = function(cssClass,...args){ |
| const ln = document.createElement('div'); |
| if(cssClass){ |
| for(const c of (Array.isArray(cssClass) ? cssClass : [cssClass])){ |
| ln.classList.add(c); |
| } |
| } |
| ln.append(document.createTextNode(normalizeArgs(args).join(' '))); |
| logTarget.append(ln); |
| }; |
| const cbReverse = document.querySelector('#cb-log-reverse'); |
| |
| const cbReverseKey = 'tester1:cb-log-reverse'; |
| const cbReverseIt = ()=>{ |
| logTarget.classList[cbReverse.checked ? 'add' : 'remove']('reverse'); |
| |
| }; |
| cbReverse.addEventListener('change', cbReverseIt, true); |
| |
| |
| |
| cbReverseIt(); |
| |
| const log = (...args)=>{ |
| |
| logClass('',...args); |
| } |
| const warn = (...args)=>{ |
| console.warn(...args); |
| logClass('warning',...args); |
| } |
| const error = (...args)=>{ |
| console.error(...args); |
| logClass('error',...args); |
| }; |
| |
| const toss = (...args)=>{ |
| error(...args); |
| throw new Error(args.join(' ')); |
| }; |
| |
| const endOfWork = (passed=true)=>{ |
| const eH = document.querySelector('#color-target'); |
| const eT = document.querySelector('title'); |
| if(passed){ |
| log("End of work chain. If you made it this far, you win."); |
| eH.innerText = 'PASS: '+eH.innerText; |
| eH.classList.add('tests-pass'); |
| eT.innerText = 'PASS: '+eT.innerText; |
| }else{ |
| eH.innerText = 'FAIL: '+eH.innerText; |
| eH.classList.add('tests-fail'); |
| eT.innerText = 'FAIL: '+eT.innerText; |
| } |
| }; |
| |
| log("Running opfs-sahpool digest tests..."); |
| const W1 = new Worker('digest-worker.js?sqlite3.dir=../../../jswasm'); |
| W1.onmessage = function({data}){ |
| |
| switch(data.type){ |
| case 'log': |
| log('worker says:', ...data.payload); |
| break; |
| case 'error': |
| error('worker says:', ...data.payload); |
| endOfWork(false); |
| break; |
| case 'initialized': |
| log(data.workerId, ': Worker initialized',...data.payload); |
| break; |
| } |
| }; |
| })(); |
| </script> |
| </body> |
| </html> |
|
|