mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
146 lines
2.7 KiB
Go
146 lines
2.7 KiB
Go
package knowledge
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewStore(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_test_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
if err := s.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer s.Stop()
|
|
|
|
if s == nil {
|
|
t.Fatal("store should not be nil")
|
|
}
|
|
}
|
|
|
|
func TestAddAndSearch(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_add_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
if err := s.Add("coffee", "咖啡是一种饮品,含有咖啡因"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
results := s.Search("咖啡", 5)
|
|
if len(results) == 0 {
|
|
t.Fatal("expected results for '咖啡'")
|
|
}
|
|
}
|
|
|
|
func TestList(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_list_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
s.Add("topic1", "内容一")
|
|
s.Add("topic2", "内容二")
|
|
|
|
list := s.List()
|
|
if len(list) != 2 {
|
|
t.Errorf("expected 2 items, got %d", len(list))
|
|
}
|
|
}
|
|
|
|
func TestRemove(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_rm_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
s.Add("test", "测试内容")
|
|
if err := s.Remove("test"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
list := s.List()
|
|
if len(list) != 0 {
|
|
t.Errorf("expected 0 items after remove, got %d", len(list))
|
|
}
|
|
}
|
|
|
|
func TestRemoveNotFound(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_notfound_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
if err := s.Remove("nonexistent"); err != nil {
|
|
t.Errorf("remove nonexistent should not error, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestStats(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_stats_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
s.Add("a", "内容A")
|
|
s.Add("b", "内容B")
|
|
|
|
stats := s.Stats()
|
|
if stats["knowledge_count"].(int) != 2 {
|
|
t.Errorf("expected knowledge_count 2, got %v", stats["knowledge_count"])
|
|
}
|
|
if stats["vector_count"] == nil {
|
|
t.Error("expected vector_count in stats")
|
|
}
|
|
}
|
|
|
|
func TestSearchNoMatch(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "know_nomatch_*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
s := NewStore(dir)
|
|
s.Start()
|
|
defer s.Stop()
|
|
|
|
s.Add("math", "加减乘除是基本运算")
|
|
// "电电电电电" 中的字符 "电" 不在文档 "math 加减乘除是基本运算" 的任意 unigram 中
|
|
results := s.Search("电电电电电", 5)
|
|
if len(results) != 0 {
|
|
t.Errorf("expected 0 results for non-matching query, got %d", len(results))
|
|
}
|
|
}
|