blob: 5ea8447bbc13962982fa781a16ecd5864c37f232 [file] [log] [blame]
csharptest71f662c2011-05-20 15:15:34 -05001#region Copyright notice and license
2
csharptestd965c662011-05-20 13:57:07 -05003// Protocol Buffers - Google's data interchange format
4// Copyright 2008 Google Inc. All rights reserved.
5// http://github.com/jskeet/dotnet-protobufs/
6// Original C++/Java/Python code:
7// http://code.google.com/p/protobuf/
8//
9// Redistribution and use in source and binary forms, with or without
10// modification, are permitted provided that the following conditions are
11// met:
12//
13// * Redistributions of source code must retain the above copyright
14// notice, this list of conditions and the following disclaimer.
15// * Redistributions in binary form must reproduce the above
16// copyright notice, this list of conditions and the following disclaimer
17// in the documentation and/or other materials provided with the
18// distribution.
19// * Neither the name of Google Inc. nor the names of its
20// contributors may be used to endorse or promote products derived from
21// this software without specific prior written permission.
22//
23// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
csharptest71f662c2011-05-20 15:15:34 -050034
csharptestd965c662011-05-20 13:57:07 -050035#endregion
36
37using System;
38using System.Collections.Generic;
39using System.Text;
40using Google.ProtocolBuffers;
41using Google.ProtocolBuffers.TestProtos;
42using NUnit.Framework;
43
csharptest71f662c2011-05-20 15:15:34 -050044namespace Google.ProtocolBuffers
45{
46 [TestFixture]
47 public class ExtendableMessageLiteTest
48 {
49 [Test, Ignore("Not implemented, no assertion made"), ExpectedException(typeof (ArgumentException))]
50 public void ExtensionWriterInvalidExtension()
51 {
52 TestPackedExtensionsLite.CreateBuilder()[
53 UnitTestLiteProtoFile.OptionalForeignMessageExtensionLite.Descriptor] =
54 ForeignMessageLite.DefaultInstance;
55 }
csharptestd965c662011-05-20 13:57:07 -050056
csharptest71f662c2011-05-20 15:15:34 -050057 [Test]
58 public void ExtensionWriterTestMessages()
59 {
60 TestAllExtensionsLite.Builder b = TestAllExtensionsLite.CreateBuilder().SetExtension(
61 UnitTestLiteProtoFile.OptionalForeignMessageExtensionLite,
62 ForeignMessageLite.CreateBuilder().SetC(123).Build());
63 TestAllExtensionsLite copy, msg = b.Build();
64
65 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
66 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
67
68 copy = TestAllExtensionsLite.ParseFrom(msg.ToByteArray(), registry);
69 Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
70 }
71
72 [Test]
73 public void ExtensionWriterIsInitialized()
74 {
75 Assert.IsTrue(ForeignMessageLite.DefaultInstance.IsInitialized);
76 Assert.IsTrue(TestPackedExtensionsLite.CreateBuilder().IsInitialized);
77 Assert.IsTrue(TestAllExtensionsLite.CreateBuilder().SetExtension(
78 UnitTestLiteProtoFile.OptionalForeignMessageExtensionLite, ForeignMessageLite.DefaultInstance)
79 .IsInitialized);
80 }
81
82 [Test]
83 public void ExtensionWriterTestSetExtensionLists()
84 {
85 TestAllExtensionsLite msg, copy;
86 TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
87 .SetExtension(UnitTestLiteProtoFile.RepeatedBoolExtensionLite, new[] {true, false})
88 .SetExtension(UnitTestLiteProtoFile.RepeatedCordExtensionLite, new[] {"123", "456"})
89 .SetExtension(UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite,
90 new[] {ForeignEnumLite.FOREIGN_LITE_BAZ, ForeignEnumLite.FOREIGN_LITE_FOO})
91 ;
92
93 msg = builder.Build();
94 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
95 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
96
97 copy = TestAllExtensionsLite.ParseFrom(msg.ToByteArray(), registry);
98 Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
99
100 Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_FOO,
101 copy.GetExtension(UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite, 1));
102 }
103
104 [Test]
105 public void ExtensionWriterTest()
106 {
107 TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
108 .SetExtension(UnitTestLiteProtoFile.DefaultBoolExtensionLite, true)
109 .SetExtension(UnitTestLiteProtoFile.DefaultBytesExtensionLite, ByteString.CopyFromUtf8("123"))
110 .SetExtension(UnitTestLiteProtoFile.DefaultCordExtensionLite, "123")
111 .SetExtension(UnitTestLiteProtoFile.DefaultDoubleExtensionLite, 123)
112 .SetExtension(UnitTestLiteProtoFile.DefaultFixed32ExtensionLite, 123u)
113 .SetExtension(UnitTestLiteProtoFile.DefaultFixed64ExtensionLite, 123u)
114 .SetExtension(UnitTestLiteProtoFile.DefaultFloatExtensionLite, 123)
115 .SetExtension(UnitTestLiteProtoFile.DefaultForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
116 .SetExtension(UnitTestLiteProtoFile.DefaultImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
117 .SetExtension(UnitTestLiteProtoFile.DefaultInt32ExtensionLite, 123)
118 .SetExtension(UnitTestLiteProtoFile.DefaultInt64ExtensionLite, 123)
119 .SetExtension(UnitTestLiteProtoFile.DefaultNestedEnumExtensionLite,
120 TestAllTypesLite.Types.NestedEnum.FOO)
121 .SetExtension(UnitTestLiteProtoFile.DefaultSfixed32ExtensionLite, 123)
122 .SetExtension(UnitTestLiteProtoFile.DefaultSfixed64ExtensionLite, 123)
123 .SetExtension(UnitTestLiteProtoFile.DefaultSint32ExtensionLite, 123)
124 .SetExtension(UnitTestLiteProtoFile.DefaultSint64ExtensionLite, 123)
125 .SetExtension(UnitTestLiteProtoFile.DefaultStringExtensionLite, "123")
126 .SetExtension(UnitTestLiteProtoFile.DefaultStringPieceExtensionLite, "123")
127 .SetExtension(UnitTestLiteProtoFile.DefaultUint32ExtensionLite, 123u)
128 .SetExtension(UnitTestLiteProtoFile.DefaultUint64ExtensionLite, 123u)
129 //Optional
130 .SetExtension(UnitTestLiteProtoFile.OptionalBoolExtensionLite, true)
131 .SetExtension(UnitTestLiteProtoFile.OptionalBytesExtensionLite, ByteString.CopyFromUtf8("123"))
132 .SetExtension(UnitTestLiteProtoFile.OptionalCordExtensionLite, "123")
133 .SetExtension(UnitTestLiteProtoFile.OptionalDoubleExtensionLite, 123)
134 .SetExtension(UnitTestLiteProtoFile.OptionalFixed32ExtensionLite, 123u)
135 .SetExtension(UnitTestLiteProtoFile.OptionalFixed64ExtensionLite, 123u)
136 .SetExtension(UnitTestLiteProtoFile.OptionalFloatExtensionLite, 123)
137 .SetExtension(UnitTestLiteProtoFile.OptionalForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
138 .SetExtension(UnitTestLiteProtoFile.OptionalImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
139 .SetExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite, 123)
140 .SetExtension(UnitTestLiteProtoFile.OptionalInt64ExtensionLite, 123)
141 .SetExtension(UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite,
142 TestAllTypesLite.Types.NestedEnum.FOO)
143 .SetExtension(UnitTestLiteProtoFile.OptionalSfixed32ExtensionLite, 123)
144 .SetExtension(UnitTestLiteProtoFile.OptionalSfixed64ExtensionLite, 123)
145 .SetExtension(UnitTestLiteProtoFile.OptionalSint32ExtensionLite, 123)
146 .SetExtension(UnitTestLiteProtoFile.OptionalSint64ExtensionLite, 123)
147 .SetExtension(UnitTestLiteProtoFile.OptionalStringExtensionLite, "123")
148 .SetExtension(UnitTestLiteProtoFile.OptionalStringPieceExtensionLite, "123")
149 .SetExtension(UnitTestLiteProtoFile.OptionalUint32ExtensionLite, 123u)
150 .SetExtension(UnitTestLiteProtoFile.OptionalUint64ExtensionLite, 123u)
151 //Repeated
152 .AddExtension(UnitTestLiteProtoFile.RepeatedBoolExtensionLite, true)
153 .AddExtension(UnitTestLiteProtoFile.RepeatedBytesExtensionLite, ByteString.CopyFromUtf8("123"))
154 .AddExtension(UnitTestLiteProtoFile.RepeatedCordExtensionLite, "123")
155 .AddExtension(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite, 123)
156 .AddExtension(UnitTestLiteProtoFile.RepeatedFixed32ExtensionLite, 123u)
157 .AddExtension(UnitTestLiteProtoFile.RepeatedFixed64ExtensionLite, 123u)
158 .AddExtension(UnitTestLiteProtoFile.RepeatedFloatExtensionLite, 123)
159 .AddExtension(UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
160 .AddExtension(UnitTestLiteProtoFile.RepeatedImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
161 .AddExtension(UnitTestLiteProtoFile.RepeatedInt32ExtensionLite, 123)
162 .AddExtension(UnitTestLiteProtoFile.RepeatedInt64ExtensionLite, 123)
163 .AddExtension(UnitTestLiteProtoFile.RepeatedNestedEnumExtensionLite,
164 TestAllTypesLite.Types.NestedEnum.FOO)
165 .AddExtension(UnitTestLiteProtoFile.RepeatedSfixed32ExtensionLite, 123)
166 .AddExtension(UnitTestLiteProtoFile.RepeatedSfixed64ExtensionLite, 123)
167 .AddExtension(UnitTestLiteProtoFile.RepeatedSint32ExtensionLite, 123)
168 .AddExtension(UnitTestLiteProtoFile.RepeatedSint64ExtensionLite, 123)
169 .AddExtension(UnitTestLiteProtoFile.RepeatedStringExtensionLite, "123")
170 .AddExtension(UnitTestLiteProtoFile.RepeatedStringPieceExtensionLite, "123")
171 .AddExtension(UnitTestLiteProtoFile.RepeatedUint32ExtensionLite, 123u)
172 .AddExtension(UnitTestLiteProtoFile.RepeatedUint64ExtensionLite, 123u)
173 ;
174 TestAllExtensionsLite msg = builder.Build();
175
176 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
177 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
178
179 TestAllExtensionsLite.Builder copyBuilder =
180 TestAllExtensionsLite.CreateBuilder().MergeFrom(msg.ToByteArray(), registry);
181 TestAllExtensionsLite copy = copyBuilder.Build();
182
183 Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
184
185 Assert.AreEqual(true, copy.GetExtension(UnitTestLiteProtoFile.DefaultBoolExtensionLite));
186 Assert.AreEqual(ByteString.CopyFromUtf8("123"),
187 copy.GetExtension(UnitTestLiteProtoFile.DefaultBytesExtensionLite));
188 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.DefaultCordExtensionLite));
189 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultDoubleExtensionLite));
190 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.DefaultFixed32ExtensionLite));
191 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.DefaultFixed64ExtensionLite));
192 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultFloatExtensionLite));
193 Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
194 copy.GetExtension(UnitTestLiteProtoFile.DefaultForeignEnumExtensionLite));
195 Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
196 copy.GetExtension(UnitTestLiteProtoFile.DefaultImportEnumExtensionLite));
197 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultInt32ExtensionLite));
198 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultInt64ExtensionLite));
199 Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
200 copy.GetExtension(UnitTestLiteProtoFile.DefaultNestedEnumExtensionLite));
201 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultSfixed32ExtensionLite));
202 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultSfixed64ExtensionLite));
203 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultSint32ExtensionLite));
204 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.DefaultSint64ExtensionLite));
205 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.DefaultStringExtensionLite));
206 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.DefaultStringPieceExtensionLite));
207 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.DefaultUint32ExtensionLite));
208 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.DefaultUint64ExtensionLite));
209
210 Assert.AreEqual(true, copy.GetExtension(UnitTestLiteProtoFile.OptionalBoolExtensionLite));
211 Assert.AreEqual(ByteString.CopyFromUtf8("123"),
212 copy.GetExtension(UnitTestLiteProtoFile.OptionalBytesExtensionLite));
213 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.OptionalCordExtensionLite));
214 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalDoubleExtensionLite));
215 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.OptionalFixed32ExtensionLite));
216 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.OptionalFixed64ExtensionLite));
217 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalFloatExtensionLite));
218 Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
219 copy.GetExtension(UnitTestLiteProtoFile.OptionalForeignEnumExtensionLite));
220 Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
221 copy.GetExtension(UnitTestLiteProtoFile.OptionalImportEnumExtensionLite));
222 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite));
223 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalInt64ExtensionLite));
224 Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
225 copy.GetExtension(UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite));
226 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalSfixed32ExtensionLite));
227 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalSfixed64ExtensionLite));
228 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalSint32ExtensionLite));
229 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.OptionalSint64ExtensionLite));
230 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.OptionalStringExtensionLite));
231 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.OptionalStringPieceExtensionLite));
232 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.OptionalUint32ExtensionLite));
233 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.OptionalUint64ExtensionLite));
234
235 Assert.AreEqual(true, copy.GetExtension(UnitTestLiteProtoFile.RepeatedBoolExtensionLite, 0));
236 Assert.AreEqual(ByteString.CopyFromUtf8("123"),
237 copy.GetExtension(UnitTestLiteProtoFile.RepeatedBytesExtensionLite, 0));
238 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.RepeatedCordExtensionLite, 0));
239 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite, 0));
240 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.RepeatedFixed32ExtensionLite, 0));
241 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.RepeatedFixed64ExtensionLite, 0));
242 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedFloatExtensionLite, 0));
243 Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
244 copy.GetExtension(UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite, 0));
245 Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
246 copy.GetExtension(UnitTestLiteProtoFile.RepeatedImportEnumExtensionLite, 0));
247 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedInt32ExtensionLite, 0));
248 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedInt64ExtensionLite, 0));
249 Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
250 copy.GetExtension(UnitTestLiteProtoFile.RepeatedNestedEnumExtensionLite, 0));
251 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedSfixed32ExtensionLite, 0));
252 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedSfixed64ExtensionLite, 0));
253 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedSint32ExtensionLite, 0));
254 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.RepeatedSint64ExtensionLite, 0));
255 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.RepeatedStringExtensionLite, 0));
256 Assert.AreEqual("123", copy.GetExtension(UnitTestLiteProtoFile.RepeatedStringPieceExtensionLite, 0));
257 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.RepeatedUint32ExtensionLite, 0));
258 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.RepeatedUint64ExtensionLite, 0));
259 }
260
csharptestc2a1f9b2011-06-06 11:40:01 -0500261 private TestPackedExtensionsLite BuildPackedExtensions()
csharptest71f662c2011-05-20 15:15:34 -0500262 {
263 TestPackedExtensionsLite.Builder builder = TestPackedExtensionsLite.CreateBuilder()
csharptestc2a1f9b2011-06-06 11:40:01 -0500264 .AddExtension(UnitTestLiteProtoFile.PackedBoolExtensionLite, true)
265 .AddExtension(UnitTestLiteProtoFile.PackedDoubleExtensionLite, 123)
266 .AddExtension(UnitTestLiteProtoFile.PackedFixed32ExtensionLite, 123u)
267 .AddExtension(UnitTestLiteProtoFile.PackedFixed64ExtensionLite, 123u)
268 .AddExtension(UnitTestLiteProtoFile.PackedFloatExtensionLite, 123)
269 .AddExtension(UnitTestLiteProtoFile.PackedInt32ExtensionLite, 123)
270 .AddExtension(UnitTestLiteProtoFile.PackedInt64ExtensionLite, 123)
271 .AddExtension(UnitTestLiteProtoFile.PackedSfixed32ExtensionLite, 123)
272 .AddExtension(UnitTestLiteProtoFile.PackedSfixed64ExtensionLite, 123)
273 .AddExtension(UnitTestLiteProtoFile.PackedSint32ExtensionLite, 123)
274 .AddExtension(UnitTestLiteProtoFile.PackedSint64ExtensionLite, 123)
275 .AddExtension(UnitTestLiteProtoFile.PackedUint32ExtensionLite, 123u)
276 .AddExtension(UnitTestLiteProtoFile.PackedUint64ExtensionLite, 123u)
277 .AddExtension(UnitTestLiteProtoFile.PackedBoolExtensionLite, true)
278 .AddExtension(UnitTestLiteProtoFile.PackedDoubleExtensionLite, 123)
279 .AddExtension(UnitTestLiteProtoFile.PackedFixed32ExtensionLite, 123u)
280 .AddExtension(UnitTestLiteProtoFile.PackedFixed64ExtensionLite, 123u)
281 .AddExtension(UnitTestLiteProtoFile.PackedFloatExtensionLite, 123)
282 .AddExtension(UnitTestLiteProtoFile.PackedInt32ExtensionLite, 123)
283 .AddExtension(UnitTestLiteProtoFile.PackedInt64ExtensionLite, 123)
284 .AddExtension(UnitTestLiteProtoFile.PackedSfixed32ExtensionLite, 123)
285 .AddExtension(UnitTestLiteProtoFile.PackedSfixed64ExtensionLite, 123)
286 .AddExtension(UnitTestLiteProtoFile.PackedSint32ExtensionLite, 123)
287 .AddExtension(UnitTestLiteProtoFile.PackedSint64ExtensionLite, 123)
288 .AddExtension(UnitTestLiteProtoFile.PackedUint32ExtensionLite, 123u)
289 .AddExtension(UnitTestLiteProtoFile.PackedUint64ExtensionLite, 123u);
csharptest71f662c2011-05-20 15:15:34 -0500290
291 TestPackedExtensionsLite msg = builder.Build();
csharptestc2a1f9b2011-06-06 11:40:01 -0500292 return msg;
293 }
csharptest71f662c2011-05-20 15:15:34 -0500294
csharptestc2a1f9b2011-06-06 11:40:01 -0500295 private void AssertPackedExtensions(TestPackedExtensionsLite copy)
296 {
csharptest71f662c2011-05-20 15:15:34 -0500297 Assert.AreEqual(true, copy.GetExtension(UnitTestLiteProtoFile.PackedBoolExtensionLite, 0));
298 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedDoubleExtensionLite, 0));
299 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedFixed32ExtensionLite, 0));
300 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedFixed64ExtensionLite, 0));
301 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedFloatExtensionLite, 0));
302 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedInt32ExtensionLite, 0));
303 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedInt64ExtensionLite, 0));
304 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSfixed32ExtensionLite, 0));
305 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSfixed64ExtensionLite, 0));
306 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSint32ExtensionLite, 0));
307 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSint64ExtensionLite, 0));
308 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedUint32ExtensionLite, 0));
309 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedUint64ExtensionLite, 0));
310
311 Assert.AreEqual(true, copy.GetExtension(UnitTestLiteProtoFile.PackedBoolExtensionLite, 1));
312 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedDoubleExtensionLite, 1));
313 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedFixed32ExtensionLite, 1));
314 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedFixed64ExtensionLite, 1));
315 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedFloatExtensionLite, 1));
316 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedInt32ExtensionLite, 1));
317 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedInt64ExtensionLite, 1));
318 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSfixed32ExtensionLite, 1));
319 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSfixed64ExtensionLite, 1));
320 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSint32ExtensionLite, 1));
321 Assert.AreEqual(123, copy.GetExtension(UnitTestLiteProtoFile.PackedSint64ExtensionLite, 1));
322 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedUint32ExtensionLite, 1));
323 Assert.AreEqual(123u, copy.GetExtension(UnitTestLiteProtoFile.PackedUint64ExtensionLite, 1));
324 }
csharptestc2a1f9b2011-06-06 11:40:01 -0500325
326 [Test]
327 public void ExtensionWriterTestPacked()
328 {
329 TestPackedExtensionsLite msg = BuildPackedExtensions();
330
331 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
332 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
333
334 TestPackedExtensionsLite.Builder copyBuilder =
335 TestPackedExtensionsLite.CreateBuilder().MergeFrom(msg.ToByteArray(), registry);
336 TestPackedExtensionsLite copy = copyBuilder.Build();
337
338 Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
339
340 AssertPackedExtensions(copy);
341 }
342
343 [Test]
344 public void TestUnpackedAndPackedExtensions()
345 {
346 TestPackedExtensionsLite original = BuildPackedExtensions();
347 AssertPackedExtensions(original);
348
349 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
350 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
351
352 TestUnpackedExtensionsLite unpacked = TestUnpackedExtensionsLite.ParseFrom(original.ToByteArray(), registry);
353
354 TestPackedExtensionsLite packed = TestPackedExtensionsLite.ParseFrom(unpacked.ToByteArray(), registry);
355
356 Assert.AreEqual(original, packed);
357 Assert.AreEqual(original.ToByteArray(), packed.ToByteArray());
358 AssertPackedExtensions(packed);
359 }
360
361 [Test]
362 public void TestUnpackedFromPackedInput()
363 {
364 byte[] packedData = BuildPackedExtensions().ToByteArray();
365
366 TestUnpackedTypesLite unpacked = TestUnpackedTypesLite.ParseFrom(packedData);
367 TestPackedTypesLite packed = TestPackedTypesLite.ParseFrom(unpacked.ToByteArray());
368 Assert.AreEqual(packedData, packed.ToByteArray());
369
370 unpacked = TestUnpackedTypesLite.ParseFrom(packed.ToByteArray());
371
372 ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
373 UnitTestLiteProtoFile.RegisterAllExtensions(registry);
374 AssertPackedExtensions(TestPackedExtensionsLite.ParseFrom(unpacked.ToByteArray(), registry));
375 }
csharptestd965c662011-05-20 13:57:07 -0500376 }
csharptest71f662c2011-05-20 15:15:34 -0500377}