From d0b7a52caa3fe99e9b62bec6e5b5f35e414d3af6 Mon Sep 17 00:00:00 2001 From: nikkiing <1031497516@qq.com> Date: Tue, 28 Mar 2023 10:08:06 +0800 Subject: [PATCH] tree test --- pkg/tree/tree_test.go | 112 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 pkg/tree/tree_test.go diff --git a/pkg/tree/tree_test.go b/pkg/tree/tree_test.go new file mode 100644 index 0000000..2912490 --- /dev/null +++ b/pkg/tree/tree_test.go @@ -0,0 +1,112 @@ +package tree + +import ( + "reflect" + "testing" +) + +func TestSplit(t *testing.T) { + type args struct { + code string + length int + } + tests := []struct { + name string + args args + wantRes []string + }{ + { + name: "test1", + args: args{ + code: "A00001B00001C00001", + length: 6, + }, + wantRes: []string{"A00001B00001C00001", "A00001B00001", "A00001"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if gotRes := Split(tt.args.code, tt.args.length); !reflect.DeepEqual(gotRes, tt.wantRes) { + t.Errorf("Split() = %v, want %v", gotRes, tt.wantRes) + } + }) + } +} + +func TestTree(t *testing.T) { + type args[T any] struct { + data []T + parent string + length int + pathFunc func(d T) string + } + type testCase[T any] struct { + name string + args args[T] + wantRes []Node[T] + } + + type D struct { + Code string + Name string + } + + tests := []testCase[D]{ + { + name: "", + args: args[D]{ + data: []D{{Code: "A00001", Name: "A00001"}, {Code: "A00001B00001", Name: "A00001B00001"}, {Code: "A00001B00001C00001", Name: "A00001B00001C00001"}}, + parent: "", + length: 6, + pathFunc: func(d D) string { + return d.Code + }, + }, + wantRes: []Node[D]{ + { + Data: D{Code: "A00001", Name: "A00001"}, + Children: []Node[D]{ + { + Data: D{Code: "A00001B00001", Name: "A00001B00001"}, + Children: []Node[D]{ + { + Data: D{Code: "A00001B00001C00001", Name: "A00001B00001C00001"}, + Children: nil, + }, + }, + }, + }, + }, + }, + }, + { + name: "", + args: args[D]{ + data: []D{{Code: "A00001B00001", Name: "A00001B00001"}, {Code: "A00001B00001C00001", Name: "A00001B00001C00001"}}, + parent: "A00001", + length: 6, + pathFunc: func(d D) string { + return d.Code + }, + }, + wantRes: []Node[D]{ + { + Data: D{Code: "A00001B00001", Name: "A00001B00001"}, + Children: []Node[D]{ + { + Data: D{Code: "A00001B00001C00001", Name: "A00001B00001C00001"}, + Children: nil, + }, + }, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if gotRes := Tree(tt.args.data, tt.args.parent, tt.args.length, tt.args.pathFunc); !reflect.DeepEqual(gotRes, tt.wantRes) { + t.Errorf("Tree() = %v, want %v", gotRes, tt.wantRes) + } + }) + } +}