| /* |
| 2022-05-22 |
| |
| The author disclaims copyright to this source code. In place of a |
| legal notice, here is a blessing: |
| |
| * May you do good and not evil. |
| * May you find forgiveness for yourself and forgive others. |
| * May you share freely, never taking more than you give. |
| |
| *********************************************************************** |
| |
| A basic test script for sqlite3-api.js. This file must be run in |
| main JS thread and sqlite3.js must have been loaded before it. |
| */ |
| import sqlite3InitModule from './jswasm/sqlite3-wasmfs.mjs'; |
| //console.log('sqlite3InitModule =',sqlite3InitModule); |
| const toss = function(...args){throw new Error(args.join(' '))}; |
| const log = console.log.bind(console), |
| warn = console.warn.bind(console), |
| error = console.error.bind(console); |
| |
| const stdout = log; |
| const stderr = error; |
| |
| const test1 = function(db){ |
| db.exec("create table if not exists t(a);") |
| .transaction(function(db){ |
| db.prepare("insert into t(a) values(?)") |
| .bind(new Date().getTime()) |
| .stepFinalize(); |
| stdout("Number of values in table t:", |
| db.selectValue("select count(*) from t")); |
| }); |
| }; |
| |
| const runTests = function(sqlite3){ |
| const capi = sqlite3.capi, |
| oo = sqlite3.oo1, |
| wasm = sqlite3.wasm; |
| stdout("Loaded module:",sqlite3); |
| stdout("Loaded sqlite3:",capi.sqlite3_libversion(), capi.sqlite3_sourceid()); |
| const persistentDir = capi.sqlite3_wasmfs_opfs_dir(); |
| if(persistentDir){ |
| stdout("Persistent storage dir:",persistentDir); |
| }else{ |
| stderr("No persistent storage available."); |
| } |
| const startTime = performance.now(); |
| let db; |
| try { |
| db = new oo.DB(persistentDir+'/foo.db'); |
| stdout("DB filename:",db.filename); |
| const banner1 = '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', |
| banner2 = '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'; |
| [ |
| test1 |
| ].forEach((f)=>{ |
| const n = performance.now(); |
| stdout(banner1,"Running",f.name+"()..."); |
| f(db, sqlite3); |
| stdout(banner2,f.name+"() took ",(performance.now() - n),"ms"); |
| }); |
| }finally{ |
| if(db) db.close(); |
| } |
| stdout("Total test time:",(performance.now() - startTime),"ms"); |
| }; |
| |
| sqlite3InitModule().then(runTests); |