| 196 | } |
| 197 | |
| 198 | func TestListIndexBasedCRUD(t *testing.T) { |
| 199 | c := newClient(t) |
| 200 | |
| 201 | _, err := c.RPUSH("l1", StringValue{"inty"}, StringValue{"minty"}, StringValue{"papa"}, StringValue{"tinty"}) |
| 202 | assert.NoError(t, err) |
| 203 | |
| 204 | element, err := c.LINDEX("l1", 0) |
| 205 | assert.NoError(t, err) |
| 206 | assert.Equal(t, "inty", element.String()) |
| 207 | |
| 208 | element, err = c.LINDEX("l1", 3) |
| 209 | assert.NoError(t, err) |
| 210 | assert.Equal(t, "tinty", element.String()) |
| 211 | |
| 212 | element, err = c.LINDEX("l1", 4) |
| 213 | assert.NoError(t, err) |
| 214 | assert.False(t, element.Present()) |
| 215 | |
| 216 | element, err = c.LINDEX("l1", 42) |
| 217 | assert.NoError(t, err) |
| 218 | assert.False(t, element.Present()) |
| 219 | |
| 220 | element, err = c.LINDEX("l1", -1) |
| 221 | assert.NoError(t, err) |
| 222 | assert.True(t, element.Present()) |
| 223 | assert.Equal(t, "tinty", element.String()) |
| 224 | |
| 225 | element, err = c.LINDEX("l1", -4) |
| 226 | assert.NoError(t, err) |
| 227 | assert.Equal(t, "inty", element.String()) |
| 228 | |
| 229 | element, err = c.LINDEX("l1", -42) |
| 230 | assert.NoError(t, err) |
| 231 | assert.True(t, element.Empty()) |
| 232 | |
| 233 | ok, err := c.LSET("l1", 1, "monty") |
| 234 | assert.NoError(t, err) |
| 235 | assert.True(t, ok) |
| 236 | |
| 237 | element, err = c.LINDEX("l1", 1) |
| 238 | assert.NoError(t, err) |
| 239 | assert.Equal(t, "monty", element.String()) |
| 240 | |
| 241 | ok, err = c.LSET("l1", -2, "mama") |
| 242 | assert.NoError(t, err) |
| 243 | assert.True(t, ok) |
| 244 | |
| 245 | element, err = c.LINDEX("l1", -2) |
| 246 | assert.NoError(t, err) |
| 247 | assert.Equal(t, "mama", element.String()) |
| 248 | |
| 249 | ok, err = c.LSET("l1", 42, "no chance") |
| 250 | assert.NoError(t, err) |
| 251 | assert.False(t, ok) |
| 252 | |
| 253 | count, err := c.LLEN("l1") |
| 254 | assert.NoError(t, err) |
| 255 | assert.Equal(t, int64(4), count) |