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

Function TestNativeStructEmbedded

ext/native_test.go:932–1016  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

930}
931
932func TestNativeStructEmbedded(t *testing.T) {
933 var nativeTests = []struct {
934 expr string
935 in any
936 out any
937 }{
938 {
939 expr: `test.embedded.custom_name == "name"`,
940 in: map[string]any{
941 "test": &TestEmbeddedTypes{
942 TestNestedType: TestNestedType{NestedCustomName: "name"},
943 Skipped: "should-be-hidden",
944 },
945 },
946 out: true,
947 },
948 {
949 expr: `dyn(test.embedded)["-"] == "error"`,
950 in: map[string]any{
951 "test": &TestEmbeddedTypes{
952 TestNestedType: TestNestedType{NestedCustomName: "name"},
953 Skipped: "should-be-hidden",
954 },
955 },
956 out: errors.New("no such field: -"),
957 },
958 {
959 expr: `test.embedded == ext.TestNestedType{custom_name: "name"}`,
960 in: map[string]any{
961 "test": &TestEmbeddedTypes{
962 TestNestedType: TestNestedType{NestedCustomName: "name"},
963 Skipped: "should-be-hidden",
964 },
965 },
966 out: true,
967 },
968 }
969
970 envOpts := []cel.EnvOption{
971 NativeTypes(
972 reflect.TypeFor[*TestEmbeddedTypes](),
973 reflect.TypeFor[*TestNestedType](),
974 ParseStructTag("json"),
975 ),
976 cel.Variable("test", cel.ObjectType("ext.TestEmbeddedTypes")),
977 }
978
979 env, err := cel.NewEnv(envOpts...)
980 if err != nil {
981 t.Fatalf("cel.NewEnv(NativeTypes()) failed: %v", err)
982 }
983
984 for i, tst := range nativeTests {
985 tc := tst
986 t.Run(fmt.Sprintf("[%d]", i), func(t *testing.T) {
987 var asts []*cel.Ast
988 pAst, iss := env.Parse(tc.expr)
989 if iss.Err() != nil {

Callers

nothing calls this directly

Calls 12

ParseMethod · 0.95
CheckMethod · 0.95
ProgramMethod · 0.95
VariableFunction · 0.92
NewEnvFunction · 0.92
NativeTypesFunction · 0.85
ParseStructTagFunction · 0.85
NewMethod · 0.80
ErrMethod · 0.80
EvalMethod · 0.65
ValueMethod · 0.65
IsMethod · 0.45

Tested by

no test coverage detected