aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/testing1.js
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2022-10-02 22:50:04 +0000
committerstephan <stephan@noemail.net>2022-10-02 22:50:04 +0000
commit510a9d1c6456a959f316353737f60e9300e600e4 (patch)
treefb38766274f2860c251c8cf0129fdba671e82c5a /ext/wasm/testing1.js
parent92ede964e109695fec79262f8ff007f0c9873187 (diff)
downloadsqlite-510a9d1c6456a959f316353737f60e9300e600e4.tar.gz
sqlite-510a9d1c6456a959f316353737f60e9300e600e4.zip
More cleanups in the UDF argument and result handling, in particular int64. Consolidate some duplicate int64/bigint range checking code. Expose the UDF low-level utilities (arg/result conversion) to client code. Add the sqlite3_context pointer to the JS-side UDF wrappers for API consistency.
FossilOrigin-Name: 10ab77af952abf09f93f342a9d07a3b133f2c4c0a3588df3390cd3a923cafae4
Diffstat (limited to 'ext/wasm/testing1.js')
-rw-r--r--ext/wasm/testing1.js29
1 files changed, 14 insertions, 15 deletions
diff --git a/ext/wasm/testing1.js b/ext/wasm/testing1.js
index 053fb6f27..7c20fdbbb 100644
--- a/ext/wasm/testing1.js
+++ b/ext/wasm/testing1.js
@@ -194,38 +194,37 @@
}/*testBasicSanity()*/;
const testUDF = function(db){
- db.createFunction("foo",function(a,b){return a+b});
+ db.createFunction("foo",(pCx,a,b)=>a+b);
T.assert(7===db.selectValue("select foo(3,4)")).
assert(5===db.selectValue("select foo(3,?)",2)).
assert(5===db.selectValue("select foo(?,?2)",[1,4])).
assert(5===db.selectValue("select foo($a,$b)",{$a:0,$b:5}));
db.createFunction("bar", {
arity: -1,
- callback: function(){
+ callback: function(pCx){
var rc = 0;
- for(let i = 0; i < arguments.length; ++i) rc += arguments[i];
+ for(let i = 1; i < arguments.length; ++i) rc += arguments[i];
return rc;
}
}).createFunction({
name: "asis",
- callback: (arg)=>arg
+ callback: (pCx,arg)=>arg
});
-
+
//log("Testing DB::selectValue() w/ UDF...");
T.assert(0===db.selectValue("select bar()")).
assert(1===db.selectValue("select bar(1)")).
assert(3===db.selectValue("select bar(1,2)")).
assert(-1===db.selectValue("select bar(1,2,-4)")).
- assert('hi'===db.selectValue("select asis('hi')"));
-
- T.assert('hi' === db.selectValue("select ?",'hi')).
- assert(null===db.selectValue("select null")).
- assert(null === db.selectValue("select ?",null)).
- assert(null === db.selectValue("select ?",[null])).
- assert(null === db.selectValue("select $a",{$a:null})).
+ assert('hi' === db.selectValue("select asis('hi')")).
+ assert('hi' === db.selectValue("select ?",'hi')).
+ assert(null === db.selectValue("select null")).
+ assert(null === db.selectValue("select asis(null)")).
+ assert(1 === db.selectValue("select ?",1)).
+ assert(2 === db.selectValue("select ?",[2])).
+ assert(3 === db.selectValue("select $a",{$a:3})).
assert(eqApprox(3.1,db.selectValue("select 3.0 + 0.1"))).
- assert(eqApprox(1.3,db.selectValue("select asis(1 + 0.3)")))
- ;
+ assert(eqApprox(1.3,db.selectValue("select asis(1 + 0.3)")));
//log("Testing binding and UDF propagation of blobs...");
let blobArg = new Uint8Array(2);
@@ -354,7 +353,7 @@
T.assert(g64(pMin) === minMaxI64[0]).
assert(minMaxI64[0] === db.selectValue("select ?",g64(pMin))).
assert(minMaxI64[1] === db.selectValue("select ?",g64(pMax)));
- const rxRange = /out of range for storing as int64/;
+ const rxRange = /too big/;
T.mustThrowMatching(()=>{db.prepare("select ?").bind(minMaxI64[0] - BigInt(1))},
rxRange).
mustThrowMatching(()=>{db.prepare("select ?").bind(minMaxI64[1] + BigInt(1))},