// +build !go1.3 package web import "testing" // These tests were pretty sketchtacular to start with, but they aren't even // guaranteed to pass with Go 1.3's sync.Pool. Let's keep them here for now; if // they start spuriously failing later we can delete them outright. func TestCaching(t *testing.T) { ch := make(chan string) st := makeStack(ch) cs1 := st.alloc() cs2 := st.alloc() if cs1 == cs2 { t.Fatal("cs1 and cs2 are the same") } st.release(cs2) cs3 := st.alloc() if cs2 != cs3 { t.Fatalf("Expected cs2 to equal cs3") } st.release(cs1) st.release(cs3) cs4 := st.alloc() cs5 := st.alloc() if cs4 != cs1 { t.Fatal("Expected cs4 to equal cs1") } if cs5 != cs3 { t.Fatal("Expected cs5 to equal cs3") } } func TestInvalidation(t *testing.T) { ch := make(chan string) st := makeStack(ch) cs1 := st.alloc() cs2 := st.alloc() st.release(cs1) st.invalidate() cs3 := st.alloc() if cs3 == cs1 { t.Fatal("Expected cs3 to be fresh, instead got cs1") } st.release(cs2) cs4 := st.alloc() if cs4 == cs2 { t.Fatal("Expected cs4 to be fresh, instead got cs2") } }