Proto2UnknownEnumValueTest.java
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 package com.google.protobuf;
32 
34 import protobuf_unittest.UnittestProto;
35 import protobuf_unittest.UnittestProto.TestAllExtensions;
36 import protobuf_unittest.UnittestProto.TestAllTypes;
37 import junit.framework.TestCase;
38 
40 public class Proto2UnknownEnumValueTest extends TestCase {
41  FieldDescriptor singularField =
42  TestAllTypes.getDescriptor().findFieldByName("optional_nested_enum");
43  FieldDescriptor repeatedField =
44  TestAllTypes.getDescriptor().findFieldByName("repeated_nested_enum");
45  byte[] payload = buildPayloadWithUnknownEnumValues();
46 
48  // Builds a payload with unknown enum values.
50  builder.addField(
51  singularField.getNumber(),
53  .addVarint(TestAllTypes.NestedEnum.BAR.getNumber())
54  .addVarint(1901 /* unknown enum value */)
55  .build());
56  builder.addField(
57  repeatedField.getNumber(),
59  .addVarint(TestAllTypes.NestedEnum.FOO.getNumber())
60  .addVarint(1902 /* unknown enum value */)
61  .addVarint(TestAllTypes.NestedEnum.BAZ.getNumber())
62  .addVarint(1903 /* unknown enum value */)
63  .build());
64  return builder.build().toByteArray();
65  }
66 
67  public void testUnknownEnumValues() throws Exception {
68  TestAllTypes message = TestAllTypes.parseFrom(payload);
69 
70  // Known enum values should be preserved.
71  assertEquals(TestAllTypes.NestedEnum.BAR, message.getOptionalNestedEnum());
72  assertEquals(2, message.getRepeatedNestedEnumList().size());
73  assertEquals(TestAllTypes.NestedEnum.FOO, message.getRepeatedNestedEnum(0));
74  assertEquals(TestAllTypes.NestedEnum.BAZ, message.getRepeatedNestedEnum(1));
75 
76  // Unknown enum values should be found in UnknownFieldSet.
77  UnknownFieldSet unknown = message.getUnknownFields();
78  assertEquals(
79  1901, unknown.getField(singularField.getNumber()).getVarintList().get(0).longValue());
80  assertEquals(
81  1902, unknown.getField(repeatedField.getNumber()).getVarintList().get(0).longValue());
82  assertEquals(
83  1903, unknown.getField(repeatedField.getNumber()).getVarintList().get(1).longValue());
84  }
85 
86  public void testExtensionUnknownEnumValues() throws Exception {
88  UnittestProto.registerAllExtensions(registry);
89  TestAllExtensions message = TestAllExtensions.parseFrom(payload, registry);
90 
91  assertEquals(
92  TestAllTypes.NestedEnum.BAR,
93  message.getExtension(UnittestProto.optionalNestedEnumExtension));
94  assertEquals(2, message.getExtension(UnittestProto.repeatedNestedEnumExtension).size());
95  assertEquals(
96  TestAllTypes.NestedEnum.FOO,
97  message.getExtension(UnittestProto.repeatedNestedEnumExtension, 0));
98  assertEquals(
99  TestAllTypes.NestedEnum.BAZ,
100  message.getExtension(UnittestProto.repeatedNestedEnumExtension, 1));
101 
102  // Unknown enum values should be found in UnknownFieldSet.
103  UnknownFieldSet unknown = message.getUnknownFields();
104  assertEquals(
105  1901, unknown.getField(singularField.getNumber()).getVarintList().get(0).longValue());
106  assertEquals(
107  1902, unknown.getField(repeatedField.getNumber()).getVarintList().get(0).longValue());
108  assertEquals(
109  1903, unknown.getField(repeatedField.getNumber()).getVarintList().get(1).longValue());
110  }
111 }
com.google.protobuf.Descriptors
Definition: Descriptors.java:80
com.google.protobuf.UnknownFieldSet.Field.newBuilder
static Builder newBuilder()
Definition: UnknownFieldSet.java:716
com.google.protobuf.UnknownFieldSet.Builder.addField
Builder addField(final int number, final Field field)
Definition: UnknownFieldSet.java:491
com.google.protobuf.Proto2UnknownEnumValueTest
Definition: Proto2UnknownEnumValueTest.java:40
com.google.protobuf
Definition: ProtoCaliperBenchmark.java:2
com.google.protobuf.UnknownFieldSet.Builder.build
UnknownFieldSet build()
Definition: UnknownFieldSet.java:358
com.google.protobuf.UnknownFieldSet.newBuilder
static Builder newBuilder()
Definition: UnknownFieldSet.java:66
com.google.protobuf.UnknownFieldSet.Field.Builder.addVarint
Builder addVarint(final long value)
Definition: UnknownFieldSet.java:1008
com.google.protobuf.UnknownFieldSet
Definition: UnknownFieldSet.java:58
com.google.protobuf.UnknownFieldSet.Field.Builder.build
Field build()
Definition: UnknownFieldSet.java:931
com.google.protobuf.Descriptors.FieldDescriptor.getNumber
int getNumber()
Definition: Descriptors.java:974
com.google.protobuf.UnknownFieldSet.getField
Field getField(final int number)
Definition: UnknownFieldSet.java:127
com.google.protobuf.UnknownFieldSet.toByteArray
byte[] toByteArray()
Definition: UnknownFieldSet.java:171
com.google.protobuf.UnknownFieldSet.Builder
Definition: UnknownFieldSet.java:308
com.google.protobuf.UnknownFieldSet.Field
Definition: UnknownFieldSet.java:712
protobuf_unittest
Definition: map_test_util_impl.h:39
com.google.protobuf.ExtensionRegistry.newInstance
static ExtensionRegistry newInstance()
Definition: ExtensionRegistry.java:93
com.google.protobuf.UnknownFieldSet.Field.getVarintList
List< Long > getVarintList()
Definition: UnknownFieldSet.java:733
com.google
com
com.google.protobuf.ExtensionRegistry
Definition: ExtensionRegistry.java:91
com.google.protobuf.Proto2UnknownEnumValueTest.testExtensionUnknownEnumValues
void testExtensionUnknownEnumValues()
Definition: Proto2UnknownEnumValueTest.java:86
com.google.protobuf.Proto2UnknownEnumValueTest.buildPayloadWithUnknownEnumValues
byte[] buildPayloadWithUnknownEnumValues()
Definition: Proto2UnknownEnumValueTest.java:47
com.google.protobuf.Proto2UnknownEnumValueTest.testUnknownEnumValues
void testUnknownEnumValues()
Definition: Proto2UnknownEnumValueTest.java:67
gmock_test_utils.TestCase
TestCase
Definition: gmock_test_utils.py:97
message
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: glcorearb.h:2695
com.google.protobuf.Descriptors.FieldDescriptor
Definition: Descriptors.java:949


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:57