mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-18 01:44:38 +08:00
refactor: standardize code comments
This commit is contained in:
@@ -7,49 +7,49 @@ import (
|
||||
)
|
||||
|
||||
func TestPromptManager_LoadTemplates(t *testing.T) {
|
||||
// 创建临时目录用于测试
|
||||
// Create temporary directory for testing
|
||||
tempDir := t.TempDir()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
setupFiles map[string]string // 文件名 -> 内容
|
||||
setupFiles map[string]string // filename -> content
|
||||
expectedCount int
|
||||
expectedNames []string
|
||||
shouldError bool
|
||||
}{
|
||||
{
|
||||
name: "加载单个模板文件",
|
||||
name: "Load single template file",
|
||||
setupFiles: map[string]string{
|
||||
"default.txt": "你是专业的加密货币交易AI。",
|
||||
"default.txt": "You are a professional cryptocurrency trading AI.",
|
||||
},
|
||||
expectedCount: 1,
|
||||
expectedNames: []string{"default"},
|
||||
shouldError: false,
|
||||
},
|
||||
{
|
||||
name: "加载多个模板文件",
|
||||
name: "Load multiple template files",
|
||||
setupFiles: map[string]string{
|
||||
"default.txt": "默认策略",
|
||||
"conservative.txt": "保守策略",
|
||||
"aggressive.txt": "激进策略",
|
||||
"default.txt": "Default strategy",
|
||||
"conservative.txt": "Conservative strategy",
|
||||
"aggressive.txt": "Aggressive strategy",
|
||||
},
|
||||
expectedCount: 3,
|
||||
expectedNames: []string{"default", "conservative", "aggressive"},
|
||||
shouldError: false,
|
||||
},
|
||||
{
|
||||
name: "空目录",
|
||||
name: "Empty directory",
|
||||
setupFiles: map[string]string{},
|
||||
expectedCount: 0,
|
||||
expectedNames: []string{},
|
||||
shouldError: false,
|
||||
},
|
||||
{
|
||||
name: "忽略非.txt文件",
|
||||
name: "Ignore non-.txt files",
|
||||
setupFiles: map[string]string{
|
||||
"default.txt": "正确的模板",
|
||||
"readme.md": "应该被忽略",
|
||||
"config.json": "应该被忽略",
|
||||
"default.txt": "Correct template",
|
||||
"readme.md": "Should be ignored",
|
||||
"config.json": "Should be ignored",
|
||||
},
|
||||
expectedCount: 1,
|
||||
expectedNames: []string{"default"},
|
||||
@@ -59,57 +59,57 @@ func TestPromptManager_LoadTemplates(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// 为每个测试用例创建独立的子目录
|
||||
// Create independent subdirectory for each test case
|
||||
testDir := filepath.Join(tempDir, tt.name)
|
||||
if err := os.MkdirAll(testDir, 0755); err != nil {
|
||||
t.Fatalf("创建测试目录失败: %v", err)
|
||||
t.Fatalf("Failed to create test directory: %v", err)
|
||||
}
|
||||
|
||||
// 设置测试文件
|
||||
// Setup test files
|
||||
for filename, content := range tt.setupFiles {
|
||||
filePath := filepath.Join(testDir, filename)
|
||||
if err := os.WriteFile(filePath, []byte(content), 0644); err != nil {
|
||||
t.Fatalf("创建测试文件失败 %s: %v", filename, err)
|
||||
t.Fatalf("Failed to create test file %s: %v", filename, err)
|
||||
}
|
||||
}
|
||||
|
||||
// 创建新的 PromptManager
|
||||
// Create new PromptManager
|
||||
pm := NewPromptManager()
|
||||
|
||||
// 执行测试
|
||||
// Execute test
|
||||
err := pm.LoadTemplates(testDir)
|
||||
|
||||
// 检查错误
|
||||
// Check error
|
||||
if (err != nil) != tt.shouldError {
|
||||
t.Errorf("LoadTemplates() error = %v, shouldError %v", err, tt.shouldError)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查加载的模板数量
|
||||
// Check loaded template count
|
||||
if len(pm.templates) != tt.expectedCount {
|
||||
t.Errorf("加载的模板数量 = %d, 期望 %d", len(pm.templates), tt.expectedCount)
|
||||
t.Errorf("Loaded template count = %d, expected %d", len(pm.templates), tt.expectedCount)
|
||||
}
|
||||
|
||||
// 检查模板名称
|
||||
// Check template names
|
||||
for _, expectedName := range tt.expectedNames {
|
||||
if _, exists := pm.templates[expectedName]; !exists {
|
||||
t.Errorf("缺少预期的模板: %s", expectedName)
|
||||
t.Errorf("Missing expected template: %s", expectedName)
|
||||
}
|
||||
}
|
||||
|
||||
// 验证模板内容
|
||||
// Verify template content
|
||||
for filename, expectedContent := range tt.setupFiles {
|
||||
if filepath.Ext(filename) != ".txt" {
|
||||
continue
|
||||
}
|
||||
templateName := filename[:len(filename)-4] // 去掉 .txt
|
||||
templateName := filename[:len(filename)-4] // Remove .txt
|
||||
template, err := pm.GetTemplate(templateName)
|
||||
if err != nil {
|
||||
t.Errorf("获取模板 %s 失败: %v", templateName, err)
|
||||
t.Errorf("Failed to get template %s: %v", templateName, err)
|
||||
continue
|
||||
}
|
||||
if template.Content != expectedContent {
|
||||
t.Errorf("模板内容不匹配\n期望: %s\n实际: %s", expectedContent, template.Content)
|
||||
t.Errorf("Template content mismatch\nExpected: %s\nActual: %s", expectedContent, template.Content)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -121,11 +121,11 @@ func TestPromptManager_GetTemplate(t *testing.T) {
|
||||
pm.templates = map[string]*PromptTemplate{
|
||||
"default": {
|
||||
Name: "default",
|
||||
Content: "默认策略内容",
|
||||
Content: "Default strategy content",
|
||||
},
|
||||
"aggressive": {
|
||||
Name: "aggressive",
|
||||
Content: "激进策略内容",
|
||||
Content: "Aggressive strategy content",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -136,13 +136,13 @@ func TestPromptManager_GetTemplate(t *testing.T) {
|
||||
expectedContent string
|
||||
}{
|
||||
{
|
||||
name: "获取存在的模板",
|
||||
name: "Get existing template",
|
||||
templateName: "default",
|
||||
expectError: false,
|
||||
expectedContent: "默认策略内容",
|
||||
expectedContent: "Default strategy content",
|
||||
},
|
||||
{
|
||||
name: "获取不存在的模板",
|
||||
name: "Get non-existent template",
|
||||
templateName: "nonexistent",
|
||||
expectError: true,
|
||||
},
|
||||
@@ -158,7 +158,7 @@ func TestPromptManager_GetTemplate(t *testing.T) {
|
||||
}
|
||||
|
||||
if !tt.expectError && template.Content != tt.expectedContent {
|
||||
t.Errorf("模板内容 = %s, 期望 %s", template.Content, tt.expectedContent)
|
||||
t.Errorf("Template content = %s, expected %s", template.Content, tt.expectedContent)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -167,76 +167,76 @@ func TestPromptManager_GetTemplate(t *testing.T) {
|
||||
func TestPromptManager_ReloadTemplates(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
|
||||
// 初始文件
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "default.txt"), []byte("初始内容"), 0644); err != nil {
|
||||
t.Fatalf("创建初始文件失败: %v", err)
|
||||
// Initial file
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "default.txt"), []byte("Initial content"), 0644); err != nil {
|
||||
t.Fatalf("Failed to create initial file: %v", err)
|
||||
}
|
||||
|
||||
pm := NewPromptManager()
|
||||
if err := pm.LoadTemplates(tempDir); err != nil {
|
||||
t.Fatalf("初始加载失败: %v", err)
|
||||
t.Fatalf("Initial load failed: %v", err)
|
||||
}
|
||||
|
||||
// 验证初始内容
|
||||
// Verify initial content
|
||||
template, _ := pm.GetTemplate("default")
|
||||
if template.Content != "初始内容" {
|
||||
t.Errorf("初始内容不正确: %s", template.Content)
|
||||
if template.Content != "Initial content" {
|
||||
t.Errorf("Initial content incorrect: %s", template.Content)
|
||||
}
|
||||
|
||||
// 修改文件内容
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "default.txt"), []byte("更新后内容"), 0644); err != nil {
|
||||
t.Fatalf("更新文件失败: %v", err)
|
||||
// Modify file content
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "default.txt"), []byte("Updated content"), 0644); err != nil {
|
||||
t.Fatalf("Failed to update file: %v", err)
|
||||
}
|
||||
|
||||
// 添加新文件
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "new.txt"), []byte("新模板内容"), 0644); err != nil {
|
||||
t.Fatalf("创建新文件失败: %v", err)
|
||||
// Add new file
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "new.txt"), []byte("New template content"), 0644); err != nil {
|
||||
t.Fatalf("Failed to create new file: %v", err)
|
||||
}
|
||||
|
||||
// 重新加载
|
||||
// Reload
|
||||
if err := pm.ReloadTemplates(tempDir); err != nil {
|
||||
t.Fatalf("重新加载失败: %v", err)
|
||||
t.Fatalf("Reload failed: %v", err)
|
||||
}
|
||||
|
||||
// 验证更新后的内容
|
||||
// Verify updated content
|
||||
template, err := pm.GetTemplate("default")
|
||||
if err != nil {
|
||||
t.Fatalf("获取 default 模板失败: %v", err)
|
||||
t.Fatalf("Failed to get default template: %v", err)
|
||||
}
|
||||
if template.Content != "更新后内容" {
|
||||
t.Errorf("重新加载后内容不正确: got %s, want '更新后内容'", template.Content)
|
||||
if template.Content != "Updated content" {
|
||||
t.Errorf("Content after reload incorrect: got %s, want 'Updated content'", template.Content)
|
||||
}
|
||||
|
||||
// 验证新模板
|
||||
// Verify new template
|
||||
newTemplate, err := pm.GetTemplate("new")
|
||||
if err != nil {
|
||||
t.Fatalf("获取 new 模板失败: %v", err)
|
||||
t.Fatalf("Failed to get new template: %v", err)
|
||||
}
|
||||
if newTemplate.Content != "新模板内容" {
|
||||
t.Errorf("新模板内容不正确: %s", newTemplate.Content)
|
||||
if newTemplate.Content != "New template content" {
|
||||
t.Errorf("New template content incorrect: %s", newTemplate.Content)
|
||||
}
|
||||
|
||||
// 验证模板数量
|
||||
// Verify template count
|
||||
if len(pm.templates) != 2 {
|
||||
t.Errorf("重新加载后模板数量 = %d, 期望 2", len(pm.templates))
|
||||
t.Errorf("Template count after reload = %d, expected 2", len(pm.templates))
|
||||
}
|
||||
}
|
||||
|
||||
func TestPromptManager_GetAllTemplateNames(t *testing.T) {
|
||||
pm := NewPromptManager()
|
||||
pm.templates = map[string]*PromptTemplate{
|
||||
"default": {Name: "default", Content: "默认策略"},
|
||||
"conservative": {Name: "conservative", Content: "保守策略"},
|
||||
"aggressive": {Name: "aggressive", Content: "激进策略"},
|
||||
"default": {Name: "default", Content: "Default strategy"},
|
||||
"conservative": {Name: "conservative", Content: "Conservative strategy"},
|
||||
"aggressive": {Name: "aggressive", Content: "Aggressive strategy"},
|
||||
}
|
||||
|
||||
names := pm.GetAllTemplateNames()
|
||||
|
||||
if len(names) != 3 {
|
||||
t.Errorf("GetAllTemplateNames() 返回数量 = %d, 期望 3", len(names))
|
||||
t.Errorf("GetAllTemplateNames() returned count = %d, expected 3", len(names))
|
||||
}
|
||||
|
||||
// 验证所有名称都存在
|
||||
// Verify all names exist
|
||||
nameMap := make(map[string]bool)
|
||||
for _, name := range names {
|
||||
nameMap[name] = true
|
||||
@@ -245,41 +245,41 @@ func TestPromptManager_GetAllTemplateNames(t *testing.T) {
|
||||
expectedNames := []string{"default", "conservative", "aggressive"}
|
||||
for _, expectedName := range expectedNames {
|
||||
if !nameMap[expectedName] {
|
||||
t.Errorf("缺少预期的模板名称: %s", expectedName)
|
||||
t.Errorf("Missing expected template name: %s", expectedName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestReloadPromptTemplates_GlobalFunction(t *testing.T) {
|
||||
// 保存原始的 promptsDir
|
||||
// Save original promptsDir
|
||||
originalDir := promptsDir
|
||||
defer func() {
|
||||
promptsDir = originalDir
|
||||
// 恢复原始模板
|
||||
// Restore original templates
|
||||
globalPromptManager.ReloadTemplates(originalDir)
|
||||
}()
|
||||
|
||||
// 创建临时目录
|
||||
// Create temporary directory
|
||||
tempDir := t.TempDir()
|
||||
promptsDir = tempDir
|
||||
|
||||
// 创建测试文件
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "test.txt"), []byte("测试内容"), 0644); err != nil {
|
||||
t.Fatalf("创建测试文件失败: %v", err)
|
||||
// Create test file
|
||||
if err := os.WriteFile(filepath.Join(tempDir, "test.txt"), []byte("Test content"), 0644); err != nil {
|
||||
t.Fatalf("Failed to create test file: %v", err)
|
||||
}
|
||||
|
||||
// 调用全局重新加载函数
|
||||
// Call global reload function
|
||||
if err := ReloadPromptTemplates(); err != nil {
|
||||
t.Fatalf("ReloadPromptTemplates() 失败: %v", err)
|
||||
t.Fatalf("ReloadPromptTemplates() failed: %v", err)
|
||||
}
|
||||
|
||||
// 验证全局管理器已更新
|
||||
// Verify global manager has been updated
|
||||
template, err := GetPromptTemplate("test")
|
||||
if err != nil {
|
||||
t.Fatalf("获取模板失败: %v", err)
|
||||
t.Fatalf("Failed to get template: %v", err)
|
||||
}
|
||||
|
||||
if template.Content != "测试内容" {
|
||||
t.Errorf("模板内容不正确: got %s, want '测试内容'", template.Content)
|
||||
if template.Content != "Test content" {
|
||||
t.Errorf("Template content incorrect: got %s, want 'Test content'", template.Content)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user