@@ -99,20 +99,36 @@ func testWithClient(t *testing.T, c *Client) {
9999 mustSet := mustSetF (t , c )
100100
101101 // Set
102- foo := & Item {Key : "foo" , Value : []byte ("fooval" ), Flags : 123 }
102+ foo := & Item {Key : "foo" , Value : []byte ("fooval-fromset " ), Flags : 123 }
103103 err := c .Set (foo )
104104 checkErr (err , "first set(foo): %v" , err )
105105 err = c .Set (foo )
106106 checkErr (err , "second set(foo): %v" , err )
107107
108- // Get
108+ // CompareAndSwap
109109 it , err := c .Get ("foo" )
110110 checkErr (err , "get(foo): %v" , err )
111+ if string (it .Value ) != "fooval-fromset" {
112+ t .Errorf ("get(foo) Value = %q, want fooval-romset" , it .Value )
113+ }
114+ it0 , err := c .Get ("foo" ) // another get, to fail our CAS later
115+ checkErr (err , "get(foo): %v" , err )
116+ it .Value = []byte ("fooval" )
117+ err = c .CompareAndSwap (it )
118+ checkErr (err , "cas(foo): %v" , err )
119+ it0 .Value = []byte ("should-fail" )
120+ if err := c .CompareAndSwap (it0 ); err != ErrCASConflict {
121+ t .Fatalf ("cas(foo) error = %v; want ErrCASConflict" , err )
122+ }
123+
124+ // Get
125+ it , err = c .Get ("foo" )
126+ checkErr (err , "get(foo): %v" , err )
111127 if it .Key != "foo" {
112128 t .Errorf ("get(foo) Key = %q, want foo" , it .Key )
113129 }
114130 if string (it .Value ) != "fooval" {
115- t .Errorf ("get(foo) Value = %q, want fooval" , string ( it .Value ) )
131+ t .Errorf ("get(foo) Value = %q, want fooval" , it .Value )
116132 }
117133 if it .Flags != 123 {
118134 t .Errorf ("get(foo) Flags = %v, want 123" , it .Flags )
0 commit comments