1
1
@Tags (['ffi' ])
2
2
import 'package:sqlite3/sqlite3.dart' ;
3
+ import 'package:sqlite3/src/ffi/implementation.dart' ;
3
4
import 'package:test/test.dart' ;
4
5
5
6
import '../common/prepared_statement.dart' ;
@@ -9,4 +10,33 @@ void main() {
9
10
final hasReturning = version.versionNumber > 3035000 ;
10
11
11
12
testPreparedStatements (() => sqlite3, supportsReturning: hasReturning);
13
+
14
+ group ('deallocates statement arguments' , () {
15
+ late Database database;
16
+
17
+ setUp (() => database = sqlite3.openInMemory ());
18
+ tearDown (() => database.dispose ());
19
+
20
+ test ('after binding different args' , () {
21
+ final stmt = database.prepare ('SELECT ?;' );
22
+ stmt.execute (['this needs to be allocated and copied into ffi buffer' ]);
23
+ expect (
24
+ (stmt as FfiStatementImplementation ).ffiStatement.allocatedArguments,
25
+ isNotEmpty);
26
+
27
+ stmt.execute ([3 ]);
28
+ expect (stmt.ffiStatement.allocatedArguments, isEmpty);
29
+ });
30
+
31
+ test ('after disposing statement' , () {
32
+ final stmt = database.prepare ('SELECT ?;' );
33
+ stmt.execute (['this needs to be allocated and copied into ffi buffer' ]);
34
+ expect (
35
+ (stmt as FfiStatementImplementation ).ffiStatement.allocatedArguments,
36
+ isNotEmpty);
37
+
38
+ stmt.dispose ();
39
+ expect (stmt.ffiStatement.allocatedArguments, isEmpty);
40
+ });
41
+ });
12
42
}
0 commit comments