...

Source file src/oss.terrastruct.com/d2/d2ir/d2ir_test.go

Documentation: oss.terrastruct.com/d2/d2ir

     1  package d2ir_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"oss.terrastruct.com/util-go/assert"
     7  
     8  	"oss.terrastruct.com/d2/d2ast"
     9  	"oss.terrastruct.com/d2/d2ir"
    10  )
    11  
    12  func TestCopy(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	const scalStr = `Those who claim the dead never return to life haven't ever been around.`
    16  	s := &d2ir.Scalar{
    17  		Value: d2ast.FlatUnquotedString(scalStr),
    18  	}
    19  	a := &d2ir.Array{
    20  		Values: []d2ir.Value{
    21  			&d2ir.Scalar{
    22  				Value: &d2ast.Boolean{
    23  					Value: true,
    24  				},
    25  			},
    26  		},
    27  	}
    28  	m2 := &d2ir.Map{
    29  		Fields: []*d2ir.Field{
    30  			{Primary_: s},
    31  		},
    32  	}
    33  
    34  	const keyStr = `Absence makes the heart grow frantic.`
    35  	f := &d2ir.Field{
    36  		Name: keyStr,
    37  
    38  		Primary_:  s,
    39  		Composite: a,
    40  	}
    41  	e := &d2ir.Edge{
    42  		Primary_: s,
    43  		Map_:     m2,
    44  	}
    45  	m := &d2ir.Map{
    46  		Fields: []*d2ir.Field{f},
    47  		Edges:  []*d2ir.Edge{e},
    48  	}
    49  
    50  	m = m.Copy(nil).(*d2ir.Map)
    51  	f.Name = `Many a wife thinks her husband is the world's greatest lover.`
    52  
    53  	assert.Equal(t, m, m.Fields[0].Parent())
    54  	assert.Equal(t, keyStr, m.Fields[0].Name)
    55  	assert.Equal(t, m.Fields[0], m.Fields[0].Primary_.Parent())
    56  	assert.Equal(t, m.Fields[0], m.Fields[0].Composite.(*d2ir.Array).Parent())
    57  
    58  	assert.Equal(t,
    59  		m.Fields[0].Composite,
    60  		m.Fields[0].Composite.(*d2ir.Array).Values[0].(*d2ir.Scalar).Parent(),
    61  	)
    62  
    63  	assert.Equal(t, m, m.Edges[0].Parent())
    64  	assert.Equal(t, m.Edges[0], m.Edges[0].Primary_.Parent())
    65  	assert.Equal(t, m.Edges[0], m.Edges[0].Map_.Parent())
    66  
    67  	assert.Equal(t, m.Edges[0].Map_, m.Edges[0].Map_.Fields[0].Parent())
    68  	assert.Equal(t, m.Edges[0].Map_.Fields[0], m.Edges[0].Map_.Fields[0].Primary_.Parent())
    69  }
    70  

View as plain text