@@ -47,49 +47,51 @@ private record CountResult(long count);
4747
4848 private class AssetResult
4949 {
50- public string id { get ; set ; }
51- public string description { get ; set ; }
50+ public string id { get ; set ; } = "" ;
51+ public string description { get ; set ; } = "" ;
5252 public string ? make { get ; set ; }
5353 }
5454
5555 [ Fact ]
5656 public async Task QueryWithoutParams ( )
5757 {
58- var name = "Test User" ;
59- var age = 30 ;
58+ var id = Guid . NewGuid ( ) . ToString ( ) ;
59+ var description = "some desc" ;
60+ var make = "some make" ;
6061
6162 await db . Execute (
6263 "INSERT INTO assets(id, description, make) VALUES(?, ?, ?)" ,
63- [ Guid . NewGuid ( ) . ToString ( ) , name , age . ToString ( ) ]
64+ [ id , description , make ]
6465 ) ;
6566
6667 var result = await db . GetAll < AssetResult > ( "SELECT id, description, make FROM assets" ) ;
6768
6869 Assert . Single ( result ) ;
6970 var row = result . First ( ) ;
70- Assert . Equal ( name , row . description ) ;
71- Assert . Equal ( age . ToString ( ) , row . make ) ;
71+ Assert . Equal ( id , row . id ) ;
72+ Assert . Equal ( description , row . description ) ;
73+ Assert . Equal ( make , row . make ) ;
7274 }
7375
7476 [ Fact ]
7577 public async Task QueryWithParams ( )
7678 {
7779 var id = Guid . NewGuid ( ) . ToString ( ) ;
78- var name = "Test User " ;
79- var age = 30 ;
80+ var description = "some desc " ;
81+ var make = "some make" ;
8082
8183 await db . Execute (
8284 "INSERT INTO assets(id, description, make) VALUES(?, ?, ?)" ,
83- [ id , name , age . ToString ( ) ]
85+ [ id , description , make ]
8486 ) ;
8587
8688 var result = await db . GetAll < AssetResult > ( "SELECT id, description, make FROM assets WHERE id = ?" , [ id ] ) ;
8789
8890 Assert . Single ( result ) ;
8991 var row = result . First ( ) ;
9092 Assert . Equal ( id , row . id ) ;
91- Assert . Equal ( name , row . description ) ;
92- Assert . Equal ( age . ToString ( ) , row . make ) ;
93+ Assert . Equal ( description , row . description ) ;
94+ Assert . Equal ( make , row . make ) ;
9395 }
9496
9597 [ Fact ]
@@ -113,26 +115,26 @@ await db.Execute(
113115 }
114116
115117 [ Fact ]
116- public async Task QueriesRunOnAnotherThread ( )
118+ public async Task QueriesDoNotBlockCaller ( )
117119 {
118- int preCallThreadId = Environment . CurrentManagedThreadId ;
119- await db . GetAll ( "select * from assets" ) ;
120- int postCallThreadId = Environment . CurrentManagedThreadId ;
120+ var writeTask = db . WriteLock ( async ctx =>
121+ {
122+ // Simulate slow query
123+ await Task . Delay ( 200 ) ;
124+ } ) ;
121125
122- Assert . NotEqual ( preCallThreadId , postCallThreadId ) ;
126+ Assert . False ( writeTask . IsCompleted , "Write task with 200ms delay completed synchronously instead of yielding" ) ;
127+ await writeTask ;
123128 }
124129
125130 [ Fact ]
126131 public async Task FailedInsert ( )
127132 {
128- var name = "Test User" ;
129- var age = 30 ;
130-
131133 var exception = await Assert . ThrowsAsync < SqliteException > ( async ( ) =>
132134 {
133135 await db . Execute (
134136 "INSERT INTO assetsfail (id, description, make) VALUES(?, ?, ?)" ,
135- [ Guid . NewGuid ( ) . ToString ( ) , name , age . ToString ( ) ]
137+ [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
136138 ) ;
137139 } ) ;
138140
@@ -598,20 +600,14 @@ public async Task Watch_Cancelled()
598600 Assert . True ( await sem . WaitAsync ( 100 ) ) ;
599601 Assert . Equal ( 1 , callCount ) ;
600602
601- await db . Execute (
602- "insert into assets(id, description, make) values (?, ?, ?)" ,
603- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
604- ) ;
603+ await TestUtils . InsertRandomAsset ( db ) ;
605604
606605 Assert . True ( await sem . WaitAsync ( 100 ) ) ;
607606 Assert . Equal ( 2 , callCount ) ;
608607
609608 testCts . Cancel ( ) ;
610609
611- await db . Execute (
612- "insert into assets(id, description, make) values (?, ?, ?)" ,
613- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
614- ) ;
610+ await TestUtils . InsertRandomAsset ( db ) ;
615611
616612 // This is failing
617613 Assert . False ( await sem . WaitAsync ( 100 ) ) ;
@@ -644,20 +640,14 @@ void RunQuery(CancellationTokenSource cts, SemaphoreSlim sem)
644640 RunQuery ( ctsAlwaysRunning , semAlwaysRunning ) ;
645641 RunQuery ( ctsCancelled , semCancelled ) ;
646642
647- await db . Execute (
648- "insert into assets(id, description, make) values (?, ?, ?)" ,
649- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
650- ) ;
643+ await TestUtils . InsertRandomAsset ( db ) ;
651644 await Task . WhenAll ( semAlwaysRunning . WaitAsync ( ) , semCancelled . WaitAsync ( ) ) ;
652645 Assert . Equal ( 2 , callCount ) ;
653646
654647 // Close one query
655648 ctsCancelled . Cancel ( ) ;
656649
657- await db . Execute (
658- "insert into assets(id, description, make) values (?, ?, ?)" ,
659- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
660- ) ;
650+ await TestUtils . InsertRandomAsset ( db ) ;
661651
662652 // Ensure nothing received from cancelled result
663653 Assert . False ( await semCancelled . WaitAsync ( 100 ) ) ;
@@ -668,10 +658,7 @@ await db.Execute(
668658 // Sanity check
669659 ctsAlwaysRunning . Cancel ( ) ;
670660
671- await db . Execute (
672- "insert into assets(id, description, make) values (?, ?, ?)" ,
673- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
674- ) ;
661+ await TestUtils . InsertRandomAsset ( db ) ;
675662
676663 Assert . False ( await semAlwaysRunning . WaitAsync ( 100 ) ) ;
677664 Assert . False ( await semCancelled . WaitAsync ( 100 ) ) ;
@@ -718,10 +705,7 @@ public async Task Watch_SchemaReset()
718705
719706 for ( int i = 0 ; i < 3 ; i ++ )
720707 {
721- await db . Execute (
722- "insert into assets(id, description, make) values (?, ?, ?)" ,
723- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
724- ) ;
708+ await TestUtils . InsertRandomAsset ( db ) ;
725709 Assert . True ( await sem . WaitAsync ( 100 ) ) ;
726710 Assert . Equal ( i + 1 , lastCount ) ;
727711 }
@@ -774,7 +758,7 @@ public async Task Attributes_ColumnAliasing()
774758 var createdAt = DateTimeOffset . Now ;
775759
776760 await db . Execute (
777- "INSERT INTO todos(id, description, completed, created_at, list_id ) VALUES(?, ?, ?, ?, uuid() )" ,
761+ "INSERT INTO todos (id, description, completed, created_at) VALUES (?, ?, ?, ?)" ,
778762 [ id , description , completed , createdAt ]
779763 ) ;
780764
@@ -811,14 +795,7 @@ public async Task IndexesCreatedOnTable()
811795 public async Task Watch_TriggerImmediately_True ( )
812796 {
813797 // Insert some data
814- await db . ExecuteBatch (
815- "insert into assets(id, description, make) values (?, ?, ?)" ,
816- [
817- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
818- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
819- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
820- ]
821- ) ;
798+ await TestUtils . InsertRandomAssets ( db , 3 ) ;
822799
823800 var listener = db . Watch < CountResult > (
824801 "SELECT COUNT(*) AS count FROM assets" ,
@@ -851,14 +828,7 @@ public async Task Watch_TriggerImmediately_False()
851828 Assert . Equal ( timeout , await Task . WhenAny ( moveNext , timeout ) ) ;
852829
853830 // Trigger the watch to run
854- await db . ExecuteBatch (
855- "insert into assets(id, description, make) values (?, ?, ?)" ,
856- [
857- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
858- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
859- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
860- ]
861- ) ;
831+ await TestUtils . InsertRandomAssets ( db , 3 ) ;
862832
863833 timeout = Task . Delay ( 500 ) ;
864834 Assert . NotEqual ( timeout , await Task . WhenAny ( moveNext , timeout ) ) ;
@@ -880,21 +850,15 @@ public async Task Watch_CancelsOnTokenCancellation()
880850 null ,
881851 new ( ) { Signal = cts . Token , TriggerImmediately = false } ) ;
882852
853+ // Sem == received result
854+ // TCS == received cancellation
883855 _ = Task . Run ( async ( ) =>
884856 {
885857 await foreach ( var _ in listener ) { sem . Release ( ) ; }
886858 tcs . TrySetResult ( true ) ;
887859 } ) ;
888860
889- await db . ExecuteBatch (
890- "insert into assets(id, description, make) values (?, ?, ?)" ,
891- [
892- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
893- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
894- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ] ,
895- ]
896- ) ;
897-
861+ await TestUtils . InsertRandomAssets ( db , 3 ) ;
898862 Assert . True ( await sem . WaitAsync ( 200 ) ) ;
899863
900864 cts . Cancel ( ) ;
0 commit comments