d2/d2ir/d2ir_test.go

72 lines
1.5 KiB
Go
Raw Normal View History

package d2ir_test
import (
"testing"
2023-01-11 19:05:50 +00:00
"oss.terrastruct.com/util-go/assert"
"oss.terrastruct.com/d2/d2ast"
"oss.terrastruct.com/d2/d2ir"
)
func TestCopy(t *testing.T) {
t.Parallel()
const scalStr = `Those who claim the dead never return to life haven't ever been around.`
s := &d2ir.Scalar{
2023-01-11 19:05:50 +00:00
Value: d2ast.FlatUnquotedString(scalStr),
}
a := &d2ir.Array{
Values: []d2ir.Value{
&d2ir.Scalar{
Value: &d2ast.Boolean{
Value: true,
},
},
},
}
m2 := &d2ir.Map{
Fields: []*d2ir.Field{
{Primary: s},
},
}
const keyStr = `Absence makes the heart grow frantic.`
f := &d2ir.Field{
2023-01-11 19:05:50 +00:00
Name: keyStr,
Primary: s,
Composite: a,
}
e := &d2ir.Edge{
Primary: s,
Map: m2,
}
m := &d2ir.Map{
Fields: []*d2ir.Field{f},
Edges: []*d2ir.Edge{e},
}
m = m.Copy(nil).(*d2ir.Map)
f.Name = `Many a wife thinks her husband is the world's greatest lover.`
2023-01-11 19:05:50 +00:00
assert.Equal(t, m, m.Fields[0].Parent())
assert.Equal(t, keyStr, m.Fields[0].Name)
2023-01-11 19:05:50 +00:00
assert.Equal(t, m.Fields[0], m.Fields[0].Primary.Parent())
assert.Equal(t, m.Fields[0], m.Fields[0].Composite.(*d2ir.Array).Parent())
assert.Equal(t,
m.Fields[0].Composite,
2023-01-11 19:05:50 +00:00
m.Fields[0].Composite.(*d2ir.Array).Values[0].(*d2ir.Scalar).Parent(),
)
2023-01-11 19:05:50 +00:00
assert.Equal(t, m, m.Edges[0].Parent())
assert.Equal(t, m.Edges[0], m.Edges[0].Primary.Parent())
assert.Equal(t, m.Edges[0], m.Edges[0].Map.Parent())
2023-01-11 19:05:50 +00:00
assert.Equal(t, m.Edges[0].Map, m.Edges[0].Map.Fields[0].Parent())
assert.Equal(t, m.Edges[0].Map.Fields[0], m.Edges[0].Map.Fields[0].Primary.Parent())
}