diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/tree/IssueIAUSHRTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/tree/IssueIAUSHRTest.java index 574d8c318..67bbce7b9 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/tree/IssueIAUSHRTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/tree/IssueIAUSHRTest.java @@ -2,6 +2,7 @@ package org.dromara.hutool.core.tree; import lombok.Data; import org.dromara.hutool.core.tree.parser.NodeParser; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -10,9 +11,49 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; public class IssueIAUSHRTest { + + private final NodeParser nodeParser = (dept, tree) -> + tree.setId(dept.getDeptId()) + .setParentId(dept.getParentId()) + .setName(dept.getDeptName()); + + private final TreeNodeConfig treeNodeConfig = new TreeNodeConfig() + .setIdKey("deptId") + .setNameKey("deptName") + .setParentIdKey("parentId"); + + /** + * 理论上,你所有节点的ID都不应该重复,那你要构建一个列表形式的树结构,指定的这个rootId应该是A节点的parentId,而非A的id + */ + @Test + void buildTest() { + final List list = mockData(); + + final List> build = TreeUtil.build(list, null, treeNodeConfig, nodeParser); + Assertions.assertEquals(1, build.size()); + assertEquals("A", build.get(0).getName()); + assertEquals(2, build.get(0).getChildren().size()); + assertEquals("B", build.get(0).getChildren().get(0).getName()); + assertEquals("C", build.get(0).getChildren().get(1).getName()); + } + + /** + * 构建单节点时,如果指定的节点存在,则这个节点作为根节点 + */ @Test void buildSingleTest() { - final List list= new ArrayList<>(); + final List list = mockData(); + + final MapTree longTree = TreeUtil.buildSingle(list, 1L, treeNodeConfig, nodeParser); + + assertEquals("A", longTree.getName()); + assertEquals(2, longTree.getChildren().size()); + assertEquals("B", longTree.getChildren().get(0).getName()); + assertEquals("C", longTree.getChildren().get(1).getName()); + } + + private List mockData() { + final List list = new ArrayList<>(); TestDept sysDept = new TestDept(); sysDept.setDeptId(1L); sysDept.setDeptName("A"); @@ -31,26 +72,11 @@ public class IssueIAUSHRTest { sysDept.setParentId(1L); list.add(sysDept); - final TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); - treeNodeConfig.setIdKey("deptId"); - treeNodeConfig.setNameKey("deptName"); - treeNodeConfig.setParentIdKey("parentId"); - - final NodeParser nodeParser= (dept, tree) -> - tree.setId(dept.getDeptId()) - .setParentId(dept.getParentId()) - .setName(dept.getDeptName()); - - final MapTree longTree = TreeUtil.buildSingle(list, 1L, treeNodeConfig, nodeParser); - - assertEquals("A", longTree.getName()); - assertEquals(2, longTree.getChildren().size()); - assertEquals("B", longTree.getChildren().get(0).getName()); - assertEquals("C", longTree.getChildren().get(1).getName()); + return list; } @Data - public static class TestDept { + static class TestDept { private Long deptId; private String deptName; private Long parentId;