@@ -192,6 +192,33 @@ def test_open_uri(self):
192
192
cx .execute ('insert into test(id) values(1)' )
193
193
194
194
195
+ class StatementCacheTests (unittest .TestCase ):
196
+ def test_statement_cache (self ):
197
+ query = 'select * from sqlite_master'
198
+ cx = sqlite .connect (':memory:' )
199
+ cx .execute (query ) # cache miss
200
+ cx .execute (query ) # cache hit
201
+ cache = cx .statement_cache ()
202
+ info = cache .cache_info ()
203
+ self .assertEqual (info .hits , 1 )
204
+ self .assertEqual (info .misses , 1 )
205
+ self .assertEqual (info .maxsize , 100 )
206
+ self .assertEqual (info .currsize , 1 )
207
+
208
+ def test_statement_cache_maxsize (self ):
209
+ maxsize = 5
210
+ testsize = maxsize + 1
211
+ cx = sqlite .connect (':memory:' , cached_statements = maxsize )
212
+ for i in range (testsize ):
213
+ cx .execute (f'select { i } ' )
214
+ cache = cx .statement_cache ()
215
+ info = cache .cache_info ()
216
+ self .assertEqual (info .hits , 0 )
217
+ self .assertEqual (info .misses , testsize )
218
+ self .assertEqual (info .maxsize , maxsize )
219
+ self .assertEqual (info .currsize , maxsize )
220
+
221
+
195
222
class CursorTests (unittest .TestCase ):
196
223
def setUp (self ):
197
224
self .cx = sqlite .connect (":memory:" )
@@ -943,6 +970,7 @@ def suite():
943
970
ExtensionTests ,
944
971
ModuleTests ,
945
972
SqliteOnConflictTests ,
973
+ StatementCacheTests ,
946
974
ThreadTests ,
947
975
]
948
976
return unittest .TestSuite (
0 commit comments