|
|
|
@ -0,0 +1,102 @@ |
|
|
|
|
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()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |