From fc72d5f0d09087cd498d08ba7731903e56d08785 Mon Sep 17 00:00:00 2001 From: Chris Mague Date: Tue, 13 Apr 2021 17:28:55 -0700 Subject: [PATCH] add LMove with tests --- commands.go | 7 +++++++ commands_test.go | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/commands.go b/commands.go index 5b2f4c6..3774633 100644 --- a/commands.go +++ b/commands.go @@ -191,6 +191,7 @@ type Cmdable interface { RPopLPush(ctx context.Context, source, destination string) *StringCmd RPush(ctx context.Context, key string, values ...interface{}) *IntCmd RPushX(ctx context.Context, key string, values ...interface{}) *IntCmd + LMove(ctx context.Context, source, destination, srcpos, destpos string) *StringCmd SAdd(ctx context.Context, key string, members ...interface{}) *IntCmd SCard(ctx context.Context, key string) *IntCmd @@ -1431,6 +1432,12 @@ func (c cmdable) RPushX(ctx context.Context, key string, values ...interface{}) return cmd } +func (c cmdable) LMove(ctx context.Context, source, destination, srcpos, destpos string) *StringCmd { + cmd := NewStringCmd(ctx, "lmove", source, destination, srcpos, destpos) + _ = c(ctx, cmd) + return cmd +} + //------------------------------------------------------------------------------ func (c cmdable) SAdd(ctx context.Context, key string, members ...interface{}) *IntCmd { diff --git a/commands_test.go b/commands_test.go index 313d08c..e927c58 100644 --- a/commands_test.go +++ b/commands_test.go @@ -2317,6 +2317,28 @@ var _ = Describe("Commands", func() { Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{})) }) + + It("should LMove", func() { + rPush := client.RPush(ctx, "lmove1", "ichi") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(1))) + + rPush = client.RPush(ctx, "lmove1", "ni") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(2))) + + rPush = client.RPush(ctx, "lmove1", "san") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(3))) + + lMove := client.LMove(ctx, "lmove1", "lmove2", "RIGHT", "LEFT") + Expect(lMove.Err()).NotTo(HaveOccurred()) + Expect(lMove.Val()).To(Equal("san")) + + lRange := client.LRange(ctx, "lmove2", 0, -1) + Expect(lRange.Err()).NotTo(HaveOccurred()) + Expect(lRange.Val()).To(Equal([]string{"san"})) + }) }) Describe("sets", func() {