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