blob: 49c562907c249012372347975e83582e99b68343 [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 {
csharptest27bfcc52011-06-02 12:04:06 -05009 protected abstract object SerializeMessage<TMessage, TBuilder>(TMessage message)
10 where TMessage : IMessageLite<TMessage, TBuilder>
11 where TBuilder : IBuilderLite<TMessage, TBuilder>;
12
13 protected abstract TBuilder DeerializeMessage<TMessage, TBuilder>(object message, TBuilder builder, ExtensionRegistry registry)
14 where TMessage : IMessageLite<TMessage, TBuilder>
15 where TBuilder : IBuilderLite<TMessage, TBuilder>;
16
csharptest27bfcc52011-06-02 12:04:06 -050017 [Test]
18 public virtual void RoundTripMessage1OptimizeSize()
19 {
20 SizeMessage1 msg = SizeMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build();
21 object content = SerializeMessage<SizeMessage1, SizeMessage1.Builder>(msg);
22
23 SizeMessage1 copy = DeerializeMessage<SizeMessage1, SizeMessage1.Builder>(content, SizeMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build();
24
25 Assert.AreEqual(msg, copy);
26 Assert.AreEqual(content, SerializeMessage<SizeMessage1,SizeMessage1.Builder>(copy));
27 Assert.AreEqual(TestResources.google_message1, copy.ToByteArray());
28 }
29
30 [Test]
31 public virtual void RoundTripMessage2OptimizeSize()
32 {
33 SizeMessage2 msg = SizeMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build();
34 object content = SerializeMessage<SizeMessage2, SizeMessage2.Builder>(msg);
35
36 SizeMessage2 copy = DeerializeMessage<SizeMessage2, SizeMessage2.Builder>(content, SizeMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build();
37
38 Assert.AreEqual(msg, copy);
39 Assert.AreEqual(content, SerializeMessage<SizeMessage2, SizeMessage2.Builder>(copy));
40 Assert.AreEqual(TestResources.google_message2, copy.ToByteArray());
41 }
42
43 [Test]
44 public virtual void RoundTripMessage1OptimizeSpeed()
45 {
46 SpeedMessage1 msg = SpeedMessage1.CreateBuilder().MergeFrom(TestResources.google_message1).Build();
47 object content = SerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(msg);
48
49 SpeedMessage1 copy = DeerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(content, SpeedMessage1.CreateBuilder(), ExtensionRegistry.Empty).Build();
50
51 Assert.AreEqual(msg, copy);
52 Assert.AreEqual(content, SerializeMessage<SpeedMessage1, SpeedMessage1.Builder>(copy));
53 Assert.AreEqual(TestResources.google_message1, copy.ToByteArray());
54 }
55
56 [Test]
57 public virtual void RoundTripMessage2OptimizeSpeed()
58 {
59 SpeedMessage2 msg = SpeedMessage2.CreateBuilder().MergeFrom(TestResources.google_message2).Build();
60 object content = SerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(msg);
61
62 SpeedMessage2 copy = DeerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(content, SpeedMessage2.CreateBuilder(), ExtensionRegistry.Empty).Build();
63
64 Assert.AreEqual(msg, copy);
65 Assert.AreEqual(content, SerializeMessage<SpeedMessage2, SpeedMessage2.Builder>(copy));
66 Assert.AreEqual(TestResources.google_message2, copy.ToByteArray());
67 }
68
69 }
70}