mirror of
https://github.com/ikawrakow/ik_llama.cpp.git
synced 2026-05-01 11:51:53 +00:00
Pull in full sqlite_modern_cpp repo for the license as it is not attached to source files
This commit is contained in:
102
common/sqlite_modern_cpp/tests/prepared_statment.cc
Normal file
102
common/sqlite_modern_cpp/tests/prepared_statment.cc
Normal file
@@ -0,0 +1,102 @@
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <sqlite_modern_cpp.h>
|
||||
#include <catch2/catch.hpp>
|
||||
using namespace sqlite;
|
||||
using namespace std;
|
||||
|
||||
TEST_CASE("prepared statements work", "[prepared_statement]") {
|
||||
database db(":memory:");
|
||||
|
||||
auto pps = db << "select ?"; // get a prepared parsed and ready statment
|
||||
|
||||
int test = 4;
|
||||
pps << test; // set a bound var
|
||||
|
||||
pps >> test; // execute statement
|
||||
|
||||
REQUIRE(test == 4);
|
||||
|
||||
pps << 4; // bind a rvalue
|
||||
pps++; // and execute
|
||||
|
||||
pps << 8 >> test;
|
||||
|
||||
REQUIRE(test == 8);
|
||||
|
||||
auto pps2 = db << "select 1,2"; // multiple extract test
|
||||
|
||||
pps2 >> [](int a, int b) {
|
||||
REQUIRE(a == 1);
|
||||
REQUIRE(b == 2);
|
||||
};
|
||||
|
||||
auto pps3 = db << "select ?,?,?";
|
||||
|
||||
test = 2;
|
||||
pps3 << 1 << test << 3 >> [](int a, int b, int c) {
|
||||
REQUIRE(a == 1);
|
||||
REQUIRE(b == 2);
|
||||
REQUIRE(c == 3);
|
||||
};
|
||||
|
||||
test = 1;
|
||||
db << "select ?,?" << test << 5 >> test; // and mow everything together
|
||||
REQUIRE(test == 1);
|
||||
|
||||
test = 2;
|
||||
db << "select ?,?,?" << 1 << test << 3 >> [](int a, int b, int c) {
|
||||
REQUIRE(a == 1);
|
||||
REQUIRE(b == 2);
|
||||
REQUIRE(c == 3);
|
||||
};
|
||||
|
||||
db << "select ?" << test; // noVal
|
||||
db << "select ?,?" << test << 1;
|
||||
db << "select ?,?" << 1 << test;
|
||||
db << "select ?,?" << 1 << 1;
|
||||
db << "select ?,?" << test << test;
|
||||
|
||||
db << "select ?" << test >> test; // lVal
|
||||
db << "select ?,?" << test << 1 >> test;
|
||||
db << "select ?,?" << 1 << test >> test;
|
||||
db << "select ?,?" << 1 << 1 >> test;
|
||||
db << "select ?,?" << test << test >> test;
|
||||
|
||||
int q = 0;
|
||||
test = 1;
|
||||
db << "select ?" << test >> [&](int t) { q = t; }; // rVal
|
||||
REQUIRE(q == 1);
|
||||
|
||||
db << "select ?,?" << test << 1 >> [&](int t, int p) { q = t + p; };
|
||||
db << "select ?,?" << 1 << test >> [&](int t, int p) { q = t + p; };
|
||||
db << "select ?,?" << 1 << 1 >> [&](int t, int p) { q = t + p; };
|
||||
db << "select ?,?" << test << test >> [&](int t, int p) { q = t + p; };
|
||||
|
||||
db << "select ?,?,?" << test << 1 << test; // mix
|
||||
db << "select ?,?,?" << 1 << test << 1;
|
||||
db << "select ?,?,?" << 1 << 1 << test;
|
||||
db << "select ?,?,?" << 1 << 1 << 1;
|
||||
db << "select ?,?,?" << test << test << test;
|
||||
|
||||
{
|
||||
auto pps4 = db << "select ?,?,?"; // reuse
|
||||
|
||||
(pps4 << test << 1 << test)++;
|
||||
(pps4 << 1 << test << 1)++;
|
||||
(pps4 << 1 << 1 << test)++;
|
||||
(pps4 << 1 << 1 << 1)++;
|
||||
(pps4 << test << test << test)++;
|
||||
}
|
||||
|
||||
{
|
||||
auto prep = db << "select ?";
|
||||
|
||||
prep << 5;
|
||||
prep.execute();
|
||||
prep << 6;
|
||||
prep.execute();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user