From db673f4c9871a165a2b6949e6a8203fc63b5bdd6 Mon Sep 17 00:00:00 2001 From: edipretoro Date: Sun, 19 Jul 2026 16:56:07 +0200 Subject: [PATCH] Adding the challenge 0101 --- 0101/kv.go | 20 ++++++++++++++++++++ 0101/kv_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 0101/kv.go create mode 100644 0101/kv_test.go diff --git a/0101/kv.go b/0101/kv.go new file mode 100644 index 0000000..4eefa2a --- /dev/null +++ b/0101/kv.go @@ -0,0 +1,20 @@ +package db0101 + +type KV struct { + mem map[string][]byte +} + +func (kv *KV) Open() error { + kv.mem = map[string][]byte{} // empty + return nil +} + +func (kv *KV) Close() error { return nil } + +func (kv *KV) Get(key []byte) (val []byte, ok bool, err error) + +func (kv *KV) Set(key []byte, val []byte) (updated bool, err error) + +func (kv *KV) Del(key []byte) (deleted bool, err error) + +// QzBQWVJJOUhU https://trialofcode.org/ diff --git a/0101/kv_test.go b/0101/kv_test.go new file mode 100644 index 0000000..74ccadf --- /dev/null +++ b/0101/kv_test.go @@ -0,0 +1,34 @@ +package db0101 + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestKVBasic(t *testing.T) { + kv := KV{} + err := kv.Open() + assert.Nil(t, err) + defer kv.Close() + + updated, err := kv.Set([]byte("k1"), []byte("v1")) + assert.True(t, updated && err == nil) + + val, ok, err := kv.Get([]byte("k1")) + assert.True(t, string(val) == "v1" && ok && err == nil) + + _, ok, err = kv.Get([]byte("xxx")) + assert.True(t, !ok && err == nil) + + updated, err = kv.Del([]byte("xxx")) + assert.True(t, !updated && err == nil) + + updated, err = kv.Del([]byte("k1")) + assert.True(t, updated && err == nil) + + _, ok, err = kv.Get([]byte("xxx")) + assert.True(t, !ok && err == nil) +} + +// QzBQWVJJOUhU https://trialofcode.org/