summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-12-08 08:25:19 -0800
committerAndrew <andrewarnott@gmail.com>2008-12-08 08:25:19 -0800
commit05c075cd5400b8a4ad5f16f1f13979e25b89bb6f (patch)
treec76a0407a98ea97d4d85b082e2f0383093844d77 /src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs
parent01a75417c3ad7ed181d0a5e1ca2e8af0872af241 (diff)
downloadDotNetOpenAuth-05c075cd5400b8a4ad5f16f1f13979e25b89bb6f.zip
DotNetOpenAuth-05c075cd5400b8a4ad5f16f1f13979e25b89bb6f.tar.gz
DotNetOpenAuth-05c075cd5400b8a4ad5f16f1f13979e25b89bb6f.tar.bz2
Added a couple of tests to test MinVersion/MaxVersion MessagePart behavior.
Diffstat (limited to 'src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs')
-rw-r--r--src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs b/src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs
index 47e86f7..7a1165b 100644
--- a/src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs
+++ b/src/DotNetOpenAuth.Test/Messaging/Reflection/MessageDescriptionTests.cs
@@ -6,6 +6,7 @@
namespace DotNetOpenAuth.Test.Messaging.Reflection {
using System;
+ using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.Messaging.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -25,5 +26,72 @@ namespace DotNetOpenAuth.Test.Messaging.Reflection {
public void GetNonMessageType() {
MessageDescription.Get(typeof(string), new Version(1, 0));
}
+
+ [TestMethod]
+ public void MultiVersionedMessageTest() {
+ var v10 = MessageDescription.Get(typeof(MultiVersionMessage), new Version(1, 0));
+ var v20 = MessageDescription.Get(typeof(MultiVersionMessage), new Version(2, 0));
+ var v25 = MessageDescription.Get(typeof(MultiVersionMessage), new Version(2, 5));
+ var v30 = MessageDescription.Get(typeof(MultiVersionMessage), new Version(3, 0));
+
+ // Verify that the AllVersion member appears in every version.
+ Assert.IsTrue(v10.Mapping.ContainsKey("AllVersion"));
+ Assert.IsTrue(v20.Mapping.ContainsKey("AllVersion"));
+ Assert.IsTrue(v25.Mapping.ContainsKey("AllVersion"));
+ Assert.IsTrue(v30.Mapping.ContainsKey("AllVersion"));
+
+ // Verify that UpThru25 disappears in 3.0.
+ Assert.IsTrue(v10.Mapping.ContainsKey("UpThru25"));
+ Assert.IsTrue(v20.Mapping.ContainsKey("UpThru25"));
+ Assert.IsTrue(v25.Mapping.ContainsKey("UpThru25"));
+ Assert.IsFalse(v30.Mapping.ContainsKey("UpThru25"));
+
+ // Verify that NewIn20 doesn't appear before that version.
+ Assert.IsFalse(v10.Mapping.ContainsKey("NewIn20"));
+ Assert.IsTrue(v20.Mapping.ContainsKey("NewIn20"));
+ Assert.IsTrue(v25.Mapping.ContainsKey("NewIn20"));
+ Assert.IsTrue(v30.Mapping.ContainsKey("NewIn20"));
+
+ // Verify that an optional field in 1.0 becomes required in 2.0
+ Assert.IsTrue(v10.Mapping.ContainsKey("RequiredIn20"));
+ Assert.IsFalse(v10.Mapping["RequiredIn20"].IsRequired);
+ Assert.IsTrue(v20.Mapping.ContainsKey("RequiredIn20"));
+ Assert.IsTrue(v20.Mapping["RequiredIn20"].IsRequired);
+ Assert.IsTrue(v25.Mapping.ContainsKey("RequiredIn20"));
+ Assert.IsTrue(v25.Mapping["RequiredIn20"].IsRequired);
+ Assert.IsTrue(v30.Mapping.ContainsKey("RequiredIn20"));
+ Assert.IsTrue(v30.Mapping["RequiredIn20"].IsRequired);
+
+ // Verify that one (odd) field appeared in 1.0 as optional,
+ // disappeared in 2.0, and then reappeared in 2.5 and later as required.
+ Assert.IsTrue(v10.Mapping.ContainsKey("OptionalIn10RequiredIn25AndLater"));
+ Assert.IsFalse(v10.Mapping["OptionalIn10RequiredIn25AndLater"].IsRequired);
+ Assert.IsFalse(v20.Mapping.ContainsKey("OptionalIn10RequiredIn25AndLater"));
+ Assert.IsTrue(v25.Mapping.ContainsKey("OptionalIn10RequiredIn25AndLater"));
+ Assert.IsTrue(v25.Mapping["OptionalIn10RequiredIn25AndLater"].IsRequired);
+ Assert.IsTrue(v30.Mapping.ContainsKey("OptionalIn10RequiredIn25AndLater"));
+ Assert.IsTrue(v30.Mapping["OptionalIn10RequiredIn25AndLater"].IsRequired);
+ }
+
+ private class MultiVersionMessage : Mocks.TestBaseMessage {
+#pragma warning disable 0649 // these fields are never written to, but part of the test
+ [MessagePart]
+ public string AllVersion;
+
+ [MessagePart(MaxVersion = "2.5")]
+ public string UpThru25;
+
+ [MessagePart(MinVersion = "2.0")]
+ public string NewIn20;
+
+ [MessagePart(IsRequired = false)]
+ [MessagePart(IsRequired = true, MinVersion = "2.0")]
+ public string RequiredIn20;
+
+ [MessagePart(MinVersion = "1.0", MaxVersion = "1.0", IsRequired = false)]
+ [MessagePart(MinVersion = "2.5", IsRequired = true)]
+ public string OptionalIn10RequiredIn25AndLater;
+#pragma warning restore 0649
+ }
}
}