MCPcopy
hub / github.com/nektos/act / TestFunctionContains

Function TestFunctionContains

pkg/exprparser/functions_test.go:11–53  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

9)
10
11func TestFunctionContains(t *testing.T) {
12 table := []struct {
13 input string
14 expected interface{}
15 name string
16 }{
17 {"contains('search', 'item') }}", false, "contains-str-str"},
18 {`cOnTaInS('Hello', 'll') }}`, true, "contains-str-casing"},
19 {`contains('HELLO', 'll') }}`, true, "contains-str-casing"},
20 {`contains('3.141592', 3.14) }}`, true, "contains-str-number"},
21 {`contains(3.141592, '3.14') }}`, true, "contains-number-str"},
22 {`contains(3.141592, 3.14) }}`, true, "contains-number-number"},
23 {`contains(true, 'u') }}`, true, "contains-bool-str"},
24 {`contains(null, '') }}`, true, "contains-null-str"},
25 {`contains(fromJSON('["first","second"]'), 'first') }}`, true, "contains-item"},
26 {`contains(fromJSON('[null,"second"]'), '') }}`, true, "contains-item-null-empty-str"},
27 {`contains(fromJSON('["","second"]'), null) }}`, true, "contains-item-empty-str-null"},
28 {`contains(fromJSON('[true,"second"]'), 'true') }}`, false, "contains-item-bool-arr"},
29 {`contains(fromJSON('["true","second"]'), true) }}`, false, "contains-item-str-bool"},
30 {`contains(fromJSON('[3.14,"second"]'), '3.14') }}`, true, "contains-item-number-str"},
31 {`contains(fromJSON('[3.14,"second"]'), 3.14) }}`, true, "contains-item-number-number"},
32 {`contains(fromJSON('["","second"]'), fromJSON('[]')) }}`, false, "contains-item-str-arr"},
33 {`contains(fromJSON('["","second"]'), fromJSON('{}')) }}`, false, "contains-item-str-obj"},
34 {`contains(fromJSON('[{ "first": { "result": "success" }},{ "second": { "result": "success" }}]').first.result, 'success') }}`, true, "multiple-contains-item"},
35 {`contains(fromJSON('[{ "result": "success" },{ "result": "failure" }]').*.result, 'failure') }}`, true, "multiple-contains-dereferenced-failure-item"},
36 {`contains(fromJSON('[{ "result": "failure" },{ "result": "success" }]').*.result, 'success') }}`, true, "multiple-contains-dereferenced-success-item"},
37 {`contains(fromJSON('[{ "result": "failure" },{ "result": "success" }]').*.result, 'notthere') }}`, false, "multiple-contains-dereferenced-missing-item"},
38 {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'val1') }}`, true, "multiple-contains-dereferenced-output-item"},
39 {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'val2') }}`, true, "multiple-contains-dereferenced-output-item-2"},
40 {`contains(fromJSON('[{ "result": "failure", "outputs": { "key": "val1" } },{ "result": "success", "outputs": { "key": "val2" } }]').*.outputs.key, 'missing') }}`, false, "multiple-contains-dereferenced-output-misssing-item"},
41 }
42
43 env := &EvaluationEnvironment{}
44
45 for _, tt := range table {
46 t.Run(tt.name, func(t *testing.T) {
47 output, err := NewInterpeter(env, Config{}).Evaluate(tt.input, DefaultStatusCheckNone)
48 assert.Nil(t, err)
49
50 assert.Equal(t, tt.expected, output)
51 })
52 }
53}
54
55func TestFunctionStartsWith(t *testing.T) {
56 table := []struct {

Callers

nothing calls this directly

Calls 2

NewInterpeterFunction · 0.85
EvaluateMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…