goncdu/node/scan_test.go
2025-02-10 16:26:13 +08:00

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)
}