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

Function TestNativeStructEmbedded

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

Source from the content-addressed store, hash-verified

952}
953
954func TestNativeStructEmbedded(t *testing.T) {
955 var nativeTests = []struct {
956 expr string
957 in any
958 out any
959 }{
960 {
961 expr: `test.embedded.custom_name == "name"`,
962 in: map[string]any{
963 "test": &TestEmbeddedTypes{
964 TestNestedType: TestNestedType{NestedCustomName: "name"},
965 Skipped: "should-be-hidden",
966 },
967 },
968 out: true,
969 },
970 {
971 expr: `dyn(test.embedded)["-"] == "error"`,
972 in: map[string]any{
973 "test": &TestEmbeddedTypes{
974 TestNestedType: TestNestedType{NestedCustomName: "name"},
975 Skipped: "should-be-hidden",
976 },
977 },
978 out: errors.New("no such field: -"),
979 },
980 {
981 expr: `test.embedded == ext.TestNestedType{custom_name: "name"}`,
982 in: map[string]any{
983 "test": &TestEmbeddedTypes{
984 TestNestedType: TestNestedType{NestedCustomName: "name"},
985 Skipped: "should-be-hidden",
986 },
987 },
988 out: true,
989 },
990 {
991 expr: `test.Name == "name"`,
992 in: map[string]any{
993 "test": &TestEmbeddedTypes{
994 Custom: Custom{Name: "name"},
995 },
996 },
997 out: true,
998 },
999 }
1000
1001 envOpts := []cel.EnvOption{
1002 NativeTypes(
1003 reflect.TypeFor[*TestEmbeddedTypes](),
1004 reflect.TypeFor[*TestNestedType](),
1005 ParseStructTag("json"),
1006 ),
1007 cel.Variable("test", cel.ObjectType("ext.TestEmbeddedTypes")),
1008 }
1009
1010 env, err := cel.NewEnv(envOpts...)
1011 if 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