2022-11-03 13:54:49 +00:00
|
|
|
package d2graph_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"strings"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
|
|
|
|
|
"oss.terrastruct.com/d2/d2compiler"
|
|
|
|
|
"oss.terrastruct.com/d2/d2graph"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestSerialization(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
2023-07-14 20:08:26 +00:00
|
|
|
g, _, err := d2compiler.Compile("", strings.NewReader("a.a.b -> a.a.c"), nil)
|
2022-12-12 00:17:55 +00:00
|
|
|
assert.Nil(t, err)
|
2022-11-03 13:54:49 +00:00
|
|
|
|
|
|
|
|
asserts := func(g *d2graph.Graph) {
|
2023-02-17 18:44:33 +00:00
|
|
|
a := g.Root.ChildrenArray[0]
|
|
|
|
|
a_a := a.ChildrenArray[0]
|
|
|
|
|
|
2022-11-03 13:54:49 +00:00
|
|
|
assert.Equal(t, 4, len(g.Objects))
|
|
|
|
|
assert.Equal(t, 1, len(g.Root.ChildrenArray))
|
2023-02-17 18:44:33 +00:00
|
|
|
assert.Equal(t, 1, len(a.ChildrenArray))
|
|
|
|
|
assert.Equal(t, 2, len(a_a.ChildrenArray))
|
|
|
|
|
assert.Equal(t, a, a_a.Parent)
|
|
|
|
|
assert.Equal(t, g.Root, a.Parent)
|
2022-11-03 13:54:49 +00:00
|
|
|
|
2023-02-17 18:35:13 +00:00
|
|
|
assert.Contains(t, a.Children, "a")
|
2023-02-17 18:44:33 +00:00
|
|
|
assert.Contains(t, a_a.Children, "b")
|
|
|
|
|
assert.Contains(t, a_a.Children, "c")
|
2023-02-17 18:35:13 +00:00
|
|
|
|
2022-11-03 13:54:49 +00:00
|
|
|
assert.Equal(t, 1, len(g.Edges))
|
|
|
|
|
assert.Equal(t, "b", g.Edges[0].Src.ID)
|
|
|
|
|
assert.Equal(t, "c", g.Edges[0].Dst.ID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
asserts(g)
|
|
|
|
|
|
|
|
|
|
b, err := d2graph.SerializeGraph(g)
|
2022-12-12 00:17:55 +00:00
|
|
|
assert.Nil(t, err)
|
2022-11-03 13:54:49 +00:00
|
|
|
|
|
|
|
|
var newG d2graph.Graph
|
|
|
|
|
err = d2graph.DeserializeGraph(b, &newG)
|
2022-12-12 00:17:55 +00:00
|
|
|
assert.Nil(t, err)
|
2022-11-03 13:54:49 +00:00
|
|
|
|
|
|
|
|
asserts(&newG)
|
|
|
|
|
}
|
2022-12-12 00:17:55 +00:00
|
|
|
|
|
|
|
|
func TestCasingRegression(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
|
|
script := `UserCreatedTypeField`
|
|
|
|
|
|
2023-07-14 20:08:26 +00:00
|
|
|
g, _, err := d2compiler.Compile("", strings.NewReader(script), nil)
|
2022-12-12 00:17:55 +00:00
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
|
|
_, ok := g.Root.HasChild([]string{"UserCreatedTypeField"})
|
|
|
|
|
assert.True(t, ok)
|
|
|
|
|
|
|
|
|
|
b, err := d2graph.SerializeGraph(g)
|
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
|
|
var newG d2graph.Graph
|
|
|
|
|
err = d2graph.DeserializeGraph(b, &newG)
|
|
|
|
|
assert.Nil(t, err)
|
|
|
|
|
|
|
|
|
|
_, ok = newG.Root.HasChild([]string{"UserCreatedTypeField"})
|
|
|
|
|
assert.True(t, ok)
|
|
|
|
|
}
|