github.com/expr-lang/expr@v1.16.9/optimizer/sum_map_test.go (about)

     1  package optimizer_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/expr-lang/expr/internal/testify/assert"
     7  	"github.com/expr-lang/expr/internal/testify/require"
     8  
     9  	"github.com/expr-lang/expr/ast"
    10  	"github.com/expr-lang/expr/optimizer"
    11  	"github.com/expr-lang/expr/parser"
    12  )
    13  
    14  func TestOptimize_sum_map(t *testing.T) {
    15  	tree, err := parser.Parse(`sum(map(users, {.Age}))`)
    16  	require.NoError(t, err)
    17  
    18  	err = optimizer.Optimize(&tree.Node, nil)
    19  	require.NoError(t, err)
    20  
    21  	expected := &ast.BuiltinNode{
    22  		Name: "sum",
    23  		Arguments: []ast.Node{
    24  			&ast.IdentifierNode{Value: "users"},
    25  			&ast.ClosureNode{
    26  				Node: &ast.MemberNode{
    27  					Node:     &ast.PointerNode{},
    28  					Property: &ast.StringNode{Value: "Age"},
    29  				},
    30  			},
    31  		},
    32  	}
    33  
    34  	assert.Equal(t, ast.Dump(expected), ast.Dump(tree.Node))
    35  }