public void TestLiteExtensions() { // TODO(kenton): Unlike other features of the lite library, extensions are // implemented completely differently from the regular library. We // should probably test them more thoroughly. TestAllExtensionsLite message = TestAllExtensionsLite.CreateBuilder() .SetExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite, 123) .AddExtension(UnitTestLiteProtoFile.RepeatedStringExtensionLite, "hello") .SetExtension(UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite, TestAllTypesLite.Types.NestedEnum.BAZ) .SetExtension(UnitTestLiteProtoFile.OptionalNestedMessageExtensionLite, TestAllTypesLite.Types.NestedMessage.CreateBuilder().SetBb(7).Build()) .Build(); // Test copying a message, since coping extensions actually does use a // different code path between lite and regular libraries, and as of this // writing, parsing hasn't been implemented yet. TestAllExtensionsLite message2 = message.ToBuilder().Build(); Assert.AreEqual(123, (int)message2.GetExtension( UnitTestLiteProtoFile.OptionalInt32ExtensionLite)); Assert.AreEqual(1, message2.GetExtensionCount( UnitTestLiteProtoFile.RepeatedStringExtensionLite)); Assert.AreEqual(1, message2.GetExtension( UnitTestLiteProtoFile.RepeatedStringExtensionLite).Count); Assert.AreEqual("hello", message2.GetExtension( UnitTestLiteProtoFile.RepeatedStringExtensionLite, 0)); Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.BAZ, message2.GetExtension( UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite)); Assert.AreEqual(7, message2.GetExtension( UnitTestLiteProtoFile.OptionalNestedMessageExtensionLite).Bb); }
public void TestMissingExtensionsLite() { const int optionalInt32 = 12345678; TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder(); builder.SetExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite, optionalInt32); builder.AddExtension(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite, 1.1); builder.AddExtension(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite, 1.2); builder.AddExtension(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite, 1.3); TestAllExtensionsLite msg = builder.Build(); Assert.IsTrue(msg.HasExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite)); Assert.AreEqual(3, msg.GetExtensionCount(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite)); byte[] bits = msg.ToByteArray(); TestAllExtensionsLite copy = TestAllExtensionsLite.ParseFrom(bits); Assert.IsFalse(copy.HasExtension(UnitTestLiteProtoFile.OptionalInt32ExtensionLite)); Assert.AreEqual(0, copy.GetExtensionCount(UnitTestLiteProtoFile.RepeatedDoubleExtensionLite)); Assert.AreNotEqual(msg, copy); //The lite runtime removes all unknown fields and extensions byte[] copybits = copy.ToByteArray(); Assert.AreEqual(0, copybits.Length); }