ParserLiteTest.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.UnittestLite.TestAllTypesLite;
34 import com.google.protobuf.UnittestLite.TestPackedExtensionsLite;
35 import com.google.protobuf.UnittestLite.TestParsingMergeLite;
36 import java.io.ByteArrayInputStream;
37 import java.io.ByteArrayOutputStream;
38 import java.io.InputStream;
39 import junit.framework.TestCase;
40 
41 public class ParserLiteTest extends TestCase {
43  throws Exception {
44  final byte[] data = message.toByteArray();
45  final int offset = 20;
46  final int length = data.length;
47  final int padding = 30;
48  Parser<? extends MessageLite> parser = message.getParserForType();
49  assertEquals(message, parser.parseFrom(data, registry));
50  assertEquals(
51  message,
52  parser.parseFrom(generatePaddingArray(data, offset, padding), offset, length, registry));
53  assertEquals(message, parser.parseFrom(message.toByteString(), registry));
54  assertEquals(message, parser.parseFrom(new ByteArrayInputStream(data), registry));
55  assertEquals(message, parser.parseFrom(CodedInputStream.newInstance(data), registry));
56  assertEquals(
57  message, parser.parseFrom(message.toByteString().asReadOnlyByteBuffer(), registry));
58  }
59 
60  @SuppressWarnings("unchecked")
61  private void assertRoundTripEquals(MessageLite message) throws Exception {
62  final byte[] data = message.toByteArray();
63  final int offset = 20;
64  final int length = data.length;
65  final int padding = 30;
66 
68  assertEquals(message, parser.parseFrom(data));
69  assertEquals(
70  message, parser.parseFrom(generatePaddingArray(data, offset, padding), offset, length));
71  assertEquals(message, parser.parseFrom(message.toByteString()));
72  assertEquals(message, parser.parseFrom(new ByteArrayInputStream(data)));
73  assertEquals(message, parser.parseFrom(CodedInputStream.newInstance(data)));
74  assertEquals(message, parser.parseFrom(message.toByteString().asReadOnlyByteBuffer()));
75  }
76 
77  private byte[] generatePaddingArray(byte[] data, int offset, int padding) {
78  byte[] result = new byte[offset + data.length + padding];
79  System.arraycopy(data, 0, result, offset, data.length);
80  return result;
81  }
82 
83  public void testParseExtensionsLite() throws Exception {
86  }
87 
88  public void testParsePacked() throws Exception {
91  }
92 
93  public void testParsePackedLite() throws Exception {
96  }
97 
98  public void testParseDelimitedToLite() throws Exception {
99  // Write MessageLite with packed extension fields.
100  TestPackedExtensionsLite packedMessage = TestUtilLite.getLitePackedExtensionsSet();
101  ByteArrayOutputStream output = new ByteArrayOutputStream();
102  packedMessage.writeDelimitedTo(output);
103  packedMessage.writeDelimitedTo(output);
104 
105  InputStream input = new ByteArrayInputStream(output.toByteArray());
106  assertEquals(
107  packedMessage,
108  packedMessage
109  .getParserForType()
110  .parseDelimitedFrom(input, TestUtilLite.getExtensionRegistryLite()));
111  assertEquals(
112  packedMessage,
113  packedMessage
114  .getParserForType()
115  .parseDelimitedFrom(input, TestUtilLite.getExtensionRegistryLite()));
116  }
117 
119  private void assertMessageMerged(TestAllTypesLite allTypes) throws Exception {
120  assertEquals(3, allTypes.getOptionalInt32());
121  assertEquals(2, allTypes.getOptionalInt64());
122  assertEquals("hello", allTypes.getOptionalString());
123  }
124 
125  public void testParsingMergeLite() throws Exception {
126  // Build messages.
127  TestAllTypesLite.Builder builder = TestAllTypesLite.newBuilder();
128  TestAllTypesLite msg1 = builder.setOptionalInt32(1).build();
129  builder.clear();
130  TestAllTypesLite msg2 = builder.setOptionalInt64(2).build();
131  builder.clear();
132  TestAllTypesLite msg3 = builder.setOptionalInt32(3).setOptionalString("hello").build();
133 
134  // Build groups.
135  TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG1 =
136  TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder().setField1(msg1).build();
137  TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG2 =
138  TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder().setField1(msg2).build();
139  TestParsingMergeLite.RepeatedFieldsGenerator.Group1 optionalG3 =
140  TestParsingMergeLite.RepeatedFieldsGenerator.Group1.newBuilder().setField1(msg3).build();
141  TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG1 =
142  TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder().setField1(msg1).build();
143  TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG2 =
144  TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder().setField1(msg2).build();
145  TestParsingMergeLite.RepeatedFieldsGenerator.Group2 repeatedG3 =
146  TestParsingMergeLite.RepeatedFieldsGenerator.Group2.newBuilder().setField1(msg3).build();
147 
148  // Assign and serialize RepeatedFieldsGenerator.
149  ByteString data =
150  TestParsingMergeLite.RepeatedFieldsGenerator.newBuilder()
151  .addField1(msg1)
152  .addField1(msg2)
153  .addField1(msg3)
154  .addField2(msg1)
155  .addField2(msg2)
156  .addField2(msg3)
157  .addField3(msg1)
158  .addField3(msg2)
159  .addField3(msg3)
160  .addGroup1(optionalG1)
161  .addGroup1(optionalG2)
162  .addGroup1(optionalG3)
163  .addGroup2(repeatedG1)
164  .addGroup2(repeatedG2)
165  .addGroup2(repeatedG3)
166  .addExt1(msg1)
167  .addExt1(msg2)
168  .addExt1(msg3)
169  .addExt2(msg1)
170  .addExt2(msg2)
171  .addExt2(msg3)
172  .build()
173  .toByteString();
174 
175  // Parse TestParsingMergeLite.
177  UnittestLite.registerAllExtensions(registry);
178  TestParsingMergeLite parsingMerge = TestParsingMergeLite.parser().parseFrom(data, registry);
179 
180  // Required and optional fields should be merged.
181  assertMessageMerged(parsingMerge.getRequiredAllTypes());
182  assertMessageMerged(parsingMerge.getOptionalAllTypes());
183  assertMessageMerged(parsingMerge.getOptionalGroup().getOptionalGroupAllTypes());
184  assertMessageMerged(parsingMerge.getExtension(TestParsingMergeLite.optionalExt));
185 
186  // Repeated fields should not be merged.
187  assertEquals(3, parsingMerge.getRepeatedAllTypesCount());
188  assertEquals(3, parsingMerge.getRepeatedGroupCount());
189  assertEquals(3, parsingMerge.getExtensionCount(TestParsingMergeLite.repeatedExt));
190  }
191 }
TestPackedExtensionsLite
com.google.protobuf.ParserLiteTest.testParseExtensionsLite
void testParseExtensionsLite()
Definition: ParserLiteTest.java:83
com.google.protobuf.ParserLiteTest.assertMessageMerged
void assertMessageMerged(TestAllTypesLite allTypes)
Definition: ParserLiteTest.java:119
com.google.protobuf.CodedInputStream.newInstance
static CodedInputStream newInstance(final InputStream input)
Definition: CodedInputStream.java:79
com.google.protobuf.TestUtil.getPackedSet
static TestPackedTypes getPackedSet()
Definition: core/src/test/java/com/google/protobuf/TestUtil.java:304
length
GLenum GLuint GLenum GLsizei length
Definition: glcorearb.h:2695
input
std::string input
Definition: tokenizer_unittest.cc:197
com.google.protobuf.ParserLiteTest.testParsePackedLite
void testParsePackedLite()
Definition: ParserLiteTest.java:93
com.google.protobuf.ParserLiteTest
Definition: ParserLiteTest.java:41
com.google.protobuf
Definition: ProtoCaliperBenchmark.java:2
com.google.protobuf.ExtensionRegistryLite.newInstance
static ExtensionRegistryLite newInstance()
Definition: ExtensionRegistryLite.java:113
com.google.protobuf.TestUtil.getExtensionRegistry
static ExtensionRegistryLite getExtensionRegistry()
Definition: core/src/test/java/com/google/protobuf/TestUtil.java:1184
TestAllTypesLite
com.google.protobuf.TestUtil
Definition: core/src/test/java/com/google/protobuf/TestUtil.java:254
com.google.protobuf.Parser
Definition: Parser.java:47
com.google.protobuf.CodedInputStream
Definition: CodedInputStream.java:61
com.google.protobuf.ParserLiteTest.testParsePacked
void testParsePacked()
Definition: ParserLiteTest.java:88
offset
GLintptr offset
Definition: glcorearb.h:2944
com.google.protobuf.ParserLiteTest.testParsingMergeLite
void testParsingMergeLite()
Definition: ParserLiteTest.java:125
com.google.protobuf.TestUtilLite.getAllLiteExtensionsSet
static TestAllExtensionsLite getAllLiteExtensionsSet()
Definition: TestUtilLite.java:163
TestParsingMergeLite
com.google.protobuf.ExtensionRegistryLite
Definition: ExtensionRegistryLite.java:70
com.google.protobuf.TestUtilLite
Definition: TestUtilLite.java:141
java
com.google.protobuf.ParserLiteTest.testParseDelimitedToLite
void testParseDelimitedToLite()
Definition: ParserLiteTest.java:98
com.google.protobuf.TestUtil.getPackedExtensionsSet
static TestPackedExtensions getPackedExtensionsSet()
Definition: core/src/test/java/com/google/protobuf/TestUtil.java:316
com.google
com.google.protobuf.TestUtilLite.getExtensionRegistryLite
static ExtensionRegistryLite getExtensionRegistryLite()
Definition: TestUtilLite.java:306
com
com.google.protobuf.TestUtilLite.getLitePackedExtensionsSet
static TestPackedExtensionsLite getLitePackedExtensionsSet()
Definition: TestUtilLite.java:169
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: glcorearb.h:2879
com.google.protobuf.ParserLiteTest.assertRoundTripEquals
void assertRoundTripEquals(MessageLite message, ExtensionRegistryLite registry)
Definition: ParserLiteTest.java:42
output
const upb_json_parsermethod const upb_symtab upb_sink * output
Definition: ruby/ext/google/protobuf_c/upb.h:10503
benchmarks.python.py_benchmark.parser
parser
Definition: py_benchmark.py:10
gmock_test_utils.TestCase
TestCase
Definition: gmock_test_utils.py:97
com.google.protobuf.ParserLiteTest.generatePaddingArray
byte[] generatePaddingArray(byte[] data, int offset, int padding)
Definition: ParserLiteTest.java:77
message
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: glcorearb.h:2695
com.google.protobuf.MessageLite
Definition: MessageLite.java:65
com.google.protobuf.ByteString
Definition: ByteString.java:67


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