Skip to content

Commit 3ad6f84

Browse files
committed
2 parents 9408ad3 + b099caf commit 3ad6f84

File tree

1 file changed

+71
-16
lines changed

1 file changed

+71
-16
lines changed

Test/Masuit.Tools.Abstractions.Test/Tree/TreeTest.cs

Lines changed: 71 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class TreeTest
1212
public void Can_BuildTree()
1313
{
1414
// arrange
15-
var list = new List<MyClass>()
15+
List<MyClass> list = new()
1616
{
1717
new MyClass
1818
{
@@ -25,38 +25,38 @@ public void Can_BuildTree()
2525
Id = 20000
2626
}
2727
};
28-
for (int i = 2; i < 1500; i++)
28+
for(int i = 2 ; i < 1500 ; i++)
2929
{
3030
list.Add(new MyClass
3131
{
3232
Name = $"这是第{i}个子节点",
3333
Id = i,
34-
ParentId = (i - 1)
34+
ParentId = i - 1
3535
});
3636
}
3737

38-
for (int i = 20001; i < 40000; i++)
38+
for(int i = 20001 ; i < 40000 ; i++)
3939
{
4040
list.Add(new MyClass
4141
{
4242
Name = $"这是第{i}个子节点",
4343
Id = i,
44-
ParentId = (i - 1)
44+
ParentId = i - 1
4545
});
4646
}
4747

4848
// act
49-
var tree = list.ToTree();
49+
List<MyClass> tree = list.ToTree();
5050

5151
// assert
5252
Assert.Equal(tree[0].Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Id, 8);
5353
Assert.Equal(tree.Count, 2);
5454
Assert.Equal(tree[0].AllChildren().Count, 1498);
55-
var a = tree.Filter(c => c.Id == 39999).ToList();
55+
List<MyClass> a = tree.Filter(c => c.Id == 39999).ToList();
5656
Assert.Equal(a[0].Id, 39999);
57-
var raw = tree.Flatten().ToList();
57+
List<MyClass> raw = tree.Flatten().ToList();
5858
Assert.Equal(raw.Count, list.Count);
59-
var allParent = a[0].AllParent();
59+
List<MyClass> allParent = a[0].AllParent();
6060
Assert.Equal(allParent[0].AllChildren().Count, 19999);
6161
Assert.Equal(a[0].Root(), list[1]);
6262
Assert.StartsWith("Root", a[0].Path());
@@ -67,7 +67,7 @@ public void Can_BuildTree()
6767
public void Can_BuildTree2()
6868
{
6969
// arrange
70-
var list = new List<MyClass2>()
70+
List<MyClass2> list = new()
7171
{
7272
new MyClass2
7373
{
@@ -80,7 +80,7 @@ public void Can_BuildTree2()
8080
Id = "20000"
8181
}
8282
};
83-
for (int i = 2; i < 1500; i++)
83+
for(int i = 2 ; i < 1500 ; i++)
8484
{
8585
list.Add(new MyClass2
8686
{
@@ -90,7 +90,7 @@ public void Can_BuildTree2()
9090
});
9191
}
9292

93-
for (int i = 20001; i < 40000; i++)
93+
for(int i = 20001 ; i < 40000 ; i++)
9494
{
9595
list.Add(new MyClass2
9696
{
@@ -101,22 +101,70 @@ public void Can_BuildTree2()
101101
}
102102

103103
// act
104-
var tree = list.ToTree();
104+
List<MyClass2> tree = list.ToTree();
105105

106106
// assert
107107
Assert.Equal(tree[0].Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Children.FirstOrDefault().Id, "8");
108108
Assert.Equal(tree.Count, 2);
109109
Assert.Equal(tree[0].AllChildren().Count, 1498);
110-
var a = tree.Filter(c => c.Id == "39999").ToList();
110+
List<MyClass2> a = tree.Filter(c => c.Id == "39999").ToList();
111111
Assert.Equal(a[0].Id, "39999");
112-
var raw = tree.Flatten().ToList();
112+
List<MyClass2> raw = tree.Flatten().ToList();
113113
Assert.Equal(raw.Count, list.Count);
114-
var allParent = a[0].AllParent();
114+
List<MyClass2> allParent = a[0].AllParent();
115115
Assert.Equal(allParent[0].AllChildren().Count, 19999);
116116
Assert.Equal(a[0].Root(), list[1]);
117117
Assert.StartsWith("Root", a[0].Path());
118118
Assert.Equal(a[0].Level(), 20000);
119119
}
120+
121+
[Fact]
122+
public void Can_BuildTree3()
123+
{
124+
// 0-1-3
125+
// -4-5
126+
// -2
127+
MyClass3 tree0 = new()
128+
{
129+
Id = 0,
130+
ParentId = -1,
131+
};
132+
MyClass3 tree1 = new()
133+
{
134+
Id = 1,
135+
ParentId = 0,
136+
};
137+
MyClass3 tree2 = new()
138+
{
139+
Id = 2,
140+
ParentId = 0,
141+
};
142+
MyClass3 tree3 = new()
143+
{
144+
Id = 3,
145+
ParentId = 1,
146+
};
147+
MyClass3 tree4 = new()
148+
{
149+
Id = 4,
150+
ParentId = 1,
151+
};
152+
MyClass3 tree5 = new()
153+
{
154+
Id = 5,
155+
ParentId = 4,
156+
};
157+
158+
// 准备数据
159+
List<MyClass3> list = new() { tree0, tree1, tree2, tree3, tree4, tree5 };
160+
161+
// 执行
162+
List<Tree<MyClass3>> nodes = list.ToTreeGeneral(c => c.Id, c => c.ParentId, -1);
163+
164+
//验证
165+
Assert.NotNull(nodes);
166+
Assert.Equal(5, nodes.Flatten().Count()); // 错误,返回的节点数为 2
167+
}
120168
}
121169

122170
internal class MyClass : ITree<MyClass>, ITreeEntity<MyClass, int>
@@ -173,4 +221,11 @@ internal class MyClass2 : ITree<MyClass2>, ITreeEntity<MyClass2>
173221
/// 父级id
174222
/// </summary>
175223
public string ParentId { get; set; }
224+
}
225+
226+
internal class MyClass3
227+
{
228+
public long Id { get; set; }
229+
230+
public long ParentId { get; set; }
176231
}

0 commit comments

Comments
 (0)