summaryrefslogtreecommitdiffstats
path: root/src/DotNetOAuth.Test/Messaging/Reflection
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOAuth.Test/Messaging/Reflection')
-rw-r--r--src/DotNetOAuth.Test/Messaging/Reflection/MessageDictionaryTest.cs9
-rw-r--r--src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs21
2 files changed, 24 insertions, 6 deletions
diff --git a/src/DotNetOAuth.Test/Messaging/Reflection/MessageDictionaryTest.cs b/src/DotNetOAuth.Test/Messaging/Reflection/MessageDictionaryTest.cs
index f798bde..f6b1f38 100644
--- a/src/DotNetOAuth.Test/Messaging/Reflection/MessageDictionaryTest.cs
+++ b/src/DotNetOAuth.Test/Messaging/Reflection/MessageDictionaryTest.cs
@@ -12,6 +12,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
using DotNetOAuth.Messaging;
using DotNetOAuth.Messaging.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
+ using System.Xml;
[TestClass]
public class MessageDictionaryTest : MessagingTestBase {
@@ -37,7 +38,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
IDictionary<string, string> target = new MessageDictionary(this.message);
Collection<string> expected = new Collection<string> {
this.message.Age.ToString(),
- this.message.Timestamp.ToString(),
+ XmlConvert.ToString(DateTime.SpecifyKind(this.message.Timestamp, DateTimeKind.Utc), XmlDateTimeSerializationMode.Utc),
};
CollectionAssert<string>.AreEquivalent(expected, target.Values);
@@ -49,7 +50,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
this.message.Age.ToString(),
this.message.Location.AbsoluteUri,
this.message.Name,
- this.message.Timestamp.ToString(),
+ XmlConvert.ToString(DateTime.SpecifyKind(this.message.Timestamp, DateTimeKind.Utc), XmlDateTimeSerializationMode.Utc),
"a",
};
CollectionAssert<string>.AreEquivalent(expected, target.Values);
@@ -80,7 +81,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
[TestMethod]
public void ItemTest() {
IDictionary<string, string> target = new MessageDictionary(this.message);
-
+
// Test setting of declared message properties.
this.message.Age = 15;
Assert.AreEqual("15", target["age"]);
@@ -194,7 +195,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
Assert.IsTrue(target.Remove("Name"));
Assert.IsNull(this.message.Name);
Assert.IsFalse(target.Remove("Name"));
-
+
Assert.IsFalse(target.Remove("extra"));
target["extra"] = "value";
Assert.IsTrue(target.Remove("extra"));
diff --git a/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs b/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
index 646599c..1d7e1b8 100644
--- a/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
+++ b/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
@@ -16,12 +16,29 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
[MessagePart(IsRequired = false)]
internal int optionalInt;
}
+ class MessageWithNullableOptionalStruct {
+ /// <summary>
+ /// Optional structs like int must be nullable for Optional to make sense.
+ /// </summary>
+ [MessagePart(IsRequired = false)]
+ internal int? optionalInt;
+ }
+
[TestMethod, ExpectedException(typeof(ArgumentException))]
public void OptionalNonNullableStruct() {
- FieldInfo field = typeof(MessageWithNonNullableOptionalStruct).GetField("optionalInt", BindingFlags.NonPublic | BindingFlags.Instance);
+ ParameterizedMessageTypeTest(typeof(MessageWithNonNullableOptionalStruct));
+ }
+
+ [TestMethod]
+ public void OptionalNullableStruct() {
+ ParameterizedMessageTypeTest(typeof(MessageWithNullableOptionalStruct));
+ }
+
+ private void ParameterizedMessageTypeTest(Type messageType) {
+ FieldInfo field = messageType.GetField("optionalInt", BindingFlags.NonPublic | BindingFlags.Instance);
MessagePartAttribute attribute = field.GetCustomAttributes(typeof(MessagePartAttribute), true).OfType<MessagePartAttribute>().Single();
- new MessagePart(field, attribute); // should recognize invalid optional non-nullable struct
+ new MessagePart(field, attribute);
}
}
}