Skip to content

Commit

Permalink
feat: String test
Browse files Browse the repository at this point in the history
  • Loading branch information
qishenonly committed Jul 3, 2023
1 parent 882e365 commit 1c28132
Showing 1 changed file with 93 additions and 0 deletions.
93 changes: 93 additions & 0 deletions structure/string_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package structure

import (
"github.com/ByteStorage/FlyDB/config"
_const "github.com/ByteStorage/FlyDB/lib/const"
"github.com/ByteStorage/FlyDB/lib/randkv"
"github.com/stretchr/testify/assert"
"os"
"testing"
"time"
)

var err error

func initdb() *StringStructure {
opts := config.DefaultOptions
dir, _ := os.MkdirTemp("", "TestStringStructure_Get")
opts.DirPath = dir
str, _ := NewStringStructure(opts)
return str
}

func TestStringStructure_Get(t *testing.T) {
str := initdb()

err = str.Set(randkv.GetTestKey(1), randkv.RandomValue(100), 0)
assert.Nil(t, err)
err = str.Set(randkv.GetTestKey(2), randkv.RandomValue(100), 2*time.Second)
assert.Nil(t, err)

value1, err := str.Get(randkv.GetTestKey(1))
assert.Nil(t, err)
assert.NotNil(t, value1)

time.Sleep(3 * time.Second)

value2, err := str.Get(randkv.GetTestKey(2))
assert.Equal(t, err, ErrKeyExpired)
assert.Nil(t, value2)

_, err = str.Get(randkv.GetTestKey(3))
assert.Equal(t, err, _const.ErrKeyNotFound)
}

func TestStringStructure_Del(t *testing.T) {
str := initdb()

err = str.Set(randkv.GetTestKey(1), randkv.RandomValue(100), 0)
assert.Nil(t, err)

err = str.Del(randkv.GetTestKey(1))
assert.Nil(t, err)

_, err = str.Get(randkv.GetTestKey(1))
assert.Equal(t, err, _const.ErrKeyNotFound)
}

func TestStringStructure_Type(t *testing.T) {
str := initdb()

err = str.Set(randkv.GetTestKey(1), randkv.RandomValue(100), 0)
assert.Nil(t, err)

keyType, err := str.Type(randkv.GetTestKey(1))

TypeString := "string"
assert.Equal(t, keyType, TypeString)
assert.Nil(t, err)
}

func TestStringStructure_StrLen(t *testing.T) {
str := initdb()

err = str.Set(randkv.GetTestKey(1), randkv.RandomValue(100), 0)
assert.Nil(t, err)

strLen, err := str.StrLen(randkv.GetTestKey(1))
assert.Nil(t, err)
assert.Equal(t, strLen, 112)
}

func TestStringStructure_GetSet(t *testing.T) {
str := initdb()

err = str.Set(randkv.GetTestKey(1), randkv.RandomValue(100), 0)
assert.Nil(t, err)
value1, _ := str.Get(randkv.GetTestKey(1))

value2, err := str.GetSet(randkv.GetTestKey(1), randkv.RandomValue(100), 2*time.Second)
assert.Nil(t, err)
assert.NotNil(t, value2)
assert.Equal(t, value1, value2)
}

0 comments on commit 1c28132

Please sign in to comment.