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

Function TestResidualAstAttributeQualifiers

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

Source from the content-addressed store, hash-verified

2129}
2130
2131func TestResidualAstAttributeQualifiers(t *testing.T) {
2132 env := testEnv(t,
2133 Variable("x", MapType(StringType, DynType)),
2134 Variable("y", ListType(IntType)),
2135 Variable("u", IntType),
2136 )
2137 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`)
2138 if iss.Err() != nil {
2139 t.Fatalf("env.Parse() failed: %v", iss.Err())
2140 }
2141 prg, err := env.Program(ast,
2142 EvalOptions(OptTrackState, OptPartialEval),
2143 )
2144 if err != nil {
2145 t.Fatalf("env.Program() failed: %v", err)
2146 }
2147 vars, _ := PartialVars(map[string]any{
2148 "x": map[string]any{
2149 "zero": 0,
2150 "abc": 123,
2151 "string": "abc",
2152 },
2153 "y": []int{123},
2154 }, AttributePattern("u"))
2155 out, det, err := prg.ContextEval(context.TODO(), vars)
2156 if !types.IsUnknown(out) {
2157 t.Fatalf("got %v, expected unknown", out)
2158 }
2159 if err != nil {
2160 t.Fatal(err)
2161 }
2162 residual, err := env.ResidualAst(ast, det)
2163 if err != nil {
2164 t.Fatal(err)
2165 }
2166 expr, err := AstToString(residual)
2167 if err != nil {
2168 t.Fatal(err)
2169 }
2170 const want = "123 == u && 123 == u && 123 == u && 123 == u && 123 == u && 123 == u && 123 == u"
2171 if expr != want {
2172 t.Errorf("got expr: %s, wanted %s", expr, want)
2173 }
2174}
2175
2176func TestPartialVarsEnv(t *testing.T) {
2177 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