]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add JS basic tests for sqlite3_value_blob_v2(). Simplify the sqlite3_value_text_v2...
authorstephan <stephan@noemail.net>
Tue, 1 Jul 2025 00:17:30 +0000 (00:17 +0000)
committerstephan <stephan@noemail.net>
Tue, 1 Jul 2025 00:17:30 +0000 (00:17 +0000)
FossilOrigin-Name: c371f92d5b42f2436d2dc92f244e11748fa8cf00e3818b613cce7ea0cfe09c87

ext/wasm/tester1.c-pp.js
manifest
manifest.uuid

index f2ab741954c07611e690880d0e50270681a8615b..366fcaa241bc9b33fc32777c9da3e473a32932ab 100644 (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)) );
-
-        next();
-        T.assert( !wasm.peekPtr(ppOut) )
-          .assert( 0===wasm.peek32(pnOut) );
-
-        next();
-        T.assert( wasm.peekPtr(ppOut) )
-          .assert( 8===wasm.peek32(pnOut) )
-          .assert( 'hi world' === 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( 2===wasm.peek32(pnOut) )
-          .assert( '#*' === wasm.cstrToJs(wasm.peekPtr(ppOut)) )
-        ;
+        next(); cmp('123');
+        next(); cmp(null);
+        next(); cmp('hi world');
+        next(); cmp( '#*' );
+
+      }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();
index 325216f67919ebe7f8958239ed24e0e46584e826..f10ea13c040e7e4ea2a34813887d89bbdf05bbd9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -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.
index db7bb42567c41a9f879d4cf2a10315c5114852c7..c035fc89b9cfa0bd0f728a42f0b835eec1e9e367 100644 (file)
@@ -1 +1 @@
-096c745f38c487c29948e4578fea61085f4a324b187d5b6e9ab32d7b14e503c3
+c371f92d5b42f2436d2dc92f244e11748fa8cf00e3818b613cce7ea0cfe09c87