@@ -11,8 +11,51 @@ fn test_sqlite_vss() {
1111 conn. execute ( "CREATE VIRTUAL TABLE IF NOT EXISTS vss_demo USING vss0(a(2))" , ( ) )
1212 . unwrap ( ) ;
1313 conn. execute ( "INSERT INTO vss_demo(rowid, a) VALUES (1, '[1.0, 2.0]'), (2, '[2.0, 2.0]'), (3, '[3.0, 2.0]')" , ( ) ) . unwrap ( ) ;
14- conn. execute (
15- "SELECT rowid, distance FROM vss_demo WHERE vss_search(?, ?) LIMIT 3" ,
16- params ! [ 1.0 , 2.0 ] ,
17- ) . unwrap ( ) ;
18- }
14+
15+ let mut stmt = conn. prepare ( "SELECT rowid, distance FROM vss_demo WHERE vss_search(?, ?) LIMIT 3" ) . unwrap ( ) ;
16+ let mut rows = stmt. query ( params ! [ 1.0 , 2.0 ] ) . unwrap ( ) ;
17+ while let Some ( row) = rows. next ( ) . unwrap ( ) {
18+ let rowid: i32 = row. get ( 0 ) . unwrap ( ) ;
19+ let distance: f64 = row. get ( 1 ) . unwrap ( ) ;
20+ println ! ( "Row ID: {}, Distance: {}" , rowid, distance) ;
21+ }
22+ }
23+
24+ #[ test]
25+ fn test_sqlite_math ( ) {
26+ let conn = Connection :: open_in_memory ( ) . unwrap ( ) ;
27+ unsafe {
28+ let _guard = LoadExtensionGuard :: new ( & conn) . unwrap ( ) ;
29+ conn. load_extension ( "src/math0" , None ) . unwrap ( ) ;
30+ }
31+
32+ let result: f64 = conn. query_row ( "SELECT sin(PI() / 2)" , [ ] , |row| row. get ( 0 ) ) . unwrap ( ) ;
33+ assert ! ( ( result - 1.0 ) . abs( ) < 1e-9 , "Expected sin(PI/2) to be close to 1.0" ) ;
34+ }
35+
36+ #[ test]
37+ fn test_sqlite_fuzzy ( ) {
38+ let conn = Connection :: open_in_memory ( ) . unwrap ( ) ;
39+ unsafe {
40+ let _guard = LoadExtensionGuard :: new ( & conn) . unwrap ( ) ;
41+ conn. load_extension ( "src/fuzzy0" , None ) . unwrap ( ) ;
42+ }
43+
44+ let result: i32 = conn. query_row ( "SELECT levenshtein('kitten', 'sitting')" , [ ] , |row| row. get ( 0 ) ) . unwrap ( ) ;
45+ assert_eq ! ( result, 3 , "Expected levenshtein distance between 'kitten' and 'sitting' to be 3" ) ;
46+ }
47+
48+ #[ test]
49+ fn test_sqlite_stats ( ) {
50+ let conn = Connection :: open_in_memory ( ) . unwrap ( ) ;
51+ unsafe {
52+ let _guard = LoadExtensionGuard :: new ( & conn) . unwrap ( ) ;
53+ conn. load_extension ( "src/stats0" , None ) . unwrap ( ) ;
54+ }
55+
56+ conn. execute ( "CREATE TABLE data(value REAL)" , ( ) ) . unwrap ( ) ;
57+ conn. execute ( "INSERT INTO data(value) VALUES (1.0), (2.0), (3.0), (4.0), (5.0)" , ( ) ) . unwrap ( ) ;
58+
59+ let avg: f64 = conn. query_row ( "SELECT avg(value) FROM data" , [ ] , |row| row. get ( 0 ) ) . unwrap ( ) ;
60+ assert ! ( ( avg - 3.0 ) . abs( ) < 1e-9 , "Expected average of values 1.0 to 5.0 to be 3.0" ) ;
61+ }
0 commit comments