58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package cache
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
_ "modernc.org/sqlite"
|
|
)
|
|
|
|
type Value struct {
|
|
Title string `json:"title"`
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
func TestDbSqlite(t *testing.T) {
|
|
cache, err := OpenSqlite[Value]("../cache_test.db", "cache")
|
|
if err != nil {
|
|
t.Skip(err)
|
|
return
|
|
}
|
|
|
|
fistValue := Value{
|
|
Title: "Google",
|
|
Msg: "made by golang.",
|
|
}
|
|
|
|
if err := cache.Set(time.Hour, "fist1", fistValue); err != nil {
|
|
t.Error(fmt.Errorf("cannot set fist1: %s", err))
|
|
return
|
|
}
|
|
|
|
// Invalid method
|
|
if err := cache.Set(0, "fist2", fistValue); err != nil {
|
|
t.Error(fmt.Errorf("cannot set fist2: %s", err))
|
|
return
|
|
}
|
|
|
|
recoveryValue, err := cache.Get("fist1")
|
|
if err != nil {
|
|
t.Error(fmt.Errorf("cannot get fist1: %s", err))
|
|
return
|
|
}
|
|
|
|
if fistValue.Title != recoveryValue.Title {
|
|
t.Errorf("Title is not same: %q != %q", fistValue.Title, recoveryValue.Title)
|
|
return
|
|
} else if fistValue.Msg != recoveryValue.Msg {
|
|
t.Errorf("Msg is not same: %q != %q", fistValue.Msg, recoveryValue.Msg)
|
|
return
|
|
}
|
|
|
|
if err := cache.Flush(); err != nil {
|
|
t.Errorf("cannot flush: %s", err)
|
|
return
|
|
}
|
|
}
|