1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Add JS basic tests for sqlite3_value_blob_v2(). Simplify the sqlite3_value_text_v2() tests a bit.

FossilOrigin-Name: c371f92d5b42f2436d2dc92f244e11748fa8cf00e3818b613cce7ea0cfe09c87
This commit is contained in:
stephan
2025-07-01 00:17:30 +00:00
parent 3cd904cc97
commit 72f2dd0673
3 changed files with 70 additions and 25 deletions

View File

@ -3363,27 +3363,72 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
T.assert( 0===rc );
return sv;
};
next();
T.assert( wasm.peekPtr(ppOut) )
.assert( 3===wasm.peek32(pnOut) )
.assert( '123' === wasm.cstrToJs(wasm.peekPtr(ppOut)) );
const cmp = function(expect){
const blob = wasm.peekPtr(ppOut);
const len = wasm.peek32(pnOut);
//log("blob=",wasm.cstrToJs(blob));
const str = wasm.cstrToJs(blob);
if( !blob ){
T.assert( null===expect )
.assert( 0===len );
return;
}
T.assert(len === expect.length,
"Lengths don't match: got ["+str
+"] expected ["+expect+"]")
.assert( str===expect, "String mismatch: got ["
+str+"] expected ["+expect+"]");
};
next();
T.assert( !wasm.peekPtr(ppOut) )
.assert( 0===wasm.peek32(pnOut) );
next(); cmp('123');
next(); cmp(null);
next(); cmp('hi world');
next(); cmp( '#*' );
next();
T.assert( wasm.peekPtr(ppOut) )
.assert( 8===wasm.peek32(pnOut) )
.assert( 'hi world' === wasm.cstrToJs(wasm.peekPtr(ppOut)) )
;
next();
T.assert( wasm.peekPtr(ppOut) )
.assert( 2===wasm.peek32(pnOut) )
.assert( '#*' === wasm.cstrToJs(wasm.peekPtr(ppOut)) )
;
}finally{
if( q ) q.finalize();
db.close();
P.restore(stack);
}
})
////////////////////////////////////////////////////////////////////
.t("value_blob_v2() and friends...", function(sqlite3){
const db = new sqlite3.oo1.DB();
db.exec(["create table t(a,b); insert into t(a,b) ",
"values(1,123),(2,null),(3,'hi'),(4,X'23002A')"]);
const P = wasm.pstack;
const stack = P.pointer;
let q;
try {
let sv, rc;
q = db.prepare("select a, b from t order by a");
let [ppOut,pnOut] = P.allocPtr(2);
const next = ()=>{
T.assert( q.step() );
sv = capi.sqlite3_column_value(q, 1);
T.assert( sv );
wasm.pokePtr(ppOut, 0);
wasm.poke32(pnOut, 0);
rc = capi.sqlite3_value_blob_v2(sv, ppOut, pnOut);
T.assert( 0===rc );
return sv;
};
const cmp = function(byteList){
const blob = wasm.peekPtr(ppOut);
const len = wasm.peek32(pnOut);
//log("blob=",wasm.cstrToJs(blob));
T.assert(len === byteList.length, "Lengths don't match");
for( let i = 0; i < len; ++i ){
T.assert( byteList[i] === wasm.peek8(blob+i),
"mismatch at offset "+i+": "+byteList[i]
+"!=="+wasm.peek8(blob+i) );
}
};
next(); cmp([49,50,51]); // 123
next(); cmp([]); // null
next(); cmp([104,105]); // "hi"
next(); cmp([0x23, 0, 0x2a]); // X'23002A'
}finally{
if( q ) q.finalize();
db.close();

View File

@ -1,5 +1,5 @@
C Add\sJS\sbindings\sfor\ssqlite3_value_text/blob_v2()\sand\sadd\sbasic\sJS\stests\sfor\stext_v2().
D 2025-06-30T23:49:21.336
C Add\sJS\sbasic\stests\sfor\ssqlite3_value_blob_v2().\sSimplify\sthe\ssqlite3_value_text_v2()\stests\sa\sbit.
D 2025-07-01T00:17:30.792
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@ -698,7 +698,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555
F ext/wasm/test-opfs-vfs.js 1618670e466f424aa289859fe0ec8ded223e42e9e69b5c851f809baaaca1a00c
F ext/wasm/tester1-worker.html ebc4b820a128963afce328ecf63ab200bd923309eb939f4110510ab449e9814c
F ext/wasm/tester1.c-pp.html 1c1bc78b858af2019e663b1a31e76657b73dc24bede28ca92fbe917c3a972af2
F ext/wasm/tester1.c-pp.js 0a8fe1b5e2a062e46b95fd935e77204d84e88e170900b7bf3ca9086024319ee0
F ext/wasm/tester1.c-pp.js 95caa21e4e181dea9fd374995c5ea6b46ac05d67144156b9f91edeefcc03bb0d
F ext/wasm/tests/opfs/concurrency/index.html 657578a6e9ce1e9b8be951549ed93a6a471f4520a99e5b545928668f4285fb5e
F ext/wasm/tests/opfs/concurrency/test.js d08889a5bb6e61937d0b8cbb78c9efbefbf65ad09f510589c779b7cc6a803a88
F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2
@ -2208,8 +2208,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P b0b1b4ccb9b135a6feab73113a31064bac0895464ae36e936fcdcffeaa0933d3
R 50a83fb9ab6954fbcc4d8e5da68fad90
P 096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3
R a348413e2332440fa5436b61dbafeeec
U stephan
Z 9bc76b16b374dbacf6d4aa0db272e99c
Z f65c15bdf2e21882c134b29d5cffc932
# Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3
c371f92d5b42f2436d2dc92f244e11748fa8cf00e3818b613cce7ea0cfe09c87