Skip to content

Commit

Permalink
Client: fix check for WithPrefix op
Browse files Browse the repository at this point in the history
Make sure that WithPrefix correctly set the flag, and add test.
Also, add test for WithFromKey.

fixes #14056

Signed-off-by: Sahdev Zala <spzala@us.ibm.com>
  • Loading branch information
spzala committed Jul 3, 2022
1 parent c9f7473 commit 92ac821
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion client/v3/op.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,12 +389,12 @@ func getPrefix(key []byte) []byte {
// can return 'foo1', 'foo2', and so on.
func WithPrefix() OpOption {
return func(op *Op) {
op.isOptsWithPrefix = true
if len(op.key) == 0 {
op.key, op.end = []byte{0}, []byte{0}
return
}
op.end = getPrefix(op.key)
op.isOptsWithPrefix = true
}
}

Expand Down
63 changes: 63 additions & 0 deletions client/v3/op_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,66 @@ func TestOpWithSort(t *testing.T) {
t.Fatalf("expected %+v, got %+v", wreq, req)
}
}

func TestIsSortOptionValid(t *testing.T) {
rangeReqs := []struct {
sortOrder pb.RangeRequest_SortOrder
sortTarget pb.RangeRequest_SortTarget
expectedValid bool
}{
{
sortOrder: pb.RangeRequest_ASCEND,
sortTarget: pb.RangeRequest_CREATE,
expectedValid: true,
},
{
sortOrder: pb.RangeRequest_ASCEND,
sortTarget: 100,
expectedValid: false,
},
{
sortOrder: 200,
sortTarget: pb.RangeRequest_MOD,
expectedValid: false,
},
}

for _, req := range rangeReqs {
getOp := Op{
sort: &SortOption{
Order: SortOrder(req.sortOrder),
Target: SortTarget(req.sortTarget),
},
}

actualRet := getOp.IsSortOptionValid()
if actualRet != req.expectedValid {
t.Errorf("expected sortOrder (%d) and sortTarget (%d) to be %t, but got %t",
req.sortOrder, req.sortTarget, req.expectedValid, actualRet)
}
}
}

func TestIsOptsWithPrefix(t *testing.T) {
optswithprefix := []OpOption{WithPrefix()}
if !IsOptsWithPrefix(optswithprefix) {
t.Errorf("IsOptsWithPrefix = false, expected true")
}

optswithfromkey := []OpOption{WithFromKey()}
if IsOptsWithPrefix(optswithfromkey) {
t.Errorf("IsOptsWithPrefix = true, expected false")
}
}

func TestIsOptsWithFromKey(t *testing.T) {
optswithfromkey := []OpOption{WithFromKey()}
if !IsOptsWithFromKey(optswithfromkey) {
t.Errorf("IsOptsWithFromKey = false, expected true")
}

optswithprefix := []OpOption{WithPrefix()}
if IsOptsWithFromKey(optswithprefix) {
t.Errorf("IsOptsWithFromKey = true, expected false")
}
}

0 comments on commit 92ac821

Please sign in to comment.