MCPcopy Create free account
hub / github.com/cel-expr/cel-go / TestExprToString

Function TestExprToString

cel/io_test.go:151–195  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

149}
150
151func TestExprToString(t *testing.T) {
152 stdEnv, err := NewEnv(EnableMacroCallTracking())
153 if err != nil {
154 t.Fatalf("NewEnv() failed: %v", err)
155 }
156 in := "[a, b].filter(i, (i > 0) ? (-i + 4) : i)"
157 ast, iss := stdEnv.Parse(in)
158 if iss.Err() != nil {
159 t.Fatalf("stdEnv.Parse(%q) failed: %v", in, iss.Err())
160 }
161 expr, err := ExprToString(ast.NativeRep().Expr(), ast.NativeRep().SourceInfo())
162 if err != nil {
163 t.Fatalf("ExprToString(ast) failed: %v", err)
164 }
165 if expr != in {
166 t.Errorf("got %v, wanted %v", expr, in)
167 }
168
169 // Test sub-expression unparsing.
170 navExpr := celast.NavigateAST(ast.NativeRep())
171 condExpr := celast.MatchDescendants(navExpr, celast.FunctionMatcher(operators.Conditional))[0]
172 want := `(i > 0) ? (-i + 4) : i`
173 expr, err = ExprToString(condExpr, ast.NativeRep().SourceInfo())
174 if err != nil {
175 t.Fatalf("ExprToString(ast) failed: %v", err)
176 }
177 if expr != want {
178 t.Errorf("got %v, wanted %v", expr, want)
179 }
180
181 // Also passes with a nil source info, but only because the sub-expr doesn't contain macro calls.
182 expr, err = ExprToString(condExpr, nil)
183 if err != nil {
184 t.Fatalf("ExprToString(ast) failed: %v", err)
185 }
186 if expr != want {
187 t.Errorf("got %v, wanted %v", expr, want)
188 }
189
190 // Fails do to missing macro information.
191 _, err = ExprToString(ast.NativeRep().Expr(), nil)
192 if err == nil {
193 t.Error("ExprToString() succeeded, wanted error")
194 }
195}
196
197func TestRefValToExprValue(t *testing.T) {
198 tests := []struct {

Callers

nothing calls this directly

Calls 9

ParseMethod · 0.95
EnableMacroCallTrackingFunction · 0.85
ExprToStringFunction · 0.85
ErrMethod · 0.80
NativeRepMethod · 0.80
NewEnvFunction · 0.70
ExprMethod · 0.65
SourceInfoMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected