mirror of
https://github.com/EchoVault/SugarDB.git
synced 2025-10-04 23:52:42 +08:00
Removed test folder and moved all commands tests to their respective internal modules. Moved api tests into echovault package. This change has been made because the speratate test folder is not idiomatic and caused test coverage report to not be generated.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -12,4 +12,4 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package acl
|
||||
package echovault
|
@@ -12,32 +12,21 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package admin
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/internal/constants"
|
||||
"github.com/tidwall/resp"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func TestEchoVault_AddCommand(t *testing.T) {
|
||||
type args struct {
|
||||
command echovault.CommandOptions
|
||||
command CommandOptions
|
||||
}
|
||||
type scenarios struct {
|
||||
name string
|
||||
@@ -55,7 +44,7 @@ func TestEchoVault_AddCommand(t *testing.T) {
|
||||
name: "1 Add command without subcommands",
|
||||
wantErr: false,
|
||||
args: args{
|
||||
command: echovault.CommandOptions{
|
||||
command: CommandOptions{
|
||||
Command: "CommandOne",
|
||||
Module: "test-module",
|
||||
Description: `(CommandOne write-key read-key <value>)
|
||||
@@ -63,16 +52,16 @@ Test command to handle successful addition of a single command without subcomman
|
||||
The value passed must be an integer.`,
|
||||
Categories: []string{},
|
||||
Sync: false,
|
||||
KeyExtractionFunc: func(cmd []string) (echovault.CommandKeyExtractionFuncResult, error) {
|
||||
KeyExtractionFunc: func(cmd []string) (CommandKeyExtractionFuncResult, error) {
|
||||
if len(cmd) != 4 {
|
||||
return echovault.CommandKeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse)
|
||||
return CommandKeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse)
|
||||
}
|
||||
return echovault.CommandKeyExtractionFuncResult{
|
||||
return CommandKeyExtractionFuncResult{
|
||||
WriteKeys: cmd[1:2],
|
||||
ReadKeys: cmd[2:3],
|
||||
}, nil
|
||||
},
|
||||
HandlerFunc: func(params echovault.CommandHandlerFuncParams) ([]byte, error) {
|
||||
HandlerFunc: func(params CommandHandlerFuncParams) ([]byte, error) {
|
||||
if len(params.Command) != 4 {
|
||||
return nil, errors.New(constants.WrongArgsResponse)
|
||||
}
|
||||
@@ -116,9 +105,9 @@ The value passed must be an integer.`,
|
||||
name: "2 Add command with subcommands",
|
||||
wantErr: false,
|
||||
args: args{
|
||||
command: echovault.CommandOptions{
|
||||
command: CommandOptions{
|
||||
Command: "CommandTwo",
|
||||
SubCommand: []echovault.SubCommandOptions{
|
||||
SubCommand: []SubCommandOptions{
|
||||
{
|
||||
Command: "SubCommandOne",
|
||||
Module: "test-module",
|
||||
@@ -127,16 +116,16 @@ Test command to handle successful addition of a single command with subcommands.
|
||||
The value passed must be an integer.`,
|
||||
Categories: []string{},
|
||||
Sync: false,
|
||||
KeyExtractionFunc: func(cmd []string) (echovault.CommandKeyExtractionFuncResult, error) {
|
||||
KeyExtractionFunc: func(cmd []string) (CommandKeyExtractionFuncResult, error) {
|
||||
if len(cmd) != 5 {
|
||||
return echovault.CommandKeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse)
|
||||
return CommandKeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse)
|
||||
}
|
||||
return echovault.CommandKeyExtractionFuncResult{
|
||||
return CommandKeyExtractionFuncResult{
|
||||
WriteKeys: cmd[2:3],
|
||||
ReadKeys: cmd[3:4],
|
||||
}, nil
|
||||
},
|
||||
HandlerFunc: func(params echovault.CommandHandlerFuncParams) ([]byte, error) {
|
||||
HandlerFunc: func(params CommandHandlerFuncParams) ([]byte, error) {
|
||||
if len(params.Command) != 5 {
|
||||
return nil, errors.New(constants.WrongArgsResponse)
|
||||
}
|
@@ -12,4 +12,4 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package pubsub
|
||||
package echovault
|
@@ -12,14 +12,12 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package generic
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/clock"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"reflect"
|
||||
"slices"
|
||||
"strings"
|
||||
@@ -27,33 +25,6 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func presetKeyData(server *echovault.EchoVault, ctx context.Context, key string, data internal.KeyData) {
|
||||
_, _ = server.CreateKeyAndLock(ctx, key)
|
||||
defer server.KeyUnlock(ctx, key)
|
||||
_ = server.SetValue(ctx, key, data.Value)
|
||||
server.SetExpiry(ctx, key, data.ExpireAt, false)
|
||||
}
|
||||
|
||||
func TestEchoVault_DEL(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
||||
@@ -107,8 +78,8 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd string
|
||||
key string
|
||||
time int
|
||||
expireOpts echovault.ExpireOptions
|
||||
pexpireOpts echovault.PExpireOptions
|
||||
expireOpts ExpireOptions
|
||||
pexpireOpts PExpireOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -117,7 +88,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key1",
|
||||
time: 100,
|
||||
expireOpts: echovault.ExpireOptions{},
|
||||
expireOpts: ExpireOptions{},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key1": {Value: "value1", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -129,7 +100,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "PEXPIRE",
|
||||
key: "key2",
|
||||
time: 1000,
|
||||
pexpireOpts: echovault.PExpireOptions{},
|
||||
pexpireOpts: PExpireOptions{},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key2": {Value: "value2", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -141,7 +112,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key3",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{NX: true},
|
||||
expireOpts: ExpireOptions{NX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key3": {Value: "value3", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -153,7 +124,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key4",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{NX: true},
|
||||
expireOpts: ExpireOptions{NX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key4": {Value: "value4", ExpireAt: mockClock.Now().Add(1000 * time.Second)},
|
||||
},
|
||||
@@ -165,7 +136,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key5",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{XX: true},
|
||||
expireOpts: ExpireOptions{XX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key5": {Value: "value5", ExpireAt: mockClock.Now().Add(30 * time.Second)},
|
||||
},
|
||||
@@ -176,7 +147,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
name: "Return 0 when key does not have an expiry and the XX flag is provided",
|
||||
cmd: "EXPIRE",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{XX: true},
|
||||
expireOpts: ExpireOptions{XX: true},
|
||||
key: "key6",
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key6": {Value: "value6", ExpireAt: time.Time{}},
|
||||
@@ -189,7 +160,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key7",
|
||||
time: 100000,
|
||||
expireOpts: echovault.ExpireOptions{GT: true},
|
||||
expireOpts: ExpireOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key7": {Value: "value7", ExpireAt: mockClock.Now().Add(30 * time.Second)},
|
||||
},
|
||||
@@ -201,7 +172,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key8",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{GT: true},
|
||||
expireOpts: ExpireOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key8": {Value: "value8", ExpireAt: mockClock.Now().Add(3000 * time.Second)},
|
||||
},
|
||||
@@ -213,7 +184,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key9",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{GT: true},
|
||||
expireOpts: ExpireOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key9": {Value: "value9", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -225,7 +196,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key10",
|
||||
time: 1000,
|
||||
expireOpts: echovault.ExpireOptions{LT: true},
|
||||
expireOpts: ExpireOptions{LT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key10": {Value: "value10", ExpireAt: mockClock.Now().Add(3000 * time.Second)},
|
||||
},
|
||||
@@ -237,7 +208,7 @@ func TestEchoVault_EXPIRE(t *testing.T) {
|
||||
cmd: "EXPIRE",
|
||||
key: "key11",
|
||||
time: 50000,
|
||||
expireOpts: echovault.ExpireOptions{LT: true},
|
||||
expireOpts: ExpireOptions{LT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key11": {Value: "value11", ExpireAt: mockClock.Now().Add(30 * time.Second)},
|
||||
},
|
||||
@@ -281,8 +252,8 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd string
|
||||
key string
|
||||
time int
|
||||
expireAtOpts echovault.ExpireAtOptions
|
||||
pexpireAtOpts echovault.PExpireAtOptions
|
||||
expireAtOpts ExpireAtOptions
|
||||
pexpireAtOpts PExpireAtOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -290,7 +261,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
name: "Set new expire by unix seconds",
|
||||
cmd: "EXPIREAT",
|
||||
key: "key1",
|
||||
expireAtOpts: echovault.ExpireAtOptions{},
|
||||
expireAtOpts: ExpireAtOptions{},
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key1": {Value: "value1", ExpireAt: time.Time{}},
|
||||
@@ -302,7 +273,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
name: "Set new expire by milliseconds",
|
||||
cmd: "PEXPIREAT",
|
||||
key: "key2",
|
||||
pexpireAtOpts: echovault.PExpireAtOptions{},
|
||||
pexpireAtOpts: PExpireAtOptions{},
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).UnixMilli()),
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key2": {Value: "value2", ExpireAt: time.Time{}},
|
||||
@@ -315,7 +286,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key3",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{NX: true},
|
||||
expireAtOpts: ExpireAtOptions{NX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key3": {Value: "value3", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -326,7 +297,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
name: "Return 0, when NX flag is provided and key already has an expiry time",
|
||||
cmd: "EXPIREAT",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{NX: true},
|
||||
expireAtOpts: ExpireAtOptions{NX: true},
|
||||
key: "key4",
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key4": {Value: "value4", ExpireAt: mockClock.Now().Add(1000 * time.Second)},
|
||||
@@ -339,7 +310,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
key: "key5",
|
||||
expireAtOpts: echovault.ExpireAtOptions{XX: true},
|
||||
expireAtOpts: ExpireAtOptions{XX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key5": {Value: "value5", ExpireAt: mockClock.Now().Add(30 * time.Second)},
|
||||
},
|
||||
@@ -351,7 +322,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key6",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{XX: true},
|
||||
expireAtOpts: ExpireAtOptions{XX: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key6": {Value: "value6", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -363,7 +334,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key7",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{GT: true},
|
||||
expireAtOpts: ExpireAtOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key7": {Value: "value7", ExpireAt: mockClock.Now().Add(30 * time.Second)},
|
||||
},
|
||||
@@ -375,7 +346,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key8",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{GT: true},
|
||||
expireAtOpts: ExpireAtOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key8": {Value: "value8", ExpireAt: mockClock.Now().Add(3000 * time.Second)},
|
||||
},
|
||||
@@ -387,7 +358,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key9",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{GT: true},
|
||||
expireAtOpts: ExpireAtOptions{GT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key9": {Value: "value9", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -398,7 +369,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key10",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{LT: true},
|
||||
expireAtOpts: ExpireAtOptions{LT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key10": {Value: "value10", ExpireAt: mockClock.Now().Add(3000 * time.Second)},
|
||||
},
|
||||
@@ -410,7 +381,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key11",
|
||||
time: int(mockClock.Now().Add(3000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{LT: true},
|
||||
expireAtOpts: ExpireAtOptions{LT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key11": {Value: "value11", ExpireAt: mockClock.Now().Add(1000 * time.Second)},
|
||||
},
|
||||
@@ -422,7 +393,7 @@ func TestEchoVault_EXPIREAT(t *testing.T) {
|
||||
cmd: "EXPIREAT",
|
||||
key: "key12",
|
||||
time: int(mockClock.Now().Add(1000 * time.Second).Unix()),
|
||||
expireAtOpts: echovault.ExpireAtOptions{LT: true},
|
||||
expireAtOpts: ExpireAtOptions{LT: true},
|
||||
presetValues: map[string]internal.KeyData{
|
||||
"key12": {Value: "value12", ExpireAt: time.Time{}},
|
||||
},
|
||||
@@ -637,7 +608,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues map[string]internal.KeyData
|
||||
key string
|
||||
value string
|
||||
options echovault.SetOptions
|
||||
options SetOptions
|
||||
want string
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -646,7 +617,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key1",
|
||||
value: "value1",
|
||||
options: echovault.SetOptions{},
|
||||
options: SetOptions{},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -655,7 +626,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key2",
|
||||
value: "value2",
|
||||
options: echovault.SetOptions{NX: true},
|
||||
options: SetOptions{NX: true},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -669,7 +640,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
},
|
||||
key: "key3",
|
||||
value: "value3",
|
||||
options: echovault.SetOptions{NX: true},
|
||||
options: SetOptions{NX: true},
|
||||
want: "",
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -683,7 +654,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
},
|
||||
key: "key4",
|
||||
value: "value4",
|
||||
options: echovault.SetOptions{XX: true},
|
||||
options: SetOptions{XX: true},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -692,7 +663,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key5",
|
||||
value: "value5",
|
||||
options: echovault.SetOptions{XX: true},
|
||||
options: SetOptions{XX: true},
|
||||
want: "",
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -701,7 +672,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key6",
|
||||
value: "value6",
|
||||
options: echovault.SetOptions{EX: 100},
|
||||
options: SetOptions{EX: 100},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -710,7 +681,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key7",
|
||||
value: "value7",
|
||||
options: echovault.SetOptions{PX: 4096},
|
||||
options: SetOptions{PX: 4096},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -719,7 +690,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key8",
|
||||
value: "value8",
|
||||
options: echovault.SetOptions{EXAT: int(mockClock.Now().Add(200 * time.Second).Unix())},
|
||||
options: SetOptions{EXAT: int(mockClock.Now().Add(200 * time.Second).Unix())},
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -727,7 +698,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
name: "Set exact expiry time in milliseconds from unix epoch",
|
||||
key: "key9",
|
||||
value: "value9",
|
||||
options: echovault.SetOptions{PXAT: int(mockClock.Now().Add(4096 * time.Millisecond).UnixMilli())},
|
||||
options: SetOptions{PXAT: int(mockClock.Now().Add(4096 * time.Millisecond).UnixMilli())},
|
||||
presetValues: nil,
|
||||
want: "OK",
|
||||
wantErr: false,
|
||||
@@ -742,7 +713,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
},
|
||||
key: "key10",
|
||||
value: "value10",
|
||||
options: echovault.SetOptions{GET: true, EX: 1000},
|
||||
options: SetOptions{GET: true, EX: 1000},
|
||||
want: "previous-value",
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -751,7 +722,7 @@ func TestEchoVault_SET(t *testing.T) {
|
||||
presetValues: nil,
|
||||
key: "key11",
|
||||
value: "value11",
|
||||
options: echovault.SetOptions{GET: true, EX: 1000},
|
||||
options: SetOptions{GET: true, EX: 1000},
|
||||
want: "",
|
||||
wantErr: false,
|
||||
},
|
@@ -12,37 +12,15 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package hash
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"reflect"
|
||||
"slices"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEchoVault_HDEL(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
||||
@@ -455,7 +433,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
name string
|
||||
presetValue interface{}
|
||||
key string
|
||||
options echovault.HRandFieldOptions
|
||||
options HRandFieldOptions
|
||||
wantCount int
|
||||
want []string
|
||||
wantErr bool
|
||||
@@ -464,7 +442,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
name: "Get a random field",
|
||||
presetValue: map[string]interface{}{"field1": "value1", "field2": 123456789, "field3": 3.142},
|
||||
key: "key1",
|
||||
options: echovault.HRandFieldOptions{Count: 1},
|
||||
options: HRandFieldOptions{Count: 1},
|
||||
wantCount: 1,
|
||||
want: []string{"field1", "field2", "field3"},
|
||||
wantErr: false,
|
||||
@@ -473,7 +451,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
name: "Get a random field with a value",
|
||||
presetValue: map[string]interface{}{"field1": "value1", "field2": 123456789, "field3": 3.142},
|
||||
key: "key2",
|
||||
options: echovault.HRandFieldOptions{WithValues: true, Count: 1},
|
||||
options: HRandFieldOptions{WithValues: true, Count: 1},
|
||||
wantCount: 2,
|
||||
want: []string{"field1", "value1", "field2", "123456789", "field3", "3.142"},
|
||||
wantErr: false,
|
||||
@@ -488,7 +466,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
"field5": "value5",
|
||||
},
|
||||
key: "key3",
|
||||
options: echovault.HRandFieldOptions{Count: 3},
|
||||
options: HRandFieldOptions{Count: 3},
|
||||
wantCount: 3,
|
||||
want: []string{"field1", "field2", "field3", "field4", "field5"},
|
||||
wantErr: false,
|
||||
@@ -503,7 +481,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
"field5": "value5",
|
||||
},
|
||||
key: "key4",
|
||||
options: echovault.HRandFieldOptions{WithValues: true, Count: 3},
|
||||
options: HRandFieldOptions{WithValues: true, Count: 3},
|
||||
wantCount: 6,
|
||||
want: []string{
|
||||
"field1", "value1", "field2", "123456789", "field3",
|
||||
@@ -521,7 +499,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
"field5": "value5",
|
||||
},
|
||||
key: "key5",
|
||||
options: echovault.HRandFieldOptions{Count: 5},
|
||||
options: HRandFieldOptions{Count: 5},
|
||||
wantCount: 5,
|
||||
want: []string{"field1", "field2", "field3", "field4", "field5"},
|
||||
wantErr: false,
|
||||
@@ -536,7 +514,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
"field5": "value5",
|
||||
},
|
||||
key: "key5",
|
||||
options: echovault.HRandFieldOptions{WithValues: true, Count: 5},
|
||||
options: HRandFieldOptions{WithValues: true, Count: 5},
|
||||
wantCount: 10,
|
||||
want: []string{
|
||||
"field1", "value1", "field2", "123456789", "field3",
|
||||
@@ -548,7 +526,7 @@ func TestEchoVault_HRANDFIELD(t *testing.T) {
|
||||
name: "Trying to get random field on a non hash map returns error",
|
||||
presetValue: "Default value",
|
||||
key: "key12",
|
||||
options: echovault.HRandFieldOptions{},
|
||||
options: HRandFieldOptions{},
|
||||
wantCount: 0,
|
||||
want: nil,
|
||||
wantErr: true,
|
@@ -12,36 +12,14 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package list
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEchoVault_LLEN(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
@@ -12,4 +12,4 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package connection
|
||||
package echovault
|
@@ -12,38 +12,16 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package set
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/internal/modules/set"
|
||||
"reflect"
|
||||
"slices"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEchoVault_SADD(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
@@ -12,13 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package sorted_set
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
ss "github.com/echovault/echovault/internal/modules/sorted_set"
|
||||
"math"
|
||||
"reflect"
|
||||
@@ -26,26 +24,6 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEchoVault_ZADD(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
||||
@@ -55,7 +33,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
presetValue *ss.SortedSet
|
||||
key string
|
||||
entries map[string]float64
|
||||
options echovault.ZAddOptions
|
||||
options ZAddOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -71,7 +49,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member4": math.Inf(-1),
|
||||
"member5": math.Inf(1),
|
||||
},
|
||||
options: echovault.ZAddOptions{},
|
||||
options: ZAddOptions{},
|
||||
want: 5,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -89,7 +67,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member4": 67.77,
|
||||
"member5": 10,
|
||||
},
|
||||
options: echovault.ZAddOptions{NX: true},
|
||||
options: ZAddOptions{NX: true},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -107,7 +85,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member2": 67.77,
|
||||
"member3": 10,
|
||||
},
|
||||
options: echovault.ZAddOptions{NX: true},
|
||||
options: ZAddOptions{NX: true},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -126,7 +104,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member3": 15,
|
||||
"member4": 99.75,
|
||||
},
|
||||
options: echovault.ZAddOptions{XX: true, CH: true},
|
||||
options: ZAddOptions{XX: true, CH: true},
|
||||
want: 3,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -144,7 +122,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member5": 100.5,
|
||||
"member6": 15,
|
||||
},
|
||||
options: echovault.ZAddOptions{XX: true},
|
||||
options: ZAddOptions{XX: true},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -164,7 +142,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member4": 100.5,
|
||||
"member5": 15,
|
||||
},
|
||||
options: echovault.ZAddOptions{XX: true, CH: true, GT: true},
|
||||
options: ZAddOptions{XX: true, CH: true, GT: true},
|
||||
want: 1,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -184,7 +162,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member4": 100.5,
|
||||
"member5": 15,
|
||||
},
|
||||
options: echovault.ZAddOptions{XX: true, LT: true},
|
||||
options: ZAddOptions{XX: true, LT: true},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -202,7 +180,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member4": 100.5,
|
||||
"member5": 15,
|
||||
},
|
||||
options: echovault.ZAddOptions{XX: true, LT: true, CH: true},
|
||||
options: ZAddOptions{XX: true, LT: true, CH: true},
|
||||
want: 1,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -218,7 +196,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
entries: map[string]float64{
|
||||
"member3": 5.5,
|
||||
},
|
||||
options: echovault.ZAddOptions{INCR: true},
|
||||
options: ZAddOptions{INCR: true},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -231,7 +209,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member1": 3.5,
|
||||
"member5": 15,
|
||||
},
|
||||
options: echovault.ZAddOptions{NX: true, LT: true, CH: true},
|
||||
options: ZAddOptions{NX: true, LT: true, CH: true},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -244,7 +222,7 @@ func TestEchoVault_ZADD(t *testing.T) {
|
||||
"member1": 10.5,
|
||||
"member2": 12.5,
|
||||
},
|
||||
options: echovault.ZAddOptions{INCR: true},
|
||||
options: ZAddOptions{INCR: true},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -855,7 +833,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
preset bool
|
||||
presetValues map[string]interface{}
|
||||
keys []string
|
||||
options echovault.ZInterOptions
|
||||
options ZInterOptions
|
||||
want map[string]float64
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -875,7 +853,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key1", "key2"},
|
||||
options: echovault.ZInterOptions{},
|
||||
options: ZInterOptions{},
|
||||
want: map[string]float64{"three": 0, "four": 0, "five": 0},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -903,7 +881,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key3", "key4", "key5"},
|
||||
options: echovault.ZInterOptions{WithScores: true},
|
||||
options: ZInterOptions{WithScores: true},
|
||||
want: map[string]float64{"one": 3, "eight": 24},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -931,7 +909,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key6", "key7", "key8"},
|
||||
options: echovault.ZInterOptions{Aggregate: "MIN", WithScores: true},
|
||||
options: ZInterOptions{Aggregate: "MIN", WithScores: true},
|
||||
want: map[string]float64{"one": 1, "eight": 8},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -958,7 +936,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key9", "key10", "key11"},
|
||||
options: echovault.ZInterOptions{WithScores: true, Aggregate: "MAX"},
|
||||
options: ZInterOptions{WithScores: true, Aggregate: "MAX"},
|
||||
want: map[string]float64{"one": 1000, "eight": 800},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -986,7 +964,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key12", "key13", "key14"},
|
||||
options: echovault.ZInterOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}},
|
||||
want: map[string]float64{"one": 3105, "eight": 2808},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1014,7 +992,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key15", "key16", "key17"},
|
||||
options: echovault.ZInterOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}},
|
||||
want: map[string]float64{"one": 3000, "eight": 2400},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1042,7 +1020,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key18", "key19", "key20"},
|
||||
options: echovault.ZInterOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}},
|
||||
want: map[string]float64{"one": 5, "eight": 8},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1059,7 +1037,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
"key22": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key21", "key22"},
|
||||
options: echovault.ZInterOptions{Weights: []float64{1, 2, 3}},
|
||||
options: ZInterOptions{Weights: []float64{1, 2, 3}},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1079,7 +1057,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
"key25": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key23", "key24", "key25"},
|
||||
options: echovault.ZInterOptions{Weights: []float64{5, 4}},
|
||||
options: ZInterOptions{Weights: []float64{5, 4}},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1092,7 +1070,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
"key28": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{},
|
||||
options: echovault.ZInterOptions{},
|
||||
options: ZInterOptions{},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1110,7 +1088,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
"key31": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key29", "key30", "key31"},
|
||||
options: echovault.ZInterOptions{},
|
||||
options: ZInterOptions{},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1130,7 +1108,7 @@ func TestEchoVault_ZINTER(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"non-existent", "key32", "key33"},
|
||||
options: echovault.ZInterOptions{},
|
||||
options: ZInterOptions{},
|
||||
want: map[string]float64{},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1167,7 +1145,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
presetValues map[string]interface{}
|
||||
destination string
|
||||
keys []string
|
||||
options echovault.ZInterStoreOptions
|
||||
options ZInterStoreOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -1188,7 +1166,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination1",
|
||||
keys: []string{"key1", "key2"},
|
||||
options: echovault.ZInterStoreOptions{},
|
||||
options: ZInterStoreOptions{},
|
||||
want: 3,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1217,7 +1195,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination2",
|
||||
keys: []string{"key3", "key4", "key5"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true},
|
||||
options: ZInterStoreOptions{WithScores: true},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1246,7 +1224,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination3",
|
||||
keys: []string{"key6", "key7", "key8"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true, Aggregate: "MIN"},
|
||||
options: ZInterStoreOptions{WithScores: true, Aggregate: "MIN"},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1275,7 +1253,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination4",
|
||||
keys: []string{"key9", "key10", "key11"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true, Aggregate: "MAX"},
|
||||
options: ZInterStoreOptions{WithScores: true, Aggregate: "MAX"},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1304,7 +1282,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination5",
|
||||
keys: []string{"key12", "key13", "key14"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterStoreOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 5, 3}},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1333,7 +1311,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination6",
|
||||
keys: []string{"key15", "key16", "key17"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterStoreOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 5, 3}},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1362,7 +1340,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination7",
|
||||
keys: []string{"key18", "key19", "key20"},
|
||||
options: echovault.ZInterStoreOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}},
|
||||
options: ZInterStoreOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 5, 3}},
|
||||
want: 2,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1380,7 +1358,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination8",
|
||||
keys: []string{"key21", "key22"},
|
||||
options: echovault.ZInterStoreOptions{Weights: []float64{1, 2, 3}},
|
||||
options: ZInterStoreOptions{Weights: []float64{1, 2, 3}},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1401,7 +1379,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination9",
|
||||
keys: []string{"key23", "key24"},
|
||||
options: echovault.ZInterStoreOptions{Weights: []float64{5}},
|
||||
options: ZInterStoreOptions{Weights: []float64{5}},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1415,7 +1393,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination10",
|
||||
keys: []string{},
|
||||
options: echovault.ZInterStoreOptions{Weights: []float64{5, 4}},
|
||||
options: ZInterStoreOptions{Weights: []float64{5, 4}},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1434,7 +1412,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination11",
|
||||
keys: []string{"key29", "key30", "key31"},
|
||||
options: echovault.ZInterStoreOptions{},
|
||||
options: ZInterStoreOptions{},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -1455,7 +1433,7 @@ func TestEchoVault_ZINTERSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination12",
|
||||
keys: []string{"non-existent", "key32", "key33"},
|
||||
options: echovault.ZInterStoreOptions{},
|
||||
options: ZInterStoreOptions{},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1582,7 +1560,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
preset bool
|
||||
presetValues map[string]interface{}
|
||||
keys []string
|
||||
options echovault.ZMPopOptions
|
||||
options ZMPopOptions
|
||||
want [][]string
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -1597,7 +1575,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key1"},
|
||||
options: echovault.ZMPopOptions{},
|
||||
options: ZMPopOptions{},
|
||||
want: [][]string{
|
||||
{"one", "1"},
|
||||
},
|
||||
@@ -1614,7 +1592,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key2"},
|
||||
options: echovault.ZMPopOptions{Min: true},
|
||||
options: ZMPopOptions{Min: true},
|
||||
want: [][]string{
|
||||
{"one", "1"},
|
||||
},
|
||||
@@ -1631,7 +1609,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key3"},
|
||||
options: echovault.ZMPopOptions{Max: true},
|
||||
options: ZMPopOptions{Max: true},
|
||||
want: [][]string{
|
||||
{"five", "5"},
|
||||
},
|
||||
@@ -1648,7 +1626,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key4"},
|
||||
options: echovault.ZMPopOptions{Min: true, Count: 5},
|
||||
options: ZMPopOptions{Min: true, Count: 5},
|
||||
want: [][]string{
|
||||
{"one", "1"}, {"two", "2"}, {"three", "3"},
|
||||
{"four", "4"}, {"five", "5"},
|
||||
@@ -1666,7 +1644,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key5"},
|
||||
options: echovault.ZMPopOptions{Max: true, Count: 5},
|
||||
options: ZMPopOptions{Max: true, Count: 5},
|
||||
want: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1682,7 +1660,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key6", "key7"},
|
||||
options: echovault.ZMPopOptions{Max: true, Count: 5},
|
||||
options: ZMPopOptions{Max: true, Count: 5},
|
||||
want: [][]string{{"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}, {"six", "6"}},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1700,7 +1678,7 @@ func TestEchoVault_ZMPOP(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key8", "key9", "key10", "key11"},
|
||||
options: echovault.ZMPopOptions{Min: true, Count: 5},
|
||||
options: ZMPopOptions{Min: true, Count: 5},
|
||||
want: [][]string{{"one", "1"}, {"two", "2"}, {"three", "3"}, {"four", "4"}, {"five", "5"}},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -1997,7 +1975,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key string
|
||||
start string
|
||||
stop string
|
||||
options echovault.ZRangeOptions
|
||||
options ZRangeOptions
|
||||
want map[string]float64
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -2013,7 +1991,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key1",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeOptions{ByScore: true},
|
||||
options: ZRangeOptions{ByScore: true},
|
||||
want: map[string]float64{"three": 0, "four": 0, "five": 0, "six": 0, "seven": 0},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2029,7 +2007,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key2",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeOptions{ByScore: true, WithScores: true},
|
||||
options: ZRangeOptions{ByScore: true, WithScores: true},
|
||||
want: map[string]float64{"three": 3, "four": 4, "five": 5, "six": 6, "seven": 7},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2047,7 +2025,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key3",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeOptions{WithScores: true, ByScore: true, Offset: 2, Count: 4},
|
||||
options: ZRangeOptions{WithScores: true, ByScore: true, Offset: 2, Count: 4},
|
||||
want: map[string]float64{"three": 3, "four": 4, "five": 5},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2063,7 +2041,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key4",
|
||||
start: "c",
|
||||
stop: "g",
|
||||
options: echovault.ZRangeOptions{ByLex: true},
|
||||
options: ZRangeOptions{ByLex: true},
|
||||
want: map[string]float64{"c": 0, "d": 0, "e": 0, "f": 0, "g": 0},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2079,7 +2057,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key5",
|
||||
start: "a",
|
||||
stop: "f",
|
||||
options: echovault.ZRangeOptions{ByLex: true, WithScores: true},
|
||||
options: ZRangeOptions{ByLex: true, WithScores: true},
|
||||
want: map[string]float64{"a": 1, "b": 1, "c": 1, "d": 1, "e": 1, "f": 1},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2097,7 +2075,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key6",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: map[string]float64{"c": 1, "d": 1, "e": 1},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2113,7 +2091,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key7",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: map[string]float64{},
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2124,7 +2102,7 @@ func TestEchoVault_ZRANGE(t *testing.T) {
|
||||
key: "key10",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2161,7 +2139,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source string
|
||||
start string
|
||||
stop string
|
||||
options echovault.ZRangeStoreOptions
|
||||
options ZRangeStoreOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -2180,7 +2158,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key1",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeStoreOptions{ByScore: true},
|
||||
options: ZRangeStoreOptions{ByScore: true},
|
||||
want: 5,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2199,7 +2177,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key2",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeStoreOptions{WithScores: true, ByScore: true},
|
||||
options: ZRangeStoreOptions{WithScores: true, ByScore: true},
|
||||
want: 5,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2220,7 +2198,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key3",
|
||||
start: "3",
|
||||
stop: "7",
|
||||
options: echovault.ZRangeStoreOptions{ByScore: true, WithScores: true, Offset: 2, Count: 4},
|
||||
options: ZRangeStoreOptions{ByScore: true, WithScores: true, Offset: 2, Count: 4},
|
||||
want: 3,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2239,7 +2217,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key4",
|
||||
start: "c",
|
||||
stop: "g",
|
||||
options: echovault.ZRangeStoreOptions{ByLex: true},
|
||||
options: ZRangeStoreOptions{ByLex: true},
|
||||
want: 5,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2258,7 +2236,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key5",
|
||||
start: "a",
|
||||
stop: "f",
|
||||
options: echovault.ZRangeStoreOptions{ByLex: true, WithScores: true},
|
||||
options: ZRangeStoreOptions{ByLex: true, WithScores: true},
|
||||
want: 6,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2279,7 +2257,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key6",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: 3,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2301,7 +2279,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key7",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: 3,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2320,7 +2298,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key8",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: 0,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -2334,7 +2312,7 @@ func TestEchoVault_ZRANGESTORE(t *testing.T) {
|
||||
source: "key9",
|
||||
start: "a",
|
||||
stop: "h",
|
||||
options: echovault.ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
options: ZRangeStoreOptions{WithScores: true, ByLex: true, Offset: 2, Count: 4},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2684,7 +2662,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
preset bool
|
||||
presetValues map[string]interface{}
|
||||
keys []string
|
||||
options echovault.ZUnionOptions
|
||||
options ZUnionOptions
|
||||
want map[string]float64
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -2704,7 +2682,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key1", "key2"},
|
||||
options: echovault.ZUnionOptions{},
|
||||
options: ZUnionOptions{},
|
||||
want: map[string]float64{
|
||||
"one": 0, "two": 0, "three": 0, "four": 0,
|
||||
"five": 0, "six": 0, "seven": 0, "eight": 0,
|
||||
@@ -2735,7 +2713,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key3", "key4", "key5"},
|
||||
options: echovault.ZUnionOptions{WithScores: true},
|
||||
options: ZUnionOptions{WithScores: true},
|
||||
want: map[string]float64{
|
||||
"one": 3, "two": 4, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 24, "nine": 9,
|
||||
"ten": 10, "eleven": 11, "twelve": 24, "thirty-six": 72,
|
||||
@@ -2766,7 +2744,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key6", "key7", "key8"},
|
||||
options: echovault.ZUnionOptions{WithScores: true, Aggregate: "MIN"},
|
||||
options: ZUnionOptions{WithScores: true, Aggregate: "MIN"},
|
||||
want: map[string]float64{
|
||||
"one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9,
|
||||
"ten": 10, "eleven": 11, "twelve": 12, "thirty-six": 36,
|
||||
@@ -2797,7 +2775,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key9", "key10", "key11"},
|
||||
options: echovault.ZUnionOptions{WithScores: true, Aggregate: "MAX"},
|
||||
options: ZUnionOptions{WithScores: true, Aggregate: "MAX"},
|
||||
want: map[string]float64{
|
||||
"one": 1000, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 800, "nine": 9,
|
||||
"ten": 10, "eleven": 11, "twelve": 12, "thirty-six": 72,
|
||||
@@ -2828,7 +2806,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key12", "key13", "key14"},
|
||||
options: echovault.ZUnionOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}},
|
||||
want: map[string]float64{
|
||||
"one": 3102, "two": 6, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 2568,
|
||||
"nine": 27, "ten": 30, "eleven": 22, "twelve": 60, "thirty-six": 72,
|
||||
@@ -2859,7 +2837,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key15", "key16", "key17"},
|
||||
options: echovault.ZUnionOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}},
|
||||
want: map[string]float64{
|
||||
"one": 3000, "two": 4, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 2400,
|
||||
"nine": 27, "ten": 30, "eleven": 22, "twelve": 36, "thirty-six": 72,
|
||||
@@ -2890,7 +2868,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"key18", "key19", "key20"},
|
||||
options: echovault.ZUnionOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}},
|
||||
want: map[string]float64{
|
||||
"one": 2, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 27,
|
||||
"ten": 30, "eleven": 22, "twelve": 24, "thirty-six": 72,
|
||||
@@ -2910,7 +2888,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
"key22": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key21", "key22"},
|
||||
options: echovault.ZUnionOptions{Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionOptions{Weights: []float64{1, 2, 3}},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2930,7 +2908,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
"key25": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key23", "key24", "key25"},
|
||||
options: echovault.ZUnionOptions{Weights: []float64{5, 4}},
|
||||
options: ZUnionOptions{Weights: []float64{5, 4}},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2943,7 +2921,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
"key28": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{},
|
||||
options: echovault.ZUnionOptions{Weights: []float64{5, 4}},
|
||||
options: ZUnionOptions{Weights: []float64{5, 4}},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2961,7 +2939,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
"key31": ss.NewSortedSet([]ss.MemberParam{{Value: "one", Score: 1}}),
|
||||
},
|
||||
keys: []string{"key29", "key30", "key31"},
|
||||
options: echovault.ZUnionOptions{},
|
||||
options: ZUnionOptions{},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -2981,7 +2959,7 @@ func TestEchoVault_ZUNION(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
keys: []string{"non-existent", "key32", "key33"},
|
||||
options: echovault.ZUnionOptions{},
|
||||
options: ZUnionOptions{},
|
||||
want: map[string]float64{
|
||||
"one": 0, "two": 0, "thirty-six": 0, "twelve": 0, "eleven": 0,
|
||||
"seven": 0, "eight": 0, "nine": 0, "ten": 0,
|
||||
@@ -3021,7 +2999,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
presetValues map[string]interface{}
|
||||
destination string
|
||||
keys []string
|
||||
options echovault.ZUnionStoreOptions
|
||||
options ZUnionStoreOptions
|
||||
want int
|
||||
wantErr bool
|
||||
}{
|
||||
@@ -3042,7 +3020,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination1",
|
||||
keys: []string{"key1", "key2"},
|
||||
options: echovault.ZUnionStoreOptions{},
|
||||
options: ZUnionStoreOptions{},
|
||||
want: 8,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3071,7 +3049,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination2",
|
||||
keys: []string{"key3", "key4", "key5"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true},
|
||||
options: ZUnionStoreOptions{WithScores: true},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3100,7 +3078,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination3",
|
||||
keys: []string{"key6", "key7", "key8"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true, Aggregate: "MIN"},
|
||||
options: ZUnionStoreOptions{WithScores: true, Aggregate: "MIN"},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3129,7 +3107,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination4",
|
||||
keys: []string{"key9", "key10", "key11"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true, Aggregate: "MAX"},
|
||||
options: ZUnionStoreOptions{WithScores: true, Aggregate: "MAX"},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3158,7 +3136,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination5",
|
||||
keys: []string{"key12", "key13", "key14"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionStoreOptions{WithScores: true, Aggregate: "SUM", Weights: []float64{1, 2, 3}},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3187,7 +3165,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination6",
|
||||
keys: []string{"key15", "key16", "key17"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionStoreOptions{WithScores: true, Aggregate: "MAX", Weights: []float64{1, 2, 3}},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3216,7 +3194,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination7",
|
||||
keys: []string{"destination7", "key18", "key19", "key20"},
|
||||
options: echovault.ZUnionStoreOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionStoreOptions{WithScores: true, Aggregate: "MIN", Weights: []float64{1, 2, 3}},
|
||||
want: 13,
|
||||
wantErr: false,
|
||||
},
|
||||
@@ -3234,7 +3212,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination8",
|
||||
keys: []string{"key21", "key22"},
|
||||
options: echovault.ZUnionStoreOptions{Weights: []float64{1, 2, 3}},
|
||||
options: ZUnionStoreOptions{Weights: []float64{1, 2, 3}},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -3255,7 +3233,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination9",
|
||||
keys: []string{"key23", "key24", "key25"},
|
||||
options: echovault.ZUnionStoreOptions{Weights: []float64{5, 4}},
|
||||
options: ZUnionStoreOptions{Weights: []float64{5, 4}},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
||||
@@ -3274,7 +3252,7 @@ func TestEchoVault_ZUNIONSTORE(t *testing.T) {
|
||||
},
|
||||
destination: "destination11",
|
||||
keys: []string{"key29", "key30", "key31"},
|
||||
options: echovault.ZUnionStoreOptions{},
|
||||
options: ZUnionStoreOptions{},
|
||||
want: 0,
|
||||
wantErr: true,
|
||||
},
|
@@ -12,35 +12,13 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package str
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/echovault"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func createEchoVault() *echovault.EchoVault {
|
||||
ev, _ := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *echovault.EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEchoVault_SUBSTR(t *testing.T) {
|
||||
server := createEchoVault()
|
||||
|
34
echovault/test_helpers.go
Normal file
34
echovault/test_helpers.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package echovault
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
)
|
||||
|
||||
func createEchoVault() *EchoVault {
|
||||
ev, _ := NewEchoVault(
|
||||
WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
}),
|
||||
)
|
||||
return ev
|
||||
}
|
||||
|
||||
func presetValue(server *EchoVault, ctx context.Context, key string, value interface{}) error {
|
||||
if _, err := server.CreateKeyAndLock(ctx, key); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := server.SetValue(ctx, key, value); err != nil {
|
||||
return err
|
||||
}
|
||||
server.KeyUnlock(ctx, key)
|
||||
return nil
|
||||
}
|
||||
|
||||
func presetKeyData(server *EchoVault, ctx context.Context, key string, data internal.KeyData) {
|
||||
_, _ = server.CreateKeyAndLock(ctx, key)
|
||||
defer server.KeyUnlock(ctx, key)
|
||||
_ = server.SetValue(ctx, key, data.Value)
|
||||
server.SetExpiry(ctx, key, data.ExpireAt, false)
|
||||
}
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package acl
|
||||
package acl_test
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package admin
|
||||
package admin_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package connection
|
||||
package connection_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package generic
|
||||
package generic_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package hash
|
||||
package hash_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package list
|
||||
package list_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package pubsub
|
||||
package pubsub_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package set
|
||||
package set_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package sorted_set
|
||||
package sorted_set_test
|
||||
|
||||
import (
|
||||
"bytes"
|
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package str
|
||||
package str_test
|
||||
|
||||
import (
|
||||
"bytes"
|
Reference in New Issue
Block a user