blob: 5ce069bee341fd6da574f32017a08b090675cd2a [file] [log] [blame]
csharptest27bfcc52011-06-02 12:04:06 -05001using System;
2using Google.ProtocolBuffers.TestProtos;
3using NUnit.Framework;
4
5namespace Google.ProtocolBuffers.CompatTests
6{
7 public abstract class CompatibilityTests
8 {
9 protected abstract string TestName { get; }
10 protected abstract object SerializeMessage<TMessage, TBuilder>(TMessage message)
11 where TMessage : IMessageLite<TMessage, TBuilder>
12 where TBuilder : IBuilderLite<TMessage, TBuilder>;
13
14 protected abstract TBuilder DeerializeMessage<TMessage, TBuilder>(object message, TBuilder builder, ExtensionRegistry registry)
15 where TMessage : IMessageLite<TMessage, TBuilder>
16 where TBuilder : IBuilderLite<TMessage, TBuilder>;
17
csharptest27bfcc52011-06-02 12:04:06 -050018 [Test]
19 public virtual void RoundTripMessage1OptimizeSize()
20 {
21 SizeMessage1 msg = SizeMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build();
22 object content = SerializeMessage<SizeMessage1, SizeMessage1.Builder>(msg);
23
24 SizeMessage1 copy = DeerializeMessage<SizeMessage1, SizeMessage1.Builder>(content, SizeMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build();
25
26 Assert.AreEqual(msg, copy);
27 Assert.AreEqual(content, SerializeMessage<SizeMessage1,SizeMessage1.Builder>(copy));
28 Assert.AreEqual(TestResources.google_message1, copy.ToByteArray());
29 }
30
31 [Test]
32 public virtual void RoundTripMessage2OptimizeSize()
33 {
34 SizeMessage2 msg = SizeMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build();
35 object content = SerializeMessage<SizeMessage2, SizeMessage2.Builder>(msg);
36
37 SizeMessage2 copy = DeerializeMessage<SizeMessage2, SizeMessage2.Builder>(content, SizeMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build();
38
39 Assert.AreEqual(msg, copy);
40 Assert.AreEqual(content, SerializeMessage<SizeMessage2, SizeMessage2.Builder>(copy));
41 Assert.AreEqual(TestResources.google_message2, copy.ToByteArray());
42 }
43
44 [Test]
45 public virtual void RoundTripMessage1OptimizeSpeed()
46 {
47 SpeedMessage1 msg = SpeedMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build();
48 object content = SerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(msg);
49
50 SpeedMessage1 copy = DeerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(content, SpeedMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build();
51
52 Assert.AreEqual(msg, copy);
53 Assert.AreEqual(content, SerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(copy));
54 Assert.AreEqual(TestResources.google_message1, copy.ToByteArray());
55 }
56
57 [Test]
58 public virtual void RoundTripMessage2OptimizeSpeed()
59 {
60 SpeedMessage2 msg = SpeedMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build();
61 object content = SerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(msg);
62
63 SpeedMessage2 copy = DeerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(content, SpeedMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build();
64
65 Assert.AreEqual(msg, copy);
66 Assert.AreEqual(content, SerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(copy));
67 Assert.AreEqual(TestResources.google_message2, copy.ToByteArray());
68 }
69
70 }
71}