--- /dev/null
+// Copyright (c) 2012-2016 The Revel Framework Authors, All rights reserved.
+// Revel Framework source code and usage is governed by a MIT style
+// license that can be found in the LICENSE file.
+
+package cache
+
+import (
+ "net"
+ "testing"
+ "time"
+)
+
+// These tests require memcached running on localhost:11211 (the default)
+const testServer = "localhost:11211"
+
+var newMemcachedCache = func(t *testing.T, defaultExpiration time.Duration) Cache {
+ c, err := net.Dial("tcp", testServer)
+ if err == nil {
+ if _, err = c.Write([]byte("flush_all\r\n")); err != nil {
+ t.Errorf("Write failed: %s", err)
+ }
+ _ = c.Close()
+ return NewMemcachedCache([]string{testServer}, defaultExpiration)
+ }
+ t.Errorf("couldn't connect to memcached on %s", testServer)
+ t.FailNow()
+ panic("")
+}
+
+func TestMemcachedCache_TypicalGetSet(t *testing.T) {
+ typicalGetSet(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_IncrDecr(t *testing.T) {
+ incrDecr(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_Expiration(t *testing.T) {
+ expiration(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_EmptyCache(t *testing.T) {
+ emptyCache(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_Replace(t *testing.T) {
+ testReplace(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_Add(t *testing.T) {
+ testAdd(t, newMemcachedCache)
+}
+
+func TestMemcachedCache_GetMulti(t *testing.T) {
+ testGetMulti(t, newMemcachedCache)
+}