diff --git a/src/expression/Expression_test.go b/src/expression/Expression_test.go index 3954923..6fab56c 100644 --- a/src/expression/Expression_test.go +++ b/src/expression/Expression_test.go @@ -31,16 +31,6 @@ func TestEachLeaf(t *testing.T) { assert.Equal(t, err.Error(), "error") } -func TestRemoveChild(t *testing.T) { - src := []byte("(1+2-3*4)+(5*6-7+8)") - tokens := token.Tokenize(src) - expr := expression.Parse(tokens) - left := expr.Children[0] - right := expr.Children[1] - expr.RemoveChild(left) - assert.Equal(t, expr.Children[0], right) -} - func TestNilExpression(t *testing.T) { src := []byte("") tokens := token.Tokenize(src) @@ -53,4 +43,31 @@ func TestNilGroup(t *testing.T) { tokens := token.Tokenize(src) expr := expression.Parse(tokens) assert.Nil(t, expr) +} + +func TestRemoveChild(t *testing.T) { + src := []byte("(1+2-3*4)+(5*6-7+8)") + tokens := token.Tokenize(src) + expr := expression.Parse(tokens) + left := expr.Children[0] + right := expr.Children[1] + expr.RemoveChild(left) + assert.Equal(t, expr.Children[0], right) +} + +func TestSource(t *testing.T) { + src := []byte("(1+2-3*4)+(5*6-7+8)") + tokens := token.Tokenize(src) + expr := expression.Parse(tokens) + assert.DeepEqual(t, expr.Source, tokens) + assert.DeepEqual(t, expr.Children[0].Source, tokens[1:8]) + assert.DeepEqual(t, expr.Children[1].Source, tokens[11:18]) + sources := []string{} + + expr.EachLeaf(func(leaf *expression.Expression) error { + sources = append(sources, leaf.Source.String(src)) + return nil + }) + + assert.DeepEqual(t, sources, []string{"1", "2", "3", "4", "5", "6", "7", "8"}) } \ No newline at end of file