79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package node
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
// 辅助函数:创建临时文件系统
|
|
func setupTestFileSystem(t *testing.T) (string, *PathNode) {
|
|
tempDir, err := os.MkdirTemp("", "test-scan")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
|
|
// 创建子目录和文件
|
|
subDir := tempDir + "/subdir"
|
|
err = os.Mkdir(subDir, 0755)
|
|
if err != nil {
|
|
t.Fatalf("Failed to create sub directory: %v", err)
|
|
}
|
|
|
|
tempFile, err := os.CreateTemp(subDir, "testfile")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp file: %v", err)
|
|
}
|
|
tempFile.Close()
|
|
|
|
// 创建 PathNode
|
|
pn := NewPathNode(tempDir)
|
|
|
|
return tempDir, pn
|
|
}
|
|
|
|
// 辅助函数:验证扫描结果
|
|
func verifyScanResult(t *testing.T, pn *PathNode) {
|
|
if pn.node_type != DIR {
|
|
t.Errorf("Expected node type DIR, got %v", pn.node_type)
|
|
}
|
|
if pn.count != 3 { // 1 for the subdir, 1 for the file
|
|
t.Errorf("Expected count 3, got %v", pn.count)
|
|
}
|
|
}
|
|
|
|
func TestIterScanNode(t *testing.T) {
|
|
tempDir, pn := setupTestFileSystem(t)
|
|
defer os.RemoveAll(tempDir)
|
|
|
|
err := pn.IterScanNode()
|
|
if err != nil {
|
|
t.Errorf("IterScanNode failed: %v", err)
|
|
}
|
|
|
|
verifyScanResult(t, pn)
|
|
}
|
|
|
|
func TestFastIterScanNode(t *testing.T) {
|
|
tempDir, pn := setupTestFileSystem(t)
|
|
defer os.RemoveAll(tempDir)
|
|
|
|
err := pn.FastIterScanNode()
|
|
if err != nil {
|
|
t.Errorf("FastIterScanNode failed: %v", err)
|
|
}
|
|
|
|
verifyScanResult(t, pn)
|
|
}
|
|
|
|
func TestFastChanIterScanNode(t *testing.T) {
|
|
tempDir, pn := setupTestFileSystem(t)
|
|
defer os.RemoveAll(tempDir)
|
|
|
|
err := pn.FastChanIterScanNode(0) // 使用默认的 maxWorker
|
|
if err != nil {
|
|
t.Errorf("FastChanIterScanNode failed: %v", err)
|
|
}
|
|
|
|
verifyScanResult(t, pn)
|
|
}
|