summaryrefslogtreecommitdiffstats
path: root/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-09-20 12:09:56 -0700
committerAndrew <andrewarnott@gmail.com>2008-09-20 12:09:56 -0700
commitccd062ccfaa33aed1da1e39e62c07348392f4367 (patch)
tree870eea6e76aad96882d972f8a2cbeb0dfa380108 /src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
parent74784effd199c28cae39676082b988454a7b37fb (diff)
downloadDotNetOpenAuth-ccd062ccfaa33aed1da1e39e62c07348392f4367.zip
DotNetOpenAuth-ccd062ccfaa33aed1da1e39e62c07348392f4367.tar.gz
DotNetOpenAuth-ccd062ccfaa33aed1da1e39e62c07348392f4367.tar.bz2
Worked on test coverage.
Diffstat (limited to 'src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs')
-rw-r--r--src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs b/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
index bfc8192..5c032e6 100644
--- a/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
+++ b/src/DotNetOAuth.Test/Messaging/Reflection/MessagePartTests.cs
@@ -5,18 +5,19 @@ using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using DotNetOAuth.Messaging.Reflection;
using System.Reflection;
+using DotNetOAuth.Test.Mocks;
namespace DotNetOAuth.Test.Messaging.Reflection {
[TestClass]
- public class MessagePartTests :MessagingTestBase {
- class MessageWithNonNullableOptionalStruct {
+ public class MessagePartTests :MessagingTestBase {
+ class MessageWithNonNullableOptionalStruct : TestMessage {
/// <summary>
/// Optional structs like int must be nullable for Optional to make sense.
/// </summary>
[MessagePart(IsRequired = false)]
internal int optionalInt = 0;
}
- class MessageWithNonNullableRequiredStruct {
+ class MessageWithNonNullableRequiredStruct : TestMessage {
/// <summary>
/// This should work because a required field will always have a value so it
/// need not be nullable.
@@ -24,7 +25,7 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
[MessagePart(IsRequired = true)]
internal int optionalInt = 0;
}
- class MessageWithNullableOptionalStruct {
+ class MessageWithNullableOptionalStruct : TestMessage {
/// <summary>
/// Optional structs like int must be nullable for Optional to make sense.
/// </summary>
@@ -47,10 +48,43 @@ namespace DotNetOAuth.Test.Messaging.Reflection {
ParameterizedMessageTypeTest(typeof(MessageWithNullableOptionalStruct));
}
- private void ParameterizedMessageTypeTest(Type messageType) {
+ [TestMethod, ExpectedException(typeof(ArgumentNullException))]
+ public void CtorNullMember() {
+ new MessagePart(null, new MessagePartAttribute());
+ }
+
+ [TestMethod, ExpectedException(typeof(ArgumentNullException))]
+ public void CtorNullAttribute() {
+ FieldInfo field = typeof(MessageWithNullableOptionalStruct).GetField("optionalInt", BindingFlags.NonPublic | BindingFlags.Instance);
+ new MessagePart(field, null);
+ }
+
+ [TestMethod]
+ public void SetValue() {
+ var message = new MessageWithNonNullableRequiredStruct();
+ MessagePart part = ParameterizedMessageTypeTest(message.GetType());
+ part.SetValue(message, "5");
+ Assert.AreEqual(5, message.optionalInt);
+ }
+
+ [TestMethod]
+ public void GetValue() {
+ var message = new MessageWithNonNullableRequiredStruct();
+ message.optionalInt = 8;
+ MessagePart part = ParameterizedMessageTypeTest(message.GetType());
+ Assert.AreEqual("8", part.GetValue(message));
+ }
+
+ [TestMethod, ExpectedException(typeof(ArgumentException))]
+ public void NonFieldOrPropertyMember() {
+ MemberInfo method = typeof(MessageWithNullableOptionalStruct).GetMethod("Equals", BindingFlags.Public | BindingFlags.Instance);
+ new MessagePart(method, new MessagePartAttribute());
+ }
+
+ private MessagePart 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);
+ return new MessagePart(field, attribute);
}
}
}