github.com/projecteru2/core@v0.0.0-20240321043226-06bcc1c23f58/wal/kv/mocked_test.go (about)

     1  package kv
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestMockedKV(t *testing.T) {
    11  	m := NewMockedKV()
    12  	require.NoError(t, m.Open("/tmp/wal", 0777, time.Second))
    13  
    14  	a := []byte("/a")
    15  	b := []byte("/b")
    16  	expValue := []byte("v")
    17  	require.NoError(t, m.Put(a, expValue))
    18  	require.NoError(t, m.Put(b, expValue))
    19  	require.NoError(t, m.Put([]byte("out-of-scan"), expValue))
    20  
    21  	ch, abort := m.Scan([]byte("/"))
    22  	elem := <-ch
    23  	ent, ok := elem.(MockedScanEntry)
    24  	require.True(t, ok)
    25  	require.NoError(t, ent.Err)
    26  	abort()
    27  
    28  	_, abort = m.Scan([]byte("/"))
    29  	abort()
    30  
    31  	realValue, err := m.Get(a)
    32  	require.NoError(t, err)
    33  	require.Equal(t, expValue, realValue)
    34  
    35  	realValue, err = m.Get(b)
    36  	require.NoError(t, err)
    37  	require.Equal(t, expValue, realValue)
    38  
    39  	require.NoError(t, m.Delete(b))
    40  	realValue, err = m.Get(b)
    41  	require.Error(t, err)
    42  
    43  	require.NoError(t, m.Close())
    44  
    45  	realValue, err = m.Get(a)
    46  	require.Error(t, err)
    47  }