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

Function TestPartialVars

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

Source from the content-addressed store, hash-verified

2116}
2117
2118func TestPartialVars(t *testing.T) {
2119 env := testEnv(t,
2120 Variable("x", StringType),
2121 Variable("y", IntType),
2122 )
2123 ast, iss := env.Compile("x == string(y)")
2124 if iss.Err() != nil {
2125 t.Fatalf("env.Compile() failed: %v", iss.Err())
2126 }
2127 prg, err := env.Program(ast, EvalOptions(OptPartialEval))
2128 if err != nil {
2129 t.Fatalf("env.Program() failed: %v", err)
2130 }
2131
2132 tests := []struct {
2133 in map[string]any
2134 unk []*interpreter.AttributePattern
2135 out ref.Val
2136 partialOut ref.Val
2137 }{
2138 {
2139 in: map[string]any{},
2140 unk: []*interpreter.AttributePattern{
2141 interpreter.NewAttributePattern("x"),
2142 interpreter.NewAttributePattern("y"),
2143 },
2144 out: types.MergeUnknowns(types.NewUnknown(1, types.NewAttributeTrail("x")), types.NewUnknown(4, types.NewAttributeTrail("y"))),
2145 },
2146 {
2147 in: map[string]any{"x": "10"},
2148 unk: []*interpreter.AttributePattern{
2149 interpreter.NewAttributePattern("y"),
2150 },
2151 out: types.NewUnknown(4, types.NewAttributeTrail("y")),
2152 },
2153 {
2154 in: map[string]any{"y": 10},
2155 unk: []*interpreter.AttributePattern{
2156 interpreter.NewAttributePattern("x"),
2157 },
2158 out: types.NewUnknown(1, types.NewAttributeTrail("x")),
2159 },
2160 {
2161 in: map[string]any{"x": "10", "y": 10},
2162 unk: []*interpreter.AttributePattern{},
2163 out: types.True,
2164 },
2165 {
2166 in: map[string]any{"x": "10", "y": 9},
2167 unk: []*interpreter.AttributePattern{},
2168 out: types.False,
2169 },
2170 {
2171 in: map[string]any{"y": 10},
2172 unk: []*interpreter.AttributePattern{},
2173 out: types.NewErr("no such attribute: x"),
2174 partialOut: types.NewUnknown(1, types.NewAttributeTrail("x")),
2175 },

Callers

nothing calls this directly

Calls 15

NewAttributePatternFunction · 0.92
MergeUnknownsFunction · 0.92
NewUnknownFunction · 0.92
NewAttributeTrailFunction · 0.92
NewErrFunction · 0.92
IsErrorFunction · 0.92
IsUnknownFunction · 0.92
EvalOptionsFunction · 0.85
PartialVarsFunction · 0.85
ErrMethod · 0.80
ProgramMethod · 0.80
PartialVarsMethod · 0.80

Tested by

no test coverage detected