| using Google.Protobuf.TestProtos.Proto2; |
| using NUnit.Framework;
|
|
|
| using static Google.Protobuf.TestProtos.Proto2.UnittestExtensions;
|
|
|
| namespace Google.Protobuf
|
| {
|
| public class ExtensionSetTest
|
| {
|
| [Test]
|
| public void EmptyExtensionSet()
|
| {
|
| ExtensionSet<TestAllExtensions> extensions = new ExtensionSet<TestAllExtensions>();
|
| Assert.AreEqual(0, extensions.CalculateSize());
|
| }
|
|
|
| [Test]
|
| public void MergeExtensionSet()
|
| {
|
| ExtensionSet<TestAllExtensions> extensions = null;
|
| ExtensionSet.Set(ref extensions, OptionalBoolExtension, true);
|
|
|
| ExtensionSet<TestAllExtensions> other = null;
|
|
|
| Assert.IsFalse(ExtensionSet.Has(ref other, OptionalBoolExtension));
|
| ExtensionSet.MergeFrom(ref other, extensions);
|
| Assert.IsTrue(ExtensionSet.Has(ref other, OptionalBoolExtension));
|
| }
|
|
|
| [Test]
|
| public void TestMergeCodedInput()
|
| {
|
| var message = new TestAllExtensions();
|
| message.SetExtension(OptionalBoolExtension, true);
|
| var serialized = message.ToByteArray();
|
|
|
| var other = TestAllExtensions.Parser
|
| .WithExtensionRegistry(new ExtensionRegistry() { OptionalBoolExtension })
|
| .ParseFrom(serialized);
|
|
|
| Assert.AreEqual(message, other);
|
| Assert.AreEqual(message.CalculateSize(), other.CalculateSize());
|
| }
|
|
|
| [Test]
|
| public void TestMergeMessage()
|
| {
|
| var message = new TestAllExtensions();
|
| message.SetExtension(OptionalBoolExtension, true);
|
|
|
| var other = new TestAllExtensions();
|
|
|
| Assert.AreNotEqual(message, other);
|
| Assert.AreNotEqual(message.CalculateSize(), other.CalculateSize());
|
|
|
| other.MergeFrom(message);
|
|
|
| Assert.AreEqual(message, other);
|
| Assert.AreEqual(message.CalculateSize(), other.CalculateSize());
|
| }
|
|
|
| [Test]
|
| public void TestEquals()
|
| {
|
| var message = new TestAllExtensions();
|
| message.SetExtension(OptionalBoolExtension, true);
|
|
|
| var other = new TestAllExtensions();
|
|
|
| Assert.AreNotEqual(message, other);
|
| Assert.AreNotEqual(message.CalculateSize(), other.CalculateSize());
|
|
|
| other.SetExtension(OptionalBoolExtension, true);
|
|
|
| Assert.AreEqual(message, other);
|
| Assert.AreEqual(message.CalculateSize(), other.CalculateSize());
|
| }
|
|
|
| [Test]
|
| public void TestHashCode()
|
| {
|
| var message = new TestAllExtensions();
|
| var hashCode = message.GetHashCode();
|
|
|
| message.SetExtension(OptionalBoolExtension, true);
|
|
|
| Assert.AreNotEqual(hashCode, message.GetHashCode());
|
| }
|
|
|
| [Test]
|
| public void TestClone()
|
| {
|
| var message = new TestAllExtensions();
|
| message.SetExtension(OptionalBoolExtension, true);
|
|
|
| var other = message.Clone();
|
|
|
| Assert.AreEqual(message, other);
|
| Assert.AreEqual(message.CalculateSize(), message.CalculateSize());
|
| }
|
| }
|
| }
|