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

Function TestSets

ext/sets_test.go:31–301  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

29)
30
31func TestSets(t *testing.T) {
32 tests := []struct {
33 expr string
34 vars []cel.EnvOption
35 in map[string]any
36 hints map[string]uint64
37 estimatedCost checker.CostEstimate
38 actualCost uint64
39 }{
40 // set containment
41 {
42 expr: `sets.contains(x, [1, 2, 3])`,
43 vars: []cel.EnvOption{cel.Variable("x", cel.ListType(cel.IntType))},
44 in: map[string]any{"x": []int64{5, 4, 3, 2, 1}},
45 hints: map[string]uint64{"x": 10},
46 // min cost is input 'x' length 0, 10 for list creation, 2 for arg costs
47 // max cost is input 'x' length 10, 10 for list creation, 2 for arg costs
48 estimatedCost: checker.CostEstimate{Min: 12, Max: 42},
49 // actual cost is 'x' length 5 * list literal length 3, 10 for list creation, 2 for arg cost
50 actualCost: 27,
51 },
52 {
53 expr: `sets.contains(x, [1, 1, 1, 1, 1])`,
54 vars: []cel.EnvOption{cel.Variable("x", cel.ListType(cel.IntType))},
55 in: map[string]any{"x": []int64{5, 4, 3, 2, 1}},
56 // min cost is input 'x' length 0, 10 for list creation, 2 for arg costs
57 // max cost is effectively infinite due to missing size hint for 'x'
58 estimatedCost: checker.CostEstimate{Min: 12, Max: math.MaxUint64},
59 // actual cost is 'x' length 5 * list literal length 5, 10 for list creation, 2 for arg cost
60 actualCost: 37,
61 },
62 {
63 expr: `sets.contains([], [])`,
64 estimatedCost: checker.FixedCostEstimate(21),
65 actualCost: 21,
66 },
67 {
68 expr: `sets.contains([1], [])`,
69 estimatedCost: checker.FixedCostEstimate(21),
70 actualCost: 21,
71 },
72 {
73 expr: `sets.contains([1], [1])`,
74 estimatedCost: checker.FixedCostEstimate(22),
75 actualCost: 22,
76 },
77 {
78 expr: `sets.contains([1], [1, 1])`,
79 estimatedCost: checker.FixedCostEstimate(23),
80 actualCost: 23,
81 },
82 {
83 expr: `sets.contains([1, 1], [1])`,
84 estimatedCost: checker.FixedCostEstimate(23),
85 actualCost: 23,
86 },
87 {
88 expr: `sets.contains([2, 1], [1])`,

Callers

nothing calls this directly

Calls 8

VariableFunction · 0.92
FixedCostEstimateFunction · 0.92
testSetsEnvFunction · 0.85
testCheckCostFunction · 0.85
testEvalWithCostFunction · 0.85
ErrMethod · 0.80
CheckMethod · 0.80
ParseMethod · 0.65

Tested by

no test coverage detected