github.com/therealbill/libredis@v0.0.0-20161227004305-7d50abda5ccf/client/sets_test.go (about)

     1  package client
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestSAdd(t *testing.T) {
     8  	r.Del("key")
     9  	if n, err := r.SAdd("key", "value"); err != nil {
    10  		t.Error(err)
    11  	} else if n != 1 {
    12  		t.Fail()
    13  	}
    14  	if n, _ := r.SAdd("key", "value"); n != 0 {
    15  		t.Fail()
    16  	}
    17  }
    18  
    19  func TestSCard(t *testing.T) {
    20  	r.Del("key")
    21  	r.SAdd("key", "value")
    22  	if n, err := r.SCard("key"); err != nil {
    23  		t.Error(err)
    24  	} else if n != 1 {
    25  		t.Fail()
    26  	}
    27  }
    28  
    29  func TestSDiff(t *testing.T) {
    30  	r.Del("key1", "key2", "key3")
    31  	r.SAdd("key1", "a", "b", "c", "d")
    32  	r.SAdd("key2", "c")
    33  	r.SAdd("key3", "a", "c", "e")
    34  	if result, err := r.SDiff("key1", "key2", "key3"); err != nil {
    35  		t.Error(err)
    36  	} else if len(result) != 2 {
    37  		t.Fail()
    38  	}
    39  }
    40  
    41  func TestSDiffStore(t *testing.T) {
    42  	r.Del("key1", "key2", "key3")
    43  	r.SAdd("key1", "a", "b", "c", "d")
    44  	r.SAdd("key2", "c")
    45  	r.SAdd("key3", "a", "c", "e")
    46  	if n, err := r.SDiffStore("key", "key1", "key2", "key3"); err != nil {
    47  		t.Error(err)
    48  	} else if n != 2 {
    49  		t.Fail()
    50  	}
    51  }
    52  
    53  func TestSInter(t *testing.T) {
    54  	r.Del("key1", "key2", "key3")
    55  	r.SAdd("key1", "a", "b", "c", "d")
    56  	r.SAdd("key2", "c")
    57  	r.SAdd("key3", "a", "c", "e")
    58  	if result, err := r.SInter("key1", "key2", "key3"); err != nil {
    59  		t.Error(err)
    60  	} else if len(result) != 1 {
    61  		t.Fail()
    62  	}
    63  }
    64  
    65  func TestSInterStore(t *testing.T) {
    66  	r.Del("key1", "key2", "key3")
    67  	r.SAdd("key1", "a", "b", "c", "d")
    68  	r.SAdd("key2", "c")
    69  	r.SAdd("key3", "a", "c", "e")
    70  	if n, err := r.SInterStore("key", "key1", "key2", "key3"); err != nil {
    71  		t.Error(err)
    72  	} else if n != 1 {
    73  		t.Fail()
    74  	}
    75  }
    76  
    77  func TestSIsMember(t *testing.T) {
    78  	r.Del("key")
    79  	r.SAdd("key", "value")
    80  	if b, err := r.SIsMember("key", "value"); err != nil {
    81  		t.Error(err)
    82  	} else if !b {
    83  		t.Fail()
    84  	}
    85  	if b, _ := r.SIsMember("key", "member"); b {
    86  		t.Fail()
    87  	}
    88  }
    89  
    90  func TestSMembers(t *testing.T) {
    91  	r.Del("key")
    92  	r.SAdd("key", "value")
    93  	if result, err := r.SMembers("key"); err != nil {
    94  		t.Error(err)
    95  	} else if len(result) != 1 {
    96  		t.Fail()
    97  	} else if result[0] != "value" {
    98  		t.Fail()
    99  	}
   100  }
   101  
   102  func TestSMove(t *testing.T) {
   103  	r.Del("key", "key1")
   104  	r.SAdd("key", "value")
   105  	if b, err := r.SMove("key", "key1", "value"); err != nil {
   106  		t.Error(err)
   107  	} else if !b {
   108  		t.Fail()
   109  	}
   110  }
   111  
   112  func TestSPop(t *testing.T) {
   113  	r.Del("key")
   114  	r.SAdd("key", "value")
   115  	if item, err := r.SPop("key"); err != nil {
   116  		t.Error(err)
   117  	} else if item == nil {
   118  		t.Fail()
   119  	} else if string(item) != "value" {
   120  		t.Fail()
   121  	}
   122  	if item, _ := r.SPop("key"); item != nil {
   123  		t.Fail()
   124  	}
   125  }
   126  
   127  func TestSRandMember(t *testing.T) {
   128  	r.Del("key")
   129  	r.SAdd("key", "one", "two", "three")
   130  	if m, err := r.SRandMember("key"); err != nil {
   131  		t.Error(err)
   132  	} else if m == nil {
   133  		t.Fail()
   134  	}
   135  	if result, err := r.SRandMemberCount("key", 2); err != nil {
   136  		t.Error(err)
   137  	} else if len(result) != 2 {
   138  		t.Fail()
   139  	}
   140  	if result, err := r.SRandMemberCount("key", -5); err != nil {
   141  		t.Error(err)
   142  	} else if len(result) != 5 {
   143  		t.Fail()
   144  	}
   145  }
   146  
   147  func TestSRem(t *testing.T) {
   148  	r.Del("key")
   149  	r.SAdd("key", "one", "two", "three")
   150  	if n, err := r.SRem("key", "one", "four"); err != nil {
   151  		t.Error(err)
   152  	} else if n != 1 {
   153  		t.Fail()
   154  	}
   155  }
   156  
   157  func TestSUnion(t *testing.T) {
   158  	r.Del("key1", "key2", "key3")
   159  	r.SAdd("key1", "a", "b", "c", "d")
   160  	r.SAdd("key2", "c")
   161  	r.SAdd("key3", "a", "c", "e")
   162  	if result, err := r.SUnion("key1", "key2", "key3"); err != nil {
   163  		t.Error(err)
   164  	} else if len(result) != 5 {
   165  		t.Fail()
   166  	}
   167  }
   168  
   169  func TestSUnionStore(t *testing.T) {
   170  	r.Del("key1", "key2", "key3")
   171  	r.SAdd("key1", "a", "b", "c", "d")
   172  	r.SAdd("key2", "c")
   173  	r.SAdd("key3", "a", "c", "e")
   174  	if n, err := r.SUnionStore("key", "key1", "key2", "key3"); err != nil {
   175  		t.Error(err)
   176  	} else if n != 5 {
   177  		t.Fail()
   178  	}
   179  }
   180  
   181  func TestSScan(t *testing.T) {
   182  	r.Del("key")
   183  	r.SAdd("key", "one", "two", "three")
   184  	if _, list, err := r.SScan("key", 0, "", 0); err != nil {
   185  		t.Error(err)
   186  	} else if len(list) == 0 {
   187  		t.Fail()
   188  	}
   189  }