package cache import ( "bytes" "testing" ) func TestFifoChunkCache(t *testing.T) { var v []byte var e bool var cache Cacher = NewFifoCache(3) k0 := 0 k1 := 1 k2 := 2 k3 := 3 v0 := []byte{'0'} v1 := []byte{'1'} v2 := []byte{'2'} v3 := []byte{'3'} if cache.Len() != 0 { t.Fatal("Cache should be of size 0") } v, e = cache.Get(k0) if e { t.Fatal("There should not be any value") } cache.Set(k0, v0) cache.Set(k1, v1) cache.Set(k2, v2) if cache.Len() != 3 { t.Fatal("Cache should be of size 3") } v, e = cache.Get(k0) if !e { t.Fatal("Value should exist for k0") } if bytes.Compare(v, v0) != 0 { t.Fatal("Value for k0 does not match") } cache.Set(k3, v3) if cache.Len() != 3 { t.Fatal("Cache should still be of size 3") } v, e = cache.Get(k0) if e { t.Fatal("Value should not exist for k0") } v, e = cache.Get(k1) if !e { t.Fatal("Value should exist for k1") } if bytes.Compare(v, v1) != 0 { t.Fatal("Value for k1 does not match") } v, e = cache.Get(k2) if !e { t.Fatal("Value should exist for k2") } if bytes.Compare(v, v2) != 0 { t.Fatal("Value for k2 does not match") } v, e = cache.Get(k3) if !e { t.Fatal("Value should exist for k3") } if bytes.Compare(v, v3) != 0 { t.Fatal("Value for k3 does not match") } }