1 package d2svg
2
3 import (
4 "testing"
5
6 "oss.terrastruct.com/d2/d2target"
7 )
8
9 func TestSortObjects(t *testing.T) {
10 allObjects := []DiagramObject{
11
12 d2target.Shape{
13 ID: "0",
14 ZIndex: 0,
15 Level: 0,
16 },
17 d2target.Shape{
18 ID: "1",
19 ZIndex: 0,
20 Level: 0,
21 },
22
23 d2target.Shape{
24 ID: "2",
25 ZIndex: 0,
26 Level: 1,
27 },
28 d2target.Shape{
29 ID: "3",
30 ZIndex: 0,
31 Level: 0,
32 },
33
34 d2target.Shape{
35 ID: "4",
36 ZIndex: 1,
37 Level: 0,
38 },
39
40 d2target.Connection{
41 ID: "5",
42 ZIndex: 0,
43 },
44 d2target.Connection{
45 ID: "6",
46 ZIndex: 0,
47 },
48
49 d2target.Connection{
50 ID: "7",
51 ZIndex: 2,
52 },
53
54 d2target.Connection{
55 ID: "8",
56 ZIndex: -1,
57 },
58 }
59
60 expectedOrder := []DiagramObject{
61 allObjects[8],
62 allObjects[0],
63 allObjects[1],
64 allObjects[3],
65 allObjects[2],
66 allObjects[5],
67 allObjects[6],
68 allObjects[4],
69 allObjects[7],
70 }
71
72 sortObjects(allObjects)
73
74 if len(allObjects) != len(expectedOrder) {
75 t.Fatal("number of objects changed while sorting")
76 }
77
78 for i := 0; i < len(allObjects); i++ {
79 if allObjects[i].GetID() != expectedOrder[i].GetID() {
80 t.Fatalf("object order differs at index %d, got '%s' expected '%s'", i, allObjects[i].GetID(), expectedOrder[i].GetID())
81 }
82 }
83 }
84
View as plain text