c5aa582226
Now gg.Values can carry the token used to parse them, which will be useful later when generating errors.
113 lines
2.8 KiB
Go
113 lines
2.8 KiB
Go
package gg
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestEqual(t *testing.T) {
|
|
|
|
i := func(i int64) Value {
|
|
return Value{Number: &i}
|
|
}
|
|
|
|
n := func(n string) Value {
|
|
return Value{Name: &n}
|
|
}
|
|
|
|
tests := []struct {
|
|
a, b *Graph
|
|
exp bool
|
|
}{
|
|
{
|
|
a: ZeroGraph,
|
|
b: ZeroGraph,
|
|
exp: true,
|
|
},
|
|
{
|
|
a: ZeroGraph,
|
|
b: ZeroGraph.AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
exp: false,
|
|
},
|
|
{
|
|
a: ZeroGraph.AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
b: ZeroGraph.AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
exp: true,
|
|
},
|
|
{
|
|
a: ZeroGraph.AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
b: ZeroGraph.AddValueIn(TupleOut([]OpenEdge{
|
|
ValueOut(n("in"), n("ident")),
|
|
ValueOut(i(1), n("ident")),
|
|
}, n("add")), n("out")),
|
|
exp: false,
|
|
},
|
|
{
|
|
// tuples are different order
|
|
a: ZeroGraph.AddValueIn(TupleOut([]OpenEdge{
|
|
ValueOut(i(1), n("ident")),
|
|
ValueOut(n("in"), n("ident")),
|
|
}, n("add")), n("out")),
|
|
b: ZeroGraph.AddValueIn(TupleOut([]OpenEdge{
|
|
ValueOut(n("in"), n("ident")),
|
|
ValueOut(i(1), n("ident")),
|
|
}, n("add")), n("out")),
|
|
exp: false,
|
|
},
|
|
{
|
|
// tuple with no edge value and just a single input edge should be
|
|
// equivalent to just that edge.
|
|
a: ZeroGraph.AddValueIn(TupleOut([]OpenEdge{
|
|
ValueOut(i(1), n("ident")),
|
|
}, ZeroValue), n("out")),
|
|
b: ZeroGraph.AddValueIn(ValueOut(i(1), n("ident")), n("out")),
|
|
exp: true,
|
|
},
|
|
{
|
|
// tuple with an edge value and just a single input edge that has no
|
|
// edgeVal should be equivalent to just that edge with the tuple's
|
|
// edge value.
|
|
a: ZeroGraph.AddValueIn(TupleOut([]OpenEdge{
|
|
ValueOut(i(1), ZeroValue),
|
|
}, n("ident")), n("out")),
|
|
b: ZeroGraph.AddValueIn(ValueOut(i(1), n("ident")), n("out")),
|
|
exp: true,
|
|
},
|
|
{
|
|
a: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")).
|
|
AddValueIn(ValueOut(n("in2"), n("incr2")), n("out2")),
|
|
b: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
exp: false,
|
|
},
|
|
{
|
|
a: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")).
|
|
AddValueIn(ValueOut(n("in2"), n("incr2")), n("out2")),
|
|
b: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")).
|
|
AddValueIn(ValueOut(n("in2"), n("incr2")), n("out2")),
|
|
exp: true,
|
|
},
|
|
{
|
|
// order of value ins shouldn't matter
|
|
a: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")).
|
|
AddValueIn(ValueOut(n("in2"), n("incr2")), n("out2")),
|
|
b: ZeroGraph.
|
|
AddValueIn(ValueOut(n("in2"), n("incr2")), n("out2")).
|
|
AddValueIn(ValueOut(n("in"), n("incr")), n("out")),
|
|
exp: true,
|
|
},
|
|
}
|
|
|
|
for i, test := range tests {
|
|
t.Run(strconv.Itoa(i), func(t *testing.T) {
|
|
assert.Equal(t, test.exp, Equal(test.a, test.b))
|
|
})
|
|
}
|
|
}
|