mirror of
https://github.com/tursodatabase/libsql.git
synced 2024-11-23 15:36:17 +00:00
71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
/*
|
|
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);
|