Compare commits

...
3 Commits
Author SHA1 Message Date
edipretoro 0b85e31d94 Implementing the first challenge 2026-07-19 16:58:40 +02:00
edipretoro db673f4c98 Adding the challenge 0101 2026-07-19 16:56:07 +02:00
edipretoro 57f2c755ce Initiating the repo as a Go module 2026-07-19 16:55:27 +02:00
4 changed files with 89 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package db0101
import "bytes"
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) {
val, ok = kv.mem[string(key)]
return
}
func (kv *KV) Set(key []byte, val []byte) (updated bool, err error) {
prev, exist := kv.mem[string(key)]
kv.mem[string(key)] = val
updated = !exist || !bytes.Equal(prev, val)
return
}
func (kv *KV) Del(key []byte) (deleted bool, err error) {
_, deleted = kv.mem[string(key)]
delete(kv.mem, string(key))
return
}
// QzBQWVJJOUhU https://trialofcode.org/
+34
View File
@@ -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/
+11
View File
@@ -0,0 +1,11 @@
module trialofcode.org/db
go 1.23
require github.com/stretchr/testify v1.11.1
require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
+10
View File
@@ -0,0 +1,10 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=