-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpartial_test.go
161 lines (138 loc) · 4.17 KB
/
partial_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package dag
import (
"os"
"path/filepath"
"testing"
)
func TestGetPartial(t *testing.T) {
// Create a temporary test directory
testDir, err := os.MkdirTemp("", "dag_test_*")
if err != nil {
t.Fatalf("Failed to create temp directory: %v", err)
}
defer os.RemoveAll(testDir) // Clean up after test
// Generate test data with a known structure:
// - 5 items max per directory
// - 3 levels deep
// This ensures we have enough files to test partial DAG retrieval
GenerateDummyDirectory(filepath.Join(testDir, "input"), 3, 5, 1, 3)
// Create a test DAG from the directory with timestamp to ensure root is built correctly
dag, err := CreateDag(filepath.Join(testDir, "input"), true)
if err != nil {
t.Fatalf("Failed to create DAG: %v", err)
}
// Verify the DAG was created correctly
err = dag.Verify()
if err != nil {
t.Fatalf("DAG verification failed: %v", err)
}
// Count file leaves to ensure we have enough for testing
var fileCount int
for _, leaf := range dag.Leafs {
if leaf.Type == FileLeafType {
fileCount++
}
}
if fileCount < 3 {
t.Fatalf("Not enough file leaves in the DAG, got %d", fileCount)
}
// Test getting a partial DAG with the first three leaves
partial, err := dag.GetPartial(1, 3)
if err != nil {
t.Fatalf("Failed to get partial DAG: %v", err)
}
// Verify the partial DAG
err = partial.Verify()
if err != nil {
t.Errorf("Partial DAG verification failed: %v", err)
}
// Test invalid range
_, err = dag.GetPartial(1000, 2000)
if err == nil {
t.Error("GetPartial should handle invalid range gracefully")
}
}
func TestGetPartialSingleLeaf(t *testing.T) {
// Create a temporary test directory
testDir, err := os.MkdirTemp("", "dag_test_*")
if err != nil {
t.Fatalf("Failed to create temp directory: %v", err)
}
defer os.RemoveAll(testDir) // Clean up after test
// Generate test data with minimal structure:
// - 2 items max per directory (to ensure we have at least 2 files)
// - 1 level deep
GenerateDummyDirectory(filepath.Join(testDir, "input"), 2, 4, 1, 3)
// Create a test DAG from the directory with timestamp to ensure root is built correctly
dag, err := CreateDag(filepath.Join(testDir, "input"), true)
if err != nil {
t.Fatalf("Failed to create DAG: %v", err)
}
// Verify the DAG was created correctly
err = dag.Verify()
if err != nil {
t.Fatalf("DAG verification failed: %v", err)
}
// Count file leaves to ensure we have enough for testing
var fileCount int
for _, leaf := range dag.Leafs {
if leaf.Type == FileLeafType {
fileCount++
}
}
if fileCount < 1 {
t.Fatal("No file leaves found in the DAG")
}
// Test getting partial DAG with the first leaf
partial, err := dag.GetPartial(0, 1)
if err != nil {
t.Fatalf("Failed to get partial DAG: %v", err)
}
// Verify the partial DAG
err = partial.Verify()
if err != nil {
t.Errorf("Partial DAG verification failed: %v", err)
}
}
func TestGetPartialSingleChild(t *testing.T) {
// Create a temporary test directory
testDir, err := os.MkdirTemp("", "dag_test_*")
if err != nil {
t.Fatalf("Failed to create temp directory: %v", err)
}
defer os.RemoveAll(testDir) // Clean up after test
// Generate test data with a simple structure:
// - 2 items max per directory
// - 2 levels deep (to ensure we have a parent-child relationship)
GenerateDummyDirectory(filepath.Join(testDir, "input"), 2, 4, 2, 5)
// Create a test DAG from the directory with timestamp to ensure root is built correctly
dag, err := CreateDag(filepath.Join(testDir, "input"), true)
if err != nil {
t.Fatalf("Failed to create DAG: %v", err)
}
// Verify the DAG was created correctly
err = dag.Verify()
if err != nil {
t.Fatalf("DAG verification failed: %v", err)
}
// Count file leaves to ensure we have enough for testing
var fileCount int
for _, leaf := range dag.Leafs {
if leaf.Type == FileLeafType {
fileCount++
}
}
if fileCount < 1 {
t.Fatal("No file leaves found in the DAG")
}
// Test getting partial DAG with the first leaf
partial, err := dag.GetPartial(0, 1)
if err != nil {
t.Fatalf("Failed to get partial DAG: %v", err)
}
// Verify the partial DAG
err = partial.Verify()
if err != nil {
t.Errorf("Partial DAG verification failed: %v", err)
}
}