@@ -126,23 +126,29 @@ func TestCachedStore_CustomCacheSize(t *testing.T) {
126126 cachedStore , err := NewCachedStore (store , WithHeaderCacheSize (3 ))
127127 require .NoError (t , err )
128128
129- // Load 5 headers - LRU should evict oldest entries
130- for h := uint64 (1 ); h <= 5 ; h ++ {
131- _ , err = cachedStore .GetHeader (ctx , h )
129+ // Load header for height 1 and store its pointer.
130+ header1 , err := cachedStore .GetHeader (ctx , 1 )
131+ require .NoError (t , err )
132+ require .NotNil (t , header1 )
133+
134+ // Load 4 more headers to ensure the first one is evicted from the cache of size 3.
135+ for h := uint64 (2 ); h <= 5 ; h ++ {
136+ _ , err := cachedStore .GetHeader (ctx , h )
132137 require .NoError (t , err )
133138 }
134139
135- // Height 5 should still be cached (most recent)
140+ // Height 5 should be a cache hit.
136141 header5a , err := cachedStore .GetHeader (ctx , 5 )
137142 require .NoError (t , err )
138143 header5b , err := cachedStore .GetHeader (ctx , 5 )
139144 require .NoError (t , err )
140145 assert .Same (t , header5a , header5b , "height 5 should be cached" )
141146
142- // Height 1 was evicted, so fetching it again will get a new object
147+ // Height 1 was evicted, so fetching it again will get a new object from the underlying store.
143148 header1a , err := cachedStore .GetHeader (ctx , 1 )
144149 require .NoError (t , err )
145150 require .NotNil (t , header1a )
151+ assert .NotSame (t , header1 , header1a , "height 1 should have been evicted and refetched" )
146152}
147153
148154func TestCachedStore_Rollback_InvalidatesCache (t * testing.T ) {
0 commit comments