Merge pull request #90 from lorneli/lru-dev

lru: add evict test
diff --git a/lru/lru_test.go b/lru/lru_test.go
index 98a2656..b7d9d8a 100644
--- a/lru/lru_test.go
+++ b/lru/lru_test.go
@@ -17,6 +17,7 @@
 package lru
 
 import (
+	"fmt"
 	"testing"
 )
 
@@ -71,3 +72,26 @@
 		t.Fatal("TestRemove returned a removed entry")
 	}
 }
+
+func TestEvict(t *testing.T) {
+	evictedKeys := make([]Key, 0)
+	onEvictedFun := func(key Key, value interface{}) {
+		evictedKeys = append(evictedKeys, key)
+	}
+
+	lru := New(20)
+	lru.OnEvicted = onEvictedFun
+	for i := 0; i < 22; i++ {
+		lru.Add(fmt.Sprintf("myKey%d", i), 1234)
+	}
+
+	if len(evictedKeys) != 2 {
+		t.Fatalf("got %d evicted keys; want 2", len(evictedKeys))
+	}
+	if evictedKeys[0] != Key("myKey0") {
+		t.Fatalf("got %v in first evicted key; want %s", evictedKeys[0], "myKey0")
+	}
+	if evictedKeys[1] != Key("myKey1") {
+		t.Fatalf("got %v in second evicted key; want %s", evictedKeys[1], "myKey1")
+	}
+}