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

Function TestExceedsDepth

common/ast/navigable_test.go:228–258  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

226}
227
228func TestExceedsDepth(t *testing.T) {
229 // Depths below reflect NavigableExpr.Depth() of each expression's deepest node, matching the
230 // maxDepth column of TestNavigateAST. ExceedsDepth reports true once a node reaches maxDepth,
231 // so an expression of depth D is flagged for every maxDepth <= D.
232 tests := []struct {
233 name string
234 expr string
235 maxDepth int
236 want bool
237 }{
238 {name: "shallow below limit", expr: `'a' == 'b'`, maxDepth: 2, want: false}, // depth 1
239 {name: "shallow at limit", expr: `'a' == 'b'`, maxDepth: 1, want: true}, // depth 1
240 {name: "medium below limit", expr: `[1, 2, 3][0]`, maxDepth: 3, want: false}, // depth 2
241 {name: "medium at limit", expr: `[1, 2, 3][0]`, maxDepth: 2, want: true}, // depth 2
242 {name: "medium under limit", expr: `[1, 2, 3][0]`, maxDepth: 1, want: true}, // depth 2
243 {name: "deep under default", expr: `[true].exists(i, i)`, maxDepth: 250, want: false}, // depth 3
244 {name: "deep at limit", expr: `[true].exists(i, i)`, maxDepth: 3, want: true}, // depth 3
245 {name: "deep one above limit", expr: `[true].exists(i, i)`, maxDepth: 4, want: false}, // depth 3
246 {name: "disabled with zero", expr: `[true].exists(i, i)`, maxDepth: 0, want: false},
247 {name: "disabled with negative", expr: `[true].exists(i, i)`, maxDepth: -1, want: false},
248 }
249 for _, tst := range tests {
250 tc := tst
251 t.Run(tc.name, func(t *testing.T) {
252 checked := mustTypeCheck(t, tc.expr)
253 if got := ast.ExceedsDepth(checked, tc.maxDepth); got != tc.want {
254 t.Errorf("ExceedsDepth(%q, %d) = %v, wanted %v", tc.expr, tc.maxDepth, got, tc.want)
255 }
256 })
257 }
258}
259
260func TestExceedsDepthNilSafety(t *testing.T) {
261 if ast.ExceedsDepth(nil, 250) {

Callers

nothing calls this directly

Calls 2

ExceedsDepthFunction · 0.92
mustTypeCheckFunction · 0.85

Tested by

no test coverage detected