public void CopyFrom() { TestEmptyMessage message = TestEmptyMessage.CreateBuilder().MergeFrom(emptyMessage).Build(); Assert.AreEqual(emptyMessage.ToString(), message.ToString()); }
public void MergeFrom() { TestEmptyMessage source = TestEmptyMessage.CreateBuilder() .SetUnknownFields( UnknownFieldSet.CreateBuilder() .AddField(2, UnknownField.CreateBuilder() .AddVarint(2).Build()) .AddField(3, UnknownField.CreateBuilder() .AddVarint(4).Build()) .Build()) .Build(); TestEmptyMessage destination = TestEmptyMessage.CreateBuilder() .SetUnknownFields( UnknownFieldSet.CreateBuilder() .AddField(1, UnknownField.CreateBuilder() .AddVarint(1).Build()) .AddField(3, UnknownField.CreateBuilder() .AddVarint(3).Build()) .Build()) .MergeFrom(source) .Build(); Assert.AreEqual( "1: 1\n" + "2: 2\n" + "3: 3\n" + "3: 4\n", destination.ToString()); }
public void ClearMessage() { TestEmptyMessage message = TestEmptyMessage.CreateBuilder().MergeFrom(emptyMessage).Clear().Build(); Assert.AreEqual(0, message.SerializedSize); }
public void TestRestoreFromOtherType() { TestInteropPerson person = TestInteropPerson.CreateBuilder() .SetId(123) .SetName("abc") .SetEmail("*****@*****.**") .AddRangeCodes(new[] { 1, 2, 3 }) .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-1234").Build()) .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-5678").Build()) .AddAddresses( TestInteropPerson.Types.Addresses.CreateBuilder().SetAddress("123 Seseme").SetCity("Wonderland"). SetState("NA").SetZip(12345).Build()) .SetExtension(UnittestExtrasFull.EmployeeId, TestInteropEmployeeId.CreateBuilder().SetNumber("123").Build()) .Build(); Assert.IsTrue(person.IsInitialized); TestEmptyMessage temp = TestEmptyMessage.ParseFrom(person.ToByteArray()); Assert.AreEqual(7, temp.UnknownFields.FieldDictionary.Count); temp = temp.ToBuilder().Build(); Assert.AreEqual(7, temp.UnknownFields.FieldDictionary.Count); ExtensionRegistry registry = ExtensionRegistry.CreateInstance(); UnittestExtrasFull.RegisterAllExtensions(registry); TestInteropPerson copy = TestInteropPerson.ParseFrom(temp.ToByteArray(), registry); Assert.AreEqual(person, copy); Assert.AreEqual(person.ToByteArray(), copy.ToByteArray()); }
public UnknownFieldSetTest() { descriptor = TestAllTypes.Descriptor; allFields = TestUtil.GetAllSet(); allFieldsData = allFields.ToByteString(); emptyMessage = TestEmptyMessage.ParseFrom(allFieldsData); unknownFields = emptyMessage.UnknownFields; }
public void TestHashCode(IMessage message) { var emptyMessage = new TestEmptyMessage(); int hashCode = emptyMessage.GetHashCode(); emptyMessage.MergeFrom(message.ToByteArray()); Assert.AreNotEqual(hashCode, emptyMessage.GetHashCode()); }
public void SetUp() { descriptor = TestAllTypes.Descriptor; allFields = TestUtil.GetAllSet(); allFieldsData = allFields.ToByteString(); emptyMessage = TestEmptyMessage.ParseFrom(allFieldsData); unknownFields = emptyMessage.UnknownFields; }
public void TestHashCode() { var message = SampleMessages.CreateFullTestAllTypes(); var emptyMessage = new TestEmptyMessage(); int hashCode = emptyMessage.GetHashCode(); emptyMessage.MergeFrom(message.ToByteArray()); Assert.AreNotEqual(hashCode, emptyMessage.GetHashCode()); }
public void TestMergeMessage(IMessage message) { var emptyMessage = new TestEmptyMessage(); var otherEmptyMessage = new TestEmptyMessage(); emptyMessage.MergeFrom(message.ToByteArray()); otherEmptyMessage.MergeFrom(emptyMessage); Assert.AreEqual(message.CalculateSize(), otherEmptyMessage.CalculateSize()); Assert.AreEqual(message.ToByteArray(), otherEmptyMessage.ToByteArray()); }
public void TestEquals() { var message = SampleMessages.CreateFullTestAllTypes(); var emptyMessage = new TestEmptyMessage(); var otherEmptyMessage = new TestEmptyMessage(); Assert.AreEqual(emptyMessage, otherEmptyMessage); emptyMessage.MergeFrom(message.ToByteArray()); Assert.AreNotEqual(emptyMessage.CalculateSize(), otherEmptyMessage.CalculateSize()); Assert.AreNotEqual(emptyMessage, otherEmptyMessage); }
public void TestMergeCodedInput(IMessage message) { var emptyMessage = new TestEmptyMessage(); emptyMessage.MergeFrom(message.ToByteArray()); Assert.AreEqual(message.CalculateSize(), emptyMessage.CalculateSize()); Assert.AreEqual(message.ToByteArray(), emptyMessage.ToByteArray()); var newMessage = message.Descriptor.Parser.ParseFrom(emptyMessage.ToByteArray()); Assert.AreEqual(message, newMessage); Assert.AreEqual(message.CalculateSize(), newMessage.CalculateSize()); }
public void WrongTypeTreatedAsUnknown() { // Test that fields of the wrong wire type are treated like unknown fields // when parsing. ByteString bizarroData = GetBizarroData(); TestAllTypes allTypesMessage = TestAllTypes.ParseFrom(bizarroData); TestEmptyMessage emptyMessage = TestEmptyMessage.ParseFrom(bizarroData); // All fields should have been interpreted as unknown, so the debug strings // should be the same. Assert.AreEqual(emptyMessage.ToString(), allTypesMessage.ToString()); }
public void PrintUnknownFields() { TestEmptyMessage message = TestEmptyMessage.CreateBuilder() .SetUnknownFields( UnknownFieldSet.CreateBuilder() .AddField(5, UnknownField.CreateBuilder() .AddVarint(1) .AddFixed32(2) .AddFixed64(3) .AddLengthDelimited(ByteString.CopyFromUtf8("4")) .AddGroup( UnknownFieldSet.CreateBuilder() .AddField(10, UnknownField.CreateBuilder() .AddVarint(5) .Build()) .Build()) .Build()) .AddField(8, UnknownField.CreateBuilder() .AddVarint(1) .AddVarint(2) .AddVarint(3) .Build()) .AddField(15, UnknownField.CreateBuilder() .AddVarint(0xABCDEF1234567890L) .AddFixed32(0xABCD1234) .AddFixed64(0xABCDEF1234567890L) .Build()) .Build()) .Build(); Assert.AreEqual( "5: 1\n" + "5: 0x00000002\n" + "5: 0x0000000000000003\n" + "5: \"4\"\n" + "5 {\n" + " 10: 5\n" + "}\n" + "8: 1\n" + "8: 2\n" + "8: 3\n" + "15: 12379813812177893520\n" + "15: 0xabcd1234\n" + "15: 0xabcdef1234567890\n", TextFormat.PrintToString(message)); }
public void EqualsAndHashCode() { TestAllTypes a = TestUtil.GetAllSet(); TestAllTypes b = TestAllTypes.CreateBuilder().Build(); TestAllTypes c = TestAllTypes.CreateBuilder(b).AddRepeatedString("x").Build(); TestAllTypes d = TestAllTypes.CreateBuilder(c).AddRepeatedString("y").Build(); TestAllExtensions e = TestUtil.GetAllExtensionsSet(); TestAllExtensions f = TestAllExtensions.CreateBuilder(e) .AddExtension(UnitTestProtoFile.RepeatedInt32Extension, 999).Build(); CheckEqualsIsConsistent(a); CheckEqualsIsConsistent(b); CheckEqualsIsConsistent(c); CheckEqualsIsConsistent(d); CheckEqualsIsConsistent(e); CheckEqualsIsConsistent(f); CheckNotEqual(a, b); CheckNotEqual(a, c); CheckNotEqual(a, d); CheckNotEqual(a, e); CheckNotEqual(a, f); CheckNotEqual(b, c); CheckNotEqual(b, d); CheckNotEqual(b, e); CheckNotEqual(b, f); CheckNotEqual(c, d); CheckNotEqual(c, e); CheckNotEqual(c, f); CheckNotEqual(d, e); CheckNotEqual(d, f); CheckNotEqual(e, f); // Deserializing into the TestEmptyMessage such that every field is an UnknownFieldSet.Field TestEmptyMessage eUnknownFields = TestEmptyMessage.ParseFrom(e.ToByteArray()); TestEmptyMessage fUnknownFields = TestEmptyMessage.ParseFrom(f.ToByteArray()); CheckNotEqual(eUnknownFields, fUnknownFields); CheckEqualsIsConsistent(eUnknownFields); CheckEqualsIsConsistent(fUnknownFields); // Subseqent reconstitutions should be identical TestEmptyMessage eUnknownFields2 = TestEmptyMessage.ParseFrom(e.ToByteArray()); CheckEqualsIsConsistent(eUnknownFields, eUnknownFields2); }
public void TestMergeCodedInput() { var message = SampleMessages.CreateFullTestAllTypes(); var emptyMessage = new TestEmptyMessage(); emptyMessage.MergeFrom(message.ToByteArray()); Assert.AreEqual(message.CalculateSize(), emptyMessage.CalculateSize()); Assert.AreEqual(message.ToByteArray(), emptyMessage.ToByteArray()); var newMessage = new TestAllTypes(); newMessage.MergeFrom(emptyMessage.ToByteArray()); Assert.AreEqual(message, newMessage); Assert.AreEqual(message.CalculateSize(), newMessage.CalculateSize()); }
public void TestDiscardUnknownFields() { var message = SampleMessages.CreateFullTestAllTypes(); var goldenEmptyMessage = new TestEmptyMessage(); byte[] data = message.ToByteArray(); int fullSize = message.CalculateSize(); Action <IMessage> assertEmpty = msg => { Assert.AreEqual(0, msg.CalculateSize()); Assert.AreEqual(goldenEmptyMessage, msg); }; Action <IMessage> assertFull = msg => Assert.AreEqual(fullSize, msg.CalculateSize()); // Test the behavior of the parsers with and without discarding, both generic and non-generic. MessageParser <TestEmptyMessage> retainingParser1 = TestEmptyMessage.Parser; MessageParser retainingParser2 = retainingParser1; MessageParser <TestEmptyMessage> discardingParser1 = retainingParser1.WithDiscardUnknownFields(true); MessageParser discardingParser2 = retainingParser2.WithDiscardUnknownFields(true); // Test parse from byte[] assertFull(retainingParser1.ParseFrom(data)); assertFull(retainingParser2.ParseFrom(data)); assertEmpty(discardingParser1.ParseFrom(data)); assertEmpty(discardingParser2.ParseFrom(data)); // Test parse from byte[] with offset assertFull(retainingParser1.ParseFrom(data, 0, data.Length)); assertFull(retainingParser2.ParseFrom(data, 0, data.Length)); assertEmpty(discardingParser1.ParseFrom(data, 0, data.Length)); assertEmpty(discardingParser2.ParseFrom(data, 0, data.Length)); // Test parse from CodedInputStream assertFull(retainingParser1.ParseFrom(new CodedInputStream(data))); assertFull(retainingParser2.ParseFrom(new CodedInputStream(data))); assertEmpty(discardingParser1.ParseFrom(new CodedInputStream(data))); assertEmpty(discardingParser2.ParseFrom(new CodedInputStream(data))); // Test parse from Stream assertFull(retainingParser1.ParseFrom(new MemoryStream(data))); assertFull(retainingParser2.ParseFrom(new MemoryStream(data))); assertEmpty(discardingParser1.ParseFrom(new MemoryStream(data))); assertEmpty(discardingParser2.ParseFrom(new MemoryStream(data))); }
public void TestDiscardUnknownFields(IMessage message) { var goldenEmptyMessage = new TestEmptyMessage(); byte[] data = message.ToByteArray(); int fullSize = message.CalculateSize(); void AssertEmpty(IMessage msg) { Assert.AreEqual(0, msg.CalculateSize()); Assert.AreEqual(goldenEmptyMessage, msg); } void AssertFull(IMessage msg) => Assert.AreEqual(fullSize, msg.CalculateSize()); // Test the behavior of the parsers with and without discarding, both generic and non-generic. MessageParser <TestEmptyMessage> retainingParser1 = TestEmptyMessage.Parser; MessageParser retainingParser2 = retainingParser1; MessageParser <TestEmptyMessage> discardingParser1 = retainingParser1.WithDiscardUnknownFields(true); MessageParser discardingParser2 = retainingParser2.WithDiscardUnknownFields(true); // Test parse from byte[] MessageParsingHelpers.AssertReadingMessage(retainingParser1, data, m => AssertFull(m)); MessageParsingHelpers.AssertReadingMessage(retainingParser2, data, m => AssertFull(m)); MessageParsingHelpers.AssertReadingMessage(discardingParser1, data, m => AssertEmpty(m)); MessageParsingHelpers.AssertReadingMessage(discardingParser2, data, m => AssertEmpty(m)); // Test parse from byte[] with offset AssertFull(retainingParser1.ParseFrom(data, 0, data.Length)); AssertFull(retainingParser2.ParseFrom(data, 0, data.Length)); AssertEmpty(discardingParser1.ParseFrom(data, 0, data.Length)); AssertEmpty(discardingParser2.ParseFrom(data, 0, data.Length)); // Test parse from CodedInputStream AssertFull(retainingParser1.ParseFrom(new CodedInputStream(data))); AssertFull(retainingParser2.ParseFrom(new CodedInputStream(data))); AssertEmpty(discardingParser1.ParseFrom(new CodedInputStream(data))); AssertEmpty(discardingParser2.ParseFrom(new CodedInputStream(data))); // Test parse from Stream AssertFull(retainingParser1.ParseFrom(new MemoryStream(data))); AssertFull(retainingParser2.ParseFrom(new MemoryStream(data))); AssertEmpty(discardingParser1.ParseFrom(new MemoryStream(data))); AssertEmpty(discardingParser2.ParseFrom(new MemoryStream(data))); }