Skip to content

Commit

Permalink
Added new SetAddMany and more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mrz1836 committed Nov 7, 2019
1 parent 93ca890 commit 3dc9b93
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 23 deletions.
29 changes: 27 additions & 2 deletions cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,7 @@ func HashMapSetExp(hashName string, pairs [][2]interface{}, ttl time.Duration, d
return linkDependencies(conn, hashName, dependencies...)
}

// SetAdd will add the member to the Set and link a reference to each dependency
// for the entire Set
// SetAdd will add the member to the Set and link a reference to each dependency for the entire Set
func SetAdd(setName, member interface{}, dependencies ...string) (err error) {

// Create a new connection and defer closing
Expand All @@ -316,6 +315,32 @@ func SetAdd(setName, member interface{}, dependencies ...string) (err error) {
return linkDependencies(conn, setName, dependencies...)
}

// SetAddMany will add many values to an existing set
func SetAddMany(setName string, members ...interface{}) (err error) {

// Create a new connection and defer closing
conn := GetConnection()
defer func() {
_ = conn.Close()
}()

// Create the arguments
args := make([]interface{}, len(members)+1)
args[0] = setName

// Loop members
for i, key := range members {
args[i+1] = key
}

// Fire the delete
_, err = conn.Do(addToSetCommand, args...)
return

// Link and return the error //todo: add dependencies back?
//return linkDependencies(conn, setName, dependencies...)
}

// SetIsMember returns if the member is part of the set
func SetIsMember(set, member interface{}) (bool, error) {

Expand Down
133 changes: 112 additions & 21 deletions cache_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ func TestSet(t *testing.T) {
}

// Check the set via a Get
val, err := Get("test-set")
var val string
val, err = Get("test-set")
if val != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand All @@ -79,7 +80,8 @@ func TestSetExp(t *testing.T) {
}

// Check the set
val, err := Get("test-set-exp")
var val string
val, err = Get("test-set-exp")
if val != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand Down Expand Up @@ -140,7 +142,8 @@ func TestHashSet(t *testing.T) {
}

// Get the value
val, err := HashGet("test-hash-name", "test-hash-key")
var val string
val, err = HashGet("test-hash-name", "test-hash-key")
if err != nil {
t.Fatal(err.Error())
} else if val != "my-cache-value" {
Expand Down Expand Up @@ -180,7 +183,8 @@ func TestHashGet(t *testing.T) {
}

// Get the value
val, err := HashGet("test-hash-name", "test-hash-key")
var val string
val, err = HashGet("test-hash-name", "test-hash-key")
if err != nil {
t.Fatal(err.Error())
} else if val != "my-cache-value" {
Expand Down Expand Up @@ -229,15 +233,17 @@ func TestHashMapSet(t *testing.T) {
t.Fatal(err.Error())
}

val, err := HashGet("test-hash-map-set", "pair-1")
var val string
val, err = HashGet("test-hash-map-set", "pair-1")
if err != nil {
t.Fatal(err.Error())
} else if val != "pair-1-value" {
t.Fatal("expected value was wrong")
}

// Get a key in the map
values, err := HashMapGet("test-hash-map-set", "pair-1", "pair-2")
var values []string
values, err = HashMapGet("test-hash-map-set", "pair-1", "pair-2")
if err != nil {
t.Fatal(err.Error())
}
Expand Down Expand Up @@ -303,7 +309,8 @@ func TestHashMapSetExp(t *testing.T) {
t.Fatal(err.Error())
}

val, err := HashGet("test-hash-map-set-expire", "pair-1")
var val string
val, err = HashGet("test-hash-map-set-expire", "pair-1")
if err != nil {
t.Fatal(err.Error())
} else if val != "pair-1-value" {
Expand Down Expand Up @@ -359,7 +366,8 @@ func TestGet(t *testing.T) {
}

// Get the value
val, err := Get("test-get")
var val string
val, err = Get("test-get")
if val != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand Down Expand Up @@ -399,7 +407,8 @@ func TestGetBytes(t *testing.T) {
}

// Get the value
val, err := GetBytes("test-get-bytes")
var val []byte
val, err = GetBytes("test-get-bytes")
if string(val) != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand Down Expand Up @@ -439,7 +448,8 @@ func TestGetAllKeys(t *testing.T) {
}

// Get the value
keys, err := GetAllKeys()
var keys []string
keys, err = GetAllKeys()
if err != nil {
t.Fatal(err.Error())
}
Expand Down Expand Up @@ -482,7 +492,8 @@ func TestExists(t *testing.T) {
}

// Check the set / exists
exists, err := Exists("test-exists")
var exists bool
exists, err = Exists("test-exists")
if !exists {
t.Fatal("expected key to exist")
}
Expand Down Expand Up @@ -522,7 +533,8 @@ func TestExpire(t *testing.T) {
}

// Check the set
val, err := Get("test-set-expire")
var val string
val, err = Get("test-set-expire")
if val != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand Down Expand Up @@ -578,7 +590,8 @@ func TestDestroyCache(t *testing.T) {
}

// Check the set
val, err := Get("test-destroy")
var val string
val, err = Get("test-destroy")
if val != "my-value" {
t.Fatalf("expected value: %s, got: %s", "my-value", val)
}
Expand Down Expand Up @@ -690,7 +703,8 @@ func TestDependencyManagement(t *testing.T) {
}

// Test for dependent key 1
ok, err := SetIsMember("depend:dependent-1", "test-set-dep")
var ok bool
ok, err = SetIsMember("depend:dependent-1", "test-set-dep")
if err != nil {
t.Fatal(err.Error())
} else if !ok {
Expand All @@ -706,15 +720,17 @@ func TestDependencyManagement(t *testing.T) {
}

// Kill a dependent key
total, err := Delete("dependent-1")
var total int
total, err = Delete("dependent-1")
if err != nil {
t.Fatal(err.Error())
} else if total != 2 {
t.Fatal("expected 2 keys to be removed", total)
}

// Test for main key
found, err := Exists("test-set-dep")
var found bool
found, err = Exists("test-set-dep")
if err != nil {
t.Fatal(err.Error())
} else if found {
Expand Down Expand Up @@ -787,15 +803,17 @@ func TestHashMapDependencyManagement(t *testing.T) {
t.Fatal(err.Error())
}

val, err := HashGet("test-hash-map-dependency", "pair-1")
var val string
val, err = HashGet("test-hash-map-dependency", "pair-1")
if err != nil {
t.Fatal(err.Error())
} else if val != "pair-1-value" {
t.Fatal("expected value was wrong")
}

// Get a key in the map
values, err := HashMapGet("test-hash-map-dependency", "pair-1", "pair-2")
var values []string
values, err = HashMapGet("test-hash-map-dependency", "pair-1", "pair-2")
if err != nil {
t.Fatal(err.Error())
}
Expand All @@ -806,7 +824,8 @@ func TestHashMapDependencyManagement(t *testing.T) {
}

// Test for dependent key 1
ok, err := SetIsMember("depend:test-hash-map-depend-1", "test-hash-map-dependency")
var ok bool
ok, err = SetIsMember("depend:test-hash-map-depend-1", "test-hash-map-dependency")
if err != nil {
t.Fatal(err.Error())
} else if !ok {
Expand All @@ -822,18 +841,90 @@ func TestHashMapDependencyManagement(t *testing.T) {
}

// Kill a dependent key
total, err := Delete("test-hash-map-depend-2")
var total int
total, err = Delete("test-hash-map-depend-2")
if err != nil {
t.Fatal(err.Error())
} else if total != 2 {
t.Fatal("expected 2 keys to be removed", total)
}

// Test for main key
found, err := Exists("test-hash-map-dependency")
var found bool
found, err = Exists("test-hash-map-dependency")
if err != nil {
t.Fatal(err.Error())
} else if found {
t.Fatal("expected found to be false")
}
}

// TestSetAddMany test the SetAddMany() method
func TestSetAddMany(t *testing.T) {
// Create a local connection
if err := startTest(); err != nil {
t.Fatal(err.Error())
}

// Disconnect at end
defer endTest()

var empty []interface{}
empty = append(empty, "one", "two", "three")

err := SetAddMany("test-set", empty...)
if err != nil {
t.Fatal("error setting members", err.Error())
}

// Test the set
var found bool
found, err = SetIsMember("test-set", "two")
if err != nil {
t.Fatal("error in SetIsMember", err.Error())
} else if !found {
t.Fatal("failed to find a member that should exist")
}

// Test for not finding a value
found, err = SetIsMember("test-set", "not-here")
if err != nil {
t.Fatal("error in SetIsMember", err.Error())
} else if found {
t.Fatal("found a member that should NOT exist")
}
}

// TestSetRemoveMember test the SetRemoveMember() method
func TestSetRemoveMember(t *testing.T) {
// Create a local connection
if err := startTest(); err != nil {
t.Fatal(err.Error())
}

// Disconnect at end
defer endTest()

var empty []interface{}
empty = append(empty, "one", "two", "three")

err := SetAddMany("test-set", empty...)
if err != nil {
t.Fatal("error setting members", err.Error())
}

// Try to delete
err = SetRemoveMember("test-set", "two")
if err != nil {
t.Fatal("error SetRemoveMember", err.Error())
}

// Test for not finding a value
var found bool
found, err = SetIsMember("test-set", "two")
if err != nil {
t.Fatal("error in SetIsMember", err.Error())
} else if found {
t.Fatal("found a member that should NOT exist")
}
}

0 comments on commit 3dc9b93

Please sign in to comment.