@@ -190,6 +190,51 @@ mod tests {
190190 assert ! ( !cache. has( & checksum) ) ;
191191 }
192192
193+ #[ test]
194+ fn hit_metric_works ( ) {
195+ let mut cache = PinnedMemoryCache :: new ( ) ;
196+
197+ // Create module
198+ let wasm = wat:: parse_str (
199+ r#"(module
200+ (type $t0 (func (param i32) (result i32)))
201+ (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32)
202+ local.get $p0
203+ i32.const 1
204+ i32.add)
205+ )"# ,
206+ )
207+ . unwrap ( ) ;
208+ let checksum = Checksum :: generate ( & wasm) ;
209+
210+ assert ! ( !cache. has( & checksum) ) ;
211+
212+ // Add
213+ let engine = make_compiling_engine ( TESTING_MEMORY_LIMIT ) ;
214+ let original = compile ( & engine, & wasm) . unwrap ( ) ;
215+ let module = CachedModule {
216+ module : original,
217+ engine : make_runtime_engine ( TESTING_MEMORY_LIMIT ) ,
218+ size_estimate : 0 ,
219+ } ;
220+ cache. store ( & checksum, module) . unwrap ( ) ;
221+
222+ let ( _checksum, module) = cache
223+ . iter ( )
224+ . find ( |( iter_checksum, _module) | * * iter_checksum == checksum)
225+ . unwrap ( ) ;
226+
227+ assert_eq ! ( module. hits, 0 ) ;
228+
229+ let _ = cache. load ( & checksum) . unwrap ( ) ;
230+ let ( _checksum, module) = cache
231+ . iter ( )
232+ . find ( |( iter_checksum, _module) | * * iter_checksum == checksum)
233+ . unwrap ( ) ;
234+
235+ assert_eq ! ( module. hits, 1 ) ;
236+ }
237+
193238 #[ test]
194239 fn len_works ( ) {
195240 let mut cache = PinnedMemoryCache :: new ( ) ;
0 commit comments