PackedFieldTest.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 
33 import com.google.protobuf.PackedFieldTestProto.TestAllTypes;
34 import com.google.protobuf.PackedFieldTestProto.TestAllTypes.NestedEnum;
35 import com.google.protobuf.PackedFieldTestProto.TestUnpackedTypes;
36 import junit.framework.TestCase;
37 
39 public class PackedFieldTest extends TestCase {
40  static final ByteString expectedPackedRawBytes =
41  ByteString.copyFrom(
42  new byte[] {
43  (byte) 0xFA,
44  0x01,
45  0x01,
46  0x01, // repeated int32
47  (byte) 0x82,
48  0x02,
49  0x01,
50  0x01, // repeated int64
51  (byte) 0x8A,
52  0x02,
53  0x01,
54  0x01, // repeated uint32
55  (byte) 0x92,
56  0x02,
57  0x01,
58  0x01, // repeated uint64
59  (byte) 0x9A,
60  0x02,
61  0x01,
62  0x02, // repeated sint32
63  (byte) 0xA2,
64  0x02,
65  0x01,
66  0x02, // repeated sint64
67  (byte) 0xAA,
68  0x02,
69  0x04,
70  0x01,
71  0x00,
72  0x00,
73  0x00, // repeated fixed32
74  (byte) 0xB2,
75  0x02,
76  0x08,
77  0x01,
78  0x00,
79  0x00,
80  0x00, // repeated fixed64
81  0x00,
82  0x00,
83  0x00,
84  0x00,
85  (byte) 0xBA,
86  0x02,
87  0x04,
88  0x01,
89  0x00,
90  0x00,
91  0x00, // repeated sfixed32
92  (byte) 0xC2,
93  0x02,
94  0x08,
95  0x01,
96  0x00,
97  0x00,
98  0x00, // repeated sfixed64
99  0x00,
100  0x00,
101  0x00,
102  0x00,
103  (byte) 0xCA,
104  0x02,
105  0x04,
106  0x00,
107  0x00,
108  (byte) 0x80,
109  0x3f, // repeated float
110  (byte) 0xD2,
111  0x02,
112  0x08,
113  0x00,
114  0x00,
115  0x00,
116  0x00, // repeated double
117  0x00,
118  0x00,
119  (byte) 0xf0,
120  0x3f,
121  (byte) 0xDA,
122  0x02,
123  0x01,
124  0x01, // repeated bool
125  (byte) 0x9A,
126  0x03,
127  0x01,
128  0x01 // repeated nested enum
129  });
130 
131  static final ByteString expectedUnpackedRawBytes =
132  ByteString.copyFrom(
133  new byte[] {
134  0x08,
135  0x01, // repeated int32
136  0x10,
137  0x01, // repeated int64
138  0x18,
139  0x01, // repeated uint32
140  0x20,
141  0x01, // repeated uint64
142  0x28,
143  0x02, // repeated sint32
144  0x30,
145  0x02, // repeated sint64
146  0x3D,
147  0x01,
148  0x00,
149  0x00,
150  0x00, // repeated fixed32
151  0x41,
152  0x01,
153  0x00,
154  0x00,
155  0x00, // repeated fixed64
156  0x00,
157  0x00,
158  0x00,
159  0x00,
160  0x4D,
161  0x01,
162  0x00,
163  0x00,
164  0x00, // repeated sfixed32
165  0x51,
166  0x01,
167  0x00,
168  0x00,
169  0x00, // repeated sfixed64
170  0x00,
171  0x00,
172  0x00,
173  0x00,
174  0x5D,
175  0x00,
176  0x00,
177  (byte) 0x80,
178  0x3f, // repeated float
179  0x61,
180  0x00,
181  0x00,
182  0x00,
183  0x00, // repeated double
184  0x00,
185  0x00,
186  (byte) 0xf0,
187  0x3f,
188  0x68,
189  0x01, // repeated bool
190  0x70,
191  0x01, // repeated nested enum
192  });
193 
194  public void testPackedGeneratedMessage() throws Exception {
195  TestAllTypes message = TestAllTypes.parseFrom(expectedPackedRawBytes);
196  assertEquals(expectedPackedRawBytes, message.toByteString());
197  }
198 
199  public void testPackedDynamicMessageSerialize() throws Exception {
201  DynamicMessage.parseFrom(TestAllTypes.getDescriptor(), expectedPackedRawBytes);
202  assertEquals(expectedPackedRawBytes, message.toByteString());
203  }
204 
205  public void testUnpackedGeneratedMessage() throws Exception {
206  TestUnpackedTypes message = TestUnpackedTypes.parseFrom(expectedUnpackedRawBytes);
207  assertEquals(expectedUnpackedRawBytes, message.toByteString());
208  }
209 
210  public void testUnPackedDynamicMessageSerialize() throws Exception {
212  DynamicMessage.parseFrom(TestUnpackedTypes.getDescriptor(), expectedUnpackedRawBytes);
213  assertEquals(expectedUnpackedRawBytes, message.toByteString());
214  }
215 
216  // Make sure we haven't screwed up the code generation for packing fields by default.
217  public void testPackedSerialization() throws Exception {
218  TestAllTypes message =
219  TestAllTypes.newBuilder()
220  .addRepeatedInt32(1234)
221  .addRepeatedNestedEnum(NestedEnum.BAR)
222  .build();
223 
225 
226  while (!in.isAtEnd()) {
227  int tag = in.readTag();
229  in.skipField(tag);
230  }
231  }
232 }
com.google.protobuf.CodedInputStream.newInstance
static CodedInputStream newInstance(final InputStream input)
Definition: CodedInputStream.java:79
com.google.protobuf.PackedFieldTest
Definition: PackedFieldTest.java:39
com.google.protobuf.PackedFieldTest.testPackedGeneratedMessage
void testPackedGeneratedMessage()
Definition: PackedFieldTest.java:194
com.google.protobuf
Definition: ProtoCaliperBenchmark.java:2
com.google.protobuf.WireFormat
Definition: WireFormat.java:45
com.google.protobuf.CodedInputStream.readTag
abstract int readTag()
TestAllTypes
com.google.protobuf.CodedInputStream
Definition: CodedInputStream.java:61
com.google.protobuf.PackedFieldTest.testUnPackedDynamicMessageSerialize
void testUnPackedDynamicMessageSerialize()
Definition: PackedFieldTest.java:210
byte
SETUP_TEARDOWN_TESTCONTEXT typedef uint8_t byte
Definition: test_stream.cpp:12
TestUnpackedTypes
com.google.protobuf.WireFormat.WIRETYPE_LENGTH_DELIMITED
static final int WIRETYPE_LENGTH_DELIMITED
Definition: WireFormat.java:57
com.google.protobuf.WireFormat.getTagWireType
static int getTagWireType(final int tag)
Definition: WireFormat.java:66
com.google.protobuf.PackedFieldTest.testPackedSerialization
void testPackedSerialization()
Definition: PackedFieldTest.java:217
com.google.protobuf.CodedInputStream.skipField
abstract boolean skipField(final int tag)
com.google.protobuf.DynamicMessage
Definition: DynamicMessage.java:51
com.google.protobuf.PackedFieldTest.testUnpackedGeneratedMessage
void testUnpackedGeneratedMessage()
Definition: PackedFieldTest.java:205
com.google
com.google.protobuf.CodedInputStream.isAtEnd
abstract boolean isAtEnd()
com
com.google.protobuf.DynamicMessage.parseFrom
static DynamicMessage parseFrom(Descriptor type, CodedInputStream input)
Definition: DynamicMessage.java:90
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.PackedFieldTest.testPackedDynamicMessageSerialize
void testPackedDynamicMessageSerialize()
Definition: PackedFieldTest.java:199
com.google.protobuf.ByteString
Definition: ByteString.java:67


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