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

Function TestResidualAstAttributeQualifiers

cel/cel_test.go:2235–2278  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2233}
2234
2235func TestResidualAstAttributeQualifiers(t *testing.T) {
2236 env := testEnv(t,
2237 Variable("x", MapType(StringType, DynType)),
2238 Variable("y", ListType(IntType)),
2239 Variable("u", IntType),
2240 )
2241 ast, iss := env.Parse(`x.abc == u && x["abc"] == u && x[x.string] == u && y[0] == u && y[x.zero] == u && (true ? x : y).abc == u && (false ? y : x).abc == u`)
2242 if iss.Err() != nil {
2243 t.Fatalf("env.Parse() failed: %v", iss.Err())
2244 }
2245 prg, err := env.Program(ast,
2246 EvalOptions(OptTrackState, OptPartialEval),
2247 )
2248 if err != nil {
2249 t.Fatalf("env.Program() failed: %v", err)
2250 }
2251 vars, _ := PartialVars(map[string]any{
2252 "x": map[string]any{
2253 "zero": 0,
2254 "abc": 123,
2255 "string": "abc",
2256 },
2257 "y": []int{123},
2258 }, AttributePattern("u"))
2259 out, det, err := prg.ContextEval(context.TODO(), vars)
2260 if !types.IsUnknown(out) {
2261 t.Fatalf("got %v, expected unknown", out)
2262 }
2263 if err != nil {
2264 t.Fatal(err)
2265 }
2266 residual, err := env.ResidualAst(ast, det)
2267 if err != nil {
2268 t.Fatal(err)
2269 }
2270 expr, err := AstToString(residual)
2271 if err != nil {
2272 t.Fatal(err)
2273 }
2274 const want = "123 == u && 123 == u && 123 == u && 123 == u && 123 == u && 123 == u && 123 == u"
2275 if expr != want {
2276 t.Errorf("got expr: %s, wanted %s", expr, want)
2277 }
2278}
2279
2280func TestPartialVarsEnv(t *testing.T) {
2281 env := testEnv(t,

Callers

nothing calls this directly

Calls 12

IsUnknownFunction · 0.92
EvalOptionsFunction · 0.85
PartialVarsFunction · 0.85
AstToStringFunction · 0.85
ErrMethod · 0.80
ProgramMethod · 0.80
ResidualAstMethod · 0.80
testEnvFunction · 0.70
VariableFunction · 0.70
AttributePatternFunction · 0.70
ParseMethod · 0.65
ContextEvalMethod · 0.65

Tested by

no test coverage detected