(t *testing.T)
| 2514 | } |
| 2515 | |
| 2516 | func TestContextProtoJSONFieldNames(t *testing.T) { |
| 2517 | descriptor := new(proto3pb.TestAllTypes).ProtoReflect().Descriptor() |
| 2518 | env := testEnv(t, JSONFieldNames(true), DeclareContextProto(descriptor)) |
| 2519 | expression := ` |
| 2520 | singleInt64 == 1 |
| 2521 | && singleDouble == 1.0 |
| 2522 | && singleBool == true |
| 2523 | && singleString == '' |
| 2524 | && singleNestedMessage == google.expr.proto3.test.TestAllTypes.NestedMessage{} |
| 2525 | && standaloneEnum == google.expr.proto3.test.TestAllTypes.NestedEnum.FOO |
| 2526 | && singleDuration == duration('5s') |
| 2527 | && singleTimestamp == timestamp(63154820) |
| 2528 | && singleAny == null |
| 2529 | && singleUint32Wrapper == null |
| 2530 | && singleUint64Wrapper == 0u |
| 2531 | && repeatedInt32 == [1,2] |
| 2532 | && mapStringString == {'': ''} |
| 2533 | && mapInt64NestedType == {0 : google.expr.proto3.test.NestedTestAllTypes{}}` |
| 2534 | ast, iss := env.Compile(expression) |
| 2535 | if iss.Err() != nil { |
| 2536 | t.Fatalf("env.Compile(%s) failed: %s", expression, iss.Err()) |
| 2537 | } |
| 2538 | prg, err := env.Program(ast) |
| 2539 | if err != nil { |
| 2540 | t.Fatalf("env.Program() failed: %v", err) |
| 2541 | } |
| 2542 | in := &proto3pb.TestAllTypes{ |
| 2543 | SingleInt64: 1, |
| 2544 | SingleDouble: 1.0, |
| 2545 | SingleBool: true, |
| 2546 | NestedType: &proto3pb.TestAllTypes_SingleNestedMessage{ |
| 2547 | SingleNestedMessage: &proto3pb.TestAllTypes_NestedMessage{}, |
| 2548 | }, |
| 2549 | StandaloneEnum: proto3pb.TestAllTypes_FOO, |
| 2550 | SingleDuration: &durationpb.Duration{Seconds: 5}, |
| 2551 | SingleTimestamp: ×tamppb.Timestamp{ |
| 2552 | Seconds: 63154820, |
| 2553 | }, |
| 2554 | SingleUint64Wrapper: wrapperspb.UInt64(0), |
| 2555 | RepeatedInt32: []int32{1, 2}, |
| 2556 | MapStringString: map[string]string{"": ""}, |
| 2557 | MapInt64NestedType: map[int64]*proto3pb.NestedTestAllTypes{0: {}}, |
| 2558 | } |
| 2559 | vars, err := ContextProtoVars(in, types.JSONFieldNames(true)) |
| 2560 | if err != nil { |
| 2561 | t.Fatalf("ContextProtoVars(%v) failed: %v", in, err) |
| 2562 | } |
| 2563 | out, _, err := prg.Eval(vars) |
| 2564 | if err != nil { |
| 2565 | t.Fatalf("prg.Eval() failed: %v", err) |
| 2566 | } |
| 2567 | if out.Equal(types.True) != types.True { |
| 2568 | t.Errorf("prg.Eval() got %v, wanted true", out) |
| 2569 | } |
| 2570 | } |
| 2571 | |
| 2572 | func TestRegexOptimizer(t *testing.T) { |
| 2573 | var stringTests = []struct { |
nothing calls this directly
no test coverage detected