using System; using Google.ProtocolBuffers.TestProtos; using NUnit.Framework; namespace Google.ProtocolBuffers.CompatTests { public abstract class CompatibilityTests { protected abstract string TestName { get; } protected abstract object SerializeMessage(TMessage message) where TMessage : IMessageLite where TBuilder : IBuilderLite; protected abstract TBuilder DeerializeMessage(object message, TBuilder builder, ExtensionRegistry registry) where TMessage : IMessageLite where TBuilder : IBuilderLite; [Test] public virtual void RoundTripMessage1OptimizeSize() { SizeMessage1 msg = SizeMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build(); object content = SerializeMessage(msg); SizeMessage1 copy = DeerializeMessage(content, SizeMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build(); Assert.AreEqual(msg, copy); Assert.AreEqual(content, SerializeMessage(copy)); Assert.AreEqual(TestResources.google_message1, copy.ToByteArray()); } [Test] public virtual void RoundTripMessage2OptimizeSize() { SizeMessage2 msg = SizeMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build(); object content = SerializeMessage(msg); SizeMessage2 copy = DeerializeMessage(content, SizeMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build(); Assert.AreEqual(msg, copy); Assert.AreEqual(content, SerializeMessage(copy)); Assert.AreEqual(TestResources.google_message2, copy.ToByteArray()); } [Test] public virtual void RoundTripMessage1OptimizeSpeed() { SpeedMessage1 msg = SpeedMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build(); object content = SerializeMessage(msg); SpeedMessage1 copy = DeerializeMessage(content, SpeedMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build(); Assert.AreEqual(msg, copy); Assert.AreEqual(content, SerializeMessage(copy)); Assert.AreEqual(TestResources.google_message1, copy.ToByteArray()); } [Test] public virtual void RoundTripMessage2OptimizeSpeed() { SpeedMessage2 msg = SpeedMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build(); object content = SerializeMessage(msg); SpeedMessage2 copy = DeerializeMessage(content, SpeedMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build(); Assert.AreEqual(msg, copy); Assert.AreEqual(content, SerializeMessage(copy)); Assert.AreEqual(TestResources.google_message2, copy.ToByteArray()); } } }