d2/d2ir/d2ir_test.go

78 lines
1.6 KiB
Go
Raw Normal View History

package d2ir_test
import (
"testing"
"oss.terrastruct.com/d2/d2ast"
"oss.terrastruct.com/d2/d2ir"
"oss.terrastruct.com/d2/internal/assert"
)
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{
parent: nil,
Value: d2ast.FlatUnquotedString(scalStr),
}
a := &d2ir.Array{
Parent: nil,
Values: []d2ir.Value{
&d2ir.Scalar{
parent: nil,
Value: &d2ast.Boolean{
Value: true,
},
},
},
}
m2 := &d2ir.Map{
Parent: nil,
Fields: []*d2ir.Field{
{Primary: s},
},
}
const keyStr = `Absence makes the heart grow frantic.`
f := &d2ir.Field{
Parent: nil,
Name: keyStr,
Primary: s,
Composite: a,
}
e := &d2ir.Edge{
Parent: nil,
Primary: s,
Map: m2,
}
m := &d2ir.Map{
Parent: nil,
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.`
assert.Equal(t, m, m.Fields[0].Parent)
assert.Equal(t, keyStr, m.Fields[0].Name)
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,
m.Fields[0].Composite.(*d2ir.Array).Values[0].(*d2ir.Scalar).parent,
)
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)
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)
}