using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace DotNetOAuth.Test { [TestClass()] public class MessageSerializerTest : TestBase { [TestMethod, ExpectedException(typeof(ArgumentNullException))] public void SerializeNull() { var serializer = new ProtocolMessageSerializer(); serializer.Serialize(null); } [TestMethod, ExpectedException(typeof(ArgumentNullException))] public void DeserializeNull() { var serializer = new ProtocolMessageSerializer(); serializer.Deserialize(null); } /// /// A test for Deserialize /// [TestMethod()] public void DeserializeSimple() { var serializer = new ProtocolMessageSerializer(); Dictionary fields = new Dictionary(StringComparer.Ordinal); // We deliberately do this OUT of alphabetical order (caps would go first), // since DataContractSerializer demands things to be IN alphabetical order. fields["age"] = "15"; fields["Name"] = "Andrew"; var actual = serializer.Deserialize(fields); Assert.AreEqual(15, actual.Age); Assert.AreEqual("Andrew", actual.Name); Assert.AreEqual(null, actual.EmptyMember); } /// /// A test for Deserialize /// [TestMethod()] public void DeserializeEmpty() { var serializer = new ProtocolMessageSerializer(); Dictionary fields = new Dictionary(StringComparer.Ordinal); var actual = serializer.Deserialize(fields); Assert.AreEqual(0, actual.Age); } /// /// A test for Serialize /// [TestMethod()] public void SerializeTest() { var serializer = new ProtocolMessageSerializer(); var message = new Mocks.TestMessage { Age = 15, Name = "Andrew" }; IDictionary actual = serializer.Serialize(message); Assert.AreEqual(2, actual.Count); // Test case sensitivity of generated dictionary Assert.IsFalse(actual.ContainsKey("Age")); Assert.IsTrue(actual.ContainsKey("age")); // Test contents of dictionary Assert.AreEqual("15", actual["age"]); Assert.AreEqual("Andrew", actual["Name"]); Assert.IsFalse(actual.ContainsKey("EmptyMember")); } } }