| 9 | ) |
| 10 | |
| 11 | func TestStreamCRU(t *testing.T) { |
| 12 | c := newClient(t) |
| 13 | |
| 14 | insertID1, err := c.XADD("x1", XAutoID, map[string]Value{"f1": StringValue{"v1"}, "f2": StringValue{"v2"}}) |
| 15 | assert.NoError(t, err) |
| 16 | assert.Greater(t, insertID1.String(), XStart.String()) |
| 17 | |
| 18 | items, err := c.XRANGE("x1", XStart, XEnd, 100) |
| 19 | assert.NoError(t, err) |
| 20 | assert.Equal(t, 1, len(items)) |
| 21 | assert.Equal(t, insertID1, items[0].ID) |
| 22 | |
| 23 | count, err := c.XLEN("x1", XStart, XEnd) |
| 24 | assert.NoError(t, err) |
| 25 | assert.Equal(t, int64(1), count) |
| 26 | |
| 27 | insertID2, err := c.XADD("x1", XAutoID, map[string]Value{"f3": StringValue{"v3"}, "f4": StringValue{"v4"}}) |
| 28 | assert.NoError(t, err) |
| 29 | assert.Greater(t, insertID2.String(), insertID1.String()) |
| 30 | |
| 31 | count, err = c.XLEN("x1", XStart, XEnd) |
| 32 | assert.NoError(t, err) |
| 33 | assert.Equal(t, int64(2), count) |
| 34 | |
| 35 | items, err = c.XRANGE("x1", XStart, XEnd, 100) |
| 36 | assert.NoError(t, err) |
| 37 | assert.Equal(t, 2, len(items)) |
| 38 | assert.Equal(t, 2, len(items[0].Fields)) |
| 39 | assert.Equal(t, 2, len(items[1].Fields)) |
| 40 | assert.Equal(t, insertID1, items[0].ID) |
| 41 | assert.Equal(t, "v1", items[0].Fields["f1"].String()) |
| 42 | assert.Equal(t, insertID2, items[1].ID) |
| 43 | assert.Equal(t, "v4", items[1].Fields["f4"].String()) |
| 44 | |
| 45 | items, err = c.XREVRANGE("x1", XEnd, XStart, 100) |
| 46 | assert.NoError(t, err) |
| 47 | assert.Equal(t, 2, len(items)) |
| 48 | assert.Equal(t, insertID2, items[0].ID) |
| 49 | assert.Equal(t, insertID1, items[1].ID) |
| 50 | |
| 51 | items, err = c.XREAD("x1", XStart, 1) |
| 52 | assert.NoError(t, err) |
| 53 | assert.Equal(t, 1, len(items)) |
| 54 | assert.Equal(t, insertID1, items[0].ID) |
| 55 | |
| 56 | items, err = c.XREAD("x1", items[0].ID, 1) |
| 57 | assert.NoError(t, err) |
| 58 | assert.Equal(t, 1, len(items)) |
| 59 | assert.Equal(t, insertID2, items[0].ID) |
| 60 | } |
| 61 | |
| 62 | func TestStreamDeletes(t *testing.T) { |
| 63 | c := newClient(t) |