测试:完善和优化测试用例

- 优化 schema 测试用例,增加边界条件测试
- 完善 table、index、database 等模块的测试
- 改进测试数据清理和错误处理
- 更新示例程序以使用最新 API
- 增强测试覆盖率和可靠性
This commit is contained in:
2025-10-09 21:47:14 +08:00
parent 1c1b84c9c7
commit 13cc622e46
14 changed files with 812 additions and 132 deletions

View File

@@ -11,9 +11,12 @@ func TestIndexVersionControl(t *testing.T) {
os.MkdirAll(dir, 0755)
defer os.RemoveAll(dir)
testSchema := NewSchema("test", []Field{
testSchema, err := NewSchema("test", []Field{
{Name: "name", Type: FieldTypeString, Indexed: true, Comment: "名称"},
})
if err != nil {
t.Fatal(err)
}
// 1. 创建索引管理器
mgr := NewIndexManager(dir, testSchema)
@@ -72,9 +75,12 @@ func TestIncrementalUpdate(t *testing.T) {
os.MkdirAll(dir, 0755)
defer os.RemoveAll(dir)
testSchema := NewSchema("test", []Field{
testSchema, err := NewSchema("test", []Field{
{Name: "name", Type: FieldTypeString, Indexed: true, Comment: "名称"},
})
if err != nil {
t.Fatal(err)
}
// 1. 创建索引并添加初始数据
mgr := NewIndexManager(dir, testSchema)
@@ -103,7 +109,7 @@ func TestIncrementalUpdate(t *testing.T) {
}
// 3. 增量更新
err := idx.IncrementalUpdate(getData, 3, 5)
err = idx.IncrementalUpdate(getData, 3, 5)
if err != nil {
t.Fatal(err)
}
@@ -143,9 +149,12 @@ func TestNeedsUpdate(t *testing.T) {
os.MkdirAll(dir, 0755)
defer os.RemoveAll(dir)
testSchema := NewSchema("test", []Field{
testSchema, err := NewSchema("test", []Field{
{Name: "name", Type: FieldTypeString, Indexed: true, Comment: "名称"},
})
if err != nil {
t.Fatal(err)
}
mgr := NewIndexManager(dir, testSchema)
mgr.CreateIndex("name")
@@ -174,16 +183,19 @@ func TestIndexPersistence(t *testing.T) {
defer os.RemoveAll(dir)
// 创建 Schema
testSchema := NewSchema("test", []Field{
testSchema, err := NewSchema("test", []Field{
{Name: "name", Type: FieldTypeString, Indexed: true, Comment: "名称"},
{Name: "age", Type: FieldTypeInt64, Indexed: true, Comment: "年龄"},
})
if err != nil {
t.Fatal(err)
}
// 1. 创建索引管理器
mgr := NewIndexManager(dir, testSchema)
// 2. 创建索引
err := mgr.CreateIndex("name")
err = mgr.CreateIndex("name")
if err != nil {
t.Fatal(err)
}
@@ -253,9 +265,12 @@ func TestIndexDropWithFile(t *testing.T) {
os.MkdirAll(dir, 0755)
defer os.RemoveAll(dir)
testSchema := NewSchema("test", []Field{
testSchema, err := NewSchema("test", []Field{
{Name: "name", Type: FieldTypeString, Indexed: true, Comment: "名称"},
})
if err != nil {
t.Fatal(err)
}
mgr := NewIndexManager(dir, testSchema)
@@ -272,7 +287,7 @@ func TestIndexDropWithFile(t *testing.T) {
}
// 删除索引
err := mgr.DropIndex("name")
err = mgr.DropIndex("name")
if err != nil {
t.Fatal(err)
}
@@ -290,11 +305,14 @@ func TestIndexQueryIntegration(t *testing.T) {
tmpDir := t.TempDir()
// 1. 创建带索引字段的 Schema
schema := NewSchema("users", []Field{
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString, Indexed: false},
{Name: "email", Type: FieldTypeString, Indexed: true}, // email 字段有索引
{Name: "age", Type: FieldTypeInt64, Indexed: false},
})
if err != nil {
t.Fatal(err)
}
// 2. 打开表
table, err := OpenTable(&TableOptions{
@@ -450,11 +468,14 @@ func TestIndexPersistenceAcrossRestart(t *testing.T) {
// 1. 第一次打开:创建数据和索引
{
schema := NewSchema("products", []Field{
schema, err := NewSchema("products", []Field{
{Name: "name", Type: FieldTypeString, Indexed: false},
{Name: "category", Type: FieldTypeString, Indexed: true},
{Name: "price", Type: FieldTypeInt64, Indexed: false},
})
if err != nil {
t.Fatal(err)
}
table, err := OpenTable(&TableOptions{
Dir: tmpDir,