1
// Protocol Buffers - Google's data interchange format
2
// Copyright 2008 Google Inc. All rights reserved.
3
// http://code.google.com/p/protobuf/
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
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
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.
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.
31
package com.google.protobuf;
33
import protobuf_unittest.UnittestProto.TestAllExtensions;
34
import protobuf_unittest.UnittestProto.TestAllTypes;
36
import java.io.IOException;
37
import junit.framework.TestCase;
40
* Unit test for {@link LazyFieldLite}.
42
* @author xiangl@google.com (Xiang Li)
44
public class LazyFieldLiteTest extends TestCase {
46
public void testGetValue() {
47
MessageLite message = TestUtil.getAllSet();
48
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
49
assertEquals(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
50
changeValue(lazyField);
51
assertNotEqual(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
54
public void testGetValueEx() throws Exception {
55
TestAllExtensions message = TestUtil.getAllExtensionsSet();
56
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
57
assertEquals(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
58
changeValue(lazyField);
59
assertNotEqual(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
62
public void testSetValue() {
63
MessageLite message = TestUtil.getAllSet();
64
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
65
changeValue(lazyField);
66
assertNotEqual(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
67
message = lazyField.getValue(TestAllTypes.getDefaultInstance());
68
changeValue(lazyField);
69
assertEquals(message, lazyField.getValue(TestAllTypes.getDefaultInstance()));
72
public void testSetValueEx() throws Exception {
73
TestAllExtensions message = TestUtil.getAllExtensionsSet();
74
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
75
changeValue(lazyField);
76
assertNotEqual(message, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
77
MessageLite value = lazyField.getValue(TestAllExtensions.getDefaultInstance());
78
changeValue(lazyField);
79
assertEquals(value, lazyField.getValue(TestAllExtensions.getDefaultInstance()));
82
public void testGetSerializedSize() {
83
MessageLite message = TestUtil.getAllSet();
84
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
85
assertEquals(message.getSerializedSize(), lazyField.getSerializedSize());
86
changeValue(lazyField);
87
assertNotEqual(message.getSerializedSize(), lazyField.getSerializedSize());
90
public void testGetSerializedSizeEx() throws Exception {
91
TestAllExtensions message = TestUtil.getAllExtensionsSet();
92
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
93
assertEquals(message.getSerializedSize(), lazyField.getSerializedSize());
94
changeValue(lazyField);
95
assertNotEqual(message.getSerializedSize(), lazyField.getSerializedSize());
98
public void testGetByteString() {
99
MessageLite message = TestUtil.getAllSet();
100
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
101
assertEquals(message.toByteString(), lazyField.toByteString());
102
changeValue(lazyField);
103
assertNotEqual(message.toByteString(), lazyField.toByteString());
106
public void testGetByteStringEx() throws Exception {
107
TestAllExtensions message = TestUtil.getAllExtensionsSet();
108
LazyFieldLite lazyField = createLazyFieldLiteFromMessage(message);
109
assertEquals(message.toByteString(), lazyField.toByteString());
110
changeValue(lazyField);
111
assertNotEqual(message.toByteString(), lazyField.toByteString());
117
private LazyFieldLite createLazyFieldLiteFromMessage(MessageLite message) {
118
ByteString bytes = message.toByteString();
119
return new LazyFieldLite(TestUtil.getExtensionRegistry(), bytes);
122
private void changeValue(LazyFieldLite lazyField) {
123
TestAllTypes.Builder builder = TestUtil.getAllSet().toBuilder();
124
builder.addRepeatedBool(true);
125
MessageLite newMessage = builder.build();
126
lazyField.setValue(newMessage);
129
private void assertNotEqual(Object unexpected, Object actual) {
130
assertFalse(unexpected == actual
131
|| (unexpected != null && unexpected.equals(actual)));