|  | @@ -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());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |