@@ -6,7 +6,7 @@ use alloc::vec::Vec;
66use core:: { ffi:: c_char, mem} ;
77use crsql_bundle:: test_exports;
88use crsql_bundle:: test_exports:: tableinfo:: TableInfo ;
9- use sqlite:: Connection ;
9+ use sqlite:: { Connection , ResultCode } ;
1010use sqlite_nostd as sqlite;
1111
1212// Unfortunate circumstance that we still have some C code that requires this argument
@@ -360,11 +360,44 @@ fn test_leak_condition() {
360360 . expect ( "inserted into foo" ) ;
361361}
362362
363+ fn test_site_id_initialization ( ) {
364+ {
365+ let db = crate :: opendb ( ) . expect ( "Opened DB" ) ;
366+ let raw_db = db. db . db ;
367+ let site_id = select_site_id ( raw_db) . expect ( "selected site id" ) ;
368+ assert_eq ! ( site_id. len( ) , 16 ) ;
369+ raw_db. exec_safe ( "DELETE FROM crsql_site_id;" ) . expect ( "deleted site id" ) ;
370+ }
371+
372+ {
373+ let db = crate :: opendb ( ) . expect ( "Opened DB" ) ;
374+ let raw_db = db. db . db ;
375+ let site_id = select_site_id ( raw_db) . expect ( "selected site id" ) ;
376+ assert_eq ! ( site_id. len( ) , 16 ) ;
377+ raw_db. exec_safe ( "DROP TABLE crsql_site_id;" ) . expect ( "dropped crsql_site_id" ) ;
378+ }
379+
380+ {
381+ let db = crate :: opendb ( ) . expect ( "Opened DB" ) ;
382+ let raw_db = db. db . db ;
383+ let site_id = select_site_id ( raw_db) . expect ( "selected site id" ) ;
384+ assert_eq ! ( site_id. len( ) , 16 ) ;
385+ }
386+ }
387+
388+ fn select_site_id ( db : * mut sqlite:: sqlite3 ) -> Result < Vec < u8 > , ResultCode > {
389+ let site_id_stmt = db. prepare_v2 ( "SELECT crsql_site_id()" ) ?;
390+ site_id_stmt. step ( ) ?;
391+ let site_id = site_id_stmt. column_blob ( 0 ) ?. to_vec ( ) ;
392+ Ok ( site_id)
393+ }
394+
363395pub fn run_suite ( ) {
364396 libc_print:: libc_println!( "Running tableinfo suite" ) ;
365397 test_ensure_table_infos_are_up_to_date ( ) ;
366398 test_pull_table_info ( ) ;
367399 test_is_table_compatible ( ) ;
368400 test_create_clock_table_from_table_info ( ) ;
369401 test_leak_condition ( ) ;
402+ test_site_id_initialization ( ) ;
370403}
0 commit comments