ExtendableMessageLiteTest.cs 21 KB

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