From 4d125fca5510c290b4471f1bc4db5d08a21bec47 Mon Sep 17 00:00:00 2001 From: Steve Wagner Date: Sat, 22 May 2010 11:53:48 +0200 Subject: [PATCH] Add failing serialization tests to Binary, DBRef, Document, MongoRegex and MongoSymbol. --- source/MongoDB.Tests/UnitTests/TestBinary.cs | 31 +++ source/MongoDB.Tests/UnitTests/TestDBRef.cs | 177 ++++++++++-------- .../MongoDB.Tests/UnitTests/TestDocument.cs | 28 +-- .../MongoDB.Tests/UnitTests/TestMongoRegex.cs | 30 +++ .../UnitTests/TestMongoSymbol.cs | 31 +++ source/MongoDB.Tests/UnitTests/TestOid.cs | 16 +- 6 files changed, 218 insertions(+), 95 deletions(-) diff --git a/source/MongoDB.Tests/UnitTests/TestBinary.cs b/source/MongoDB.Tests/UnitTests/TestBinary.cs index e09a0d2d..7328a283 100644 --- a/source/MongoDB.Tests/UnitTests/TestBinary.cs +++ b/source/MongoDB.Tests/UnitTests/TestBinary.cs @@ -1,3 +1,6 @@ +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using System.Xml.Serialization; using NUnit.Framework; using System.Linq; @@ -71,6 +74,34 @@ public void CanBeEnumerated() Assert.AreEqual(2,array.Length); Assert.AreEqual(10, array[0]); Assert.AreEqual(20, array[1]); + } + + [Test] + public void CanBeBinarySerialized() + { + var source = new Binary(new byte[] {10, 20}, BinarySubtype.Md5); + var formatter = new BinaryFormatter(); + + var mem = new MemoryStream(); + formatter.Serialize(mem, source); + mem.Position = 0; + + var dest = (Binary)formatter.Deserialize(mem); + + Assert.AreEqual(source, dest); + } + + [Test] + public void CanBeXmlSerialized() + { + var source = new Binary(new byte[] { 10, 20 }, BinarySubtype.Md5); + var serializer = new XmlSerializer(typeof(Oid)); + + var writer = new StringWriter(); + serializer.Serialize(writer, source); + var dest = (Binary)serializer.Deserialize(new StringReader(writer.ToString())); + + Assert.AreEqual(source, dest); } } } diff --git a/source/MongoDB.Tests/UnitTests/TestDBRef.cs b/source/MongoDB.Tests/UnitTests/TestDBRef.cs index af791793..b99043d3 100644 --- a/source/MongoDB.Tests/UnitTests/TestDBRef.cs +++ b/source/MongoDB.Tests/UnitTests/TestDBRef.cs @@ -1,76 +1,107 @@ using System; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using System.Xml.Serialization; using NUnit.Framework; -namespace MongoDB.UnitTests -{ - [TestFixture] - public class TestDBRef - { - [Test] - public void TestEqualsAreSameObject (){ - DBRef r = new DBRef ("tests", "2312314"); - Assert.AreEqual (r, r); - } - - [Test] - public void TestEqualsUsingSameValues (){ - String colname = "tests"; - String id = "32312312"; - DBRef r = new DBRef (colname, id); - DBRef r2 = new DBRef (colname, id); - - Assert.AreEqual (r, r2); - } - - [Test] - public void TestFromDocument (){ - String colname = "tests"; - String id = "32312312"; - Document doc = new Document ().Add(DBRef.RefName, colname).Add(DBRef.IdName, id); - - DBRef expected = new DBRef (colname, id); - Assert.AreEqual (expected, DBRef.FromDocument (doc)); - } - - [Test] - public void TestFromIncompleteDocumentThrowsArguementException (){ - bool thrown = false; - try { - DBRef.FromDocument (new Document ().Add(DBRef.RefName, "tests")); - } catch (ArgumentException) { - thrown = true; - } - Assert.IsTrue (thrown, "ArgumentException should have been thrown when trying to create convert from incomplete document"); - - } - - [Test] - public void TestIsDocumentDBRef (){ - Document doc = new Document (); - - Assert.IsFalse (DBRef.IsDocumentDBRef (null)); - Assert.IsFalse (DBRef.IsDocumentDBRef (doc)); - - doc[DBRef.RefName] = "tests"; - Assert.IsFalse (DBRef.IsDocumentDBRef (doc)); - - doc.Remove (DBRef.RefName); - doc[DBRef.IdName] = "12312131"; - Assert.IsFalse (DBRef.IsDocumentDBRef (doc)); - - doc[DBRef.RefName] = "tests"; - Assert.IsTrue (DBRef.IsDocumentDBRef (doc)); - - doc[DBRef.MetaName] = new Document(); - Assert.IsTrue (DBRef.IsDocumentDBRef (doc)); - } - - [Test] - public void TestCastsToDocument (){ - OidGenerator ogen = new OidGenerator (); - DBRef dref = new DBRef ("tests.dbrefs", ogen.Generate ()); - Document doc = (Document)dref; - Assert.AreEqual (dref.CollectionName, doc[DBRef.RefName]); - } - } -} +namespace MongoDB.UnitTests +{ + [TestFixture] + public class TestDBRef + { + [Test] + public void CanBeBinarySerialized() + { + var source = new DBRef("collection", "id"); + var formatter = new BinaryFormatter(); + + var mem = new MemoryStream(); + formatter.Serialize(mem, source); + mem.Position = 0; + + var dest = (DBRef)formatter.Deserialize(mem); + + Assert.AreEqual(source, dest); + } + + [Test] + public void CanBeXmlSerialized() + { + var source = new DBRef("collection", "id"); + var serializer = new XmlSerializer(typeof(Oid)); + + var writer = new StringWriter(); + serializer.Serialize(writer, source); + var dest = (DBRef)serializer.Deserialize(new StringReader(writer.ToString())); + + Assert.AreEqual(source, dest); + } + + [Test] + public void TestCastsToDocument() + { + var ogen = new OidGenerator(); + var dref = new DBRef("tests.dbrefs", ogen.Generate()); + var doc = (Document)dref; + Assert.AreEqual(dref.CollectionName, doc[DBRef.RefName]); + } + + [Test] + public void TestEqualsAreSameObject() + { + var r = new DBRef("tests", "2312314"); + Assert.AreEqual(r, r); + } + + [Test] + public void TestEqualsUsingSameValues() + { + const string colname = "tests"; + var id = "32312312"; + var r = new DBRef(colname, id); + var r2 = new DBRef(colname, id); + + Assert.AreEqual(r, r2); + } + + [Test] + public void TestFromDocument() + { + const string colname = "tests"; + const string id = "32312312"; + var doc = new Document().Add(DBRef.RefName, colname).Add(DBRef.IdName, id); + + var expected = new DBRef(colname, id); + Assert.AreEqual(expected, DBRef.FromDocument(doc)); + } + + [Test] + [ExpectedException(typeof(ArgumentException))] + public void TestFromIncompleteDocumentThrowsArguementException() + { + DBRef.FromDocument(new Document(DBRef.RefName, "tests")); + } + + [Test] + public void TestIsDocumentDBRef() + { + var doc = new Document(); + + Assert.IsFalse(DBRef.IsDocumentDBRef(null)); + Assert.IsFalse(DBRef.IsDocumentDBRef(doc)); + + doc[DBRef.RefName] = "tests"; + Assert.IsFalse(DBRef.IsDocumentDBRef(doc)); + + doc.Remove(DBRef.RefName); + doc[DBRef.IdName] = "12312131"; + Assert.IsFalse(DBRef.IsDocumentDBRef(doc)); + + doc[DBRef.RefName] = "tests"; + Assert.IsTrue(DBRef.IsDocumentDBRef(doc)); + + doc[DBRef.MetaName] = new Document(); + Assert.IsTrue(DBRef.IsDocumentDBRef(doc)); + } + } +} \ No newline at end of file diff --git a/source/MongoDB.Tests/UnitTests/TestDocument.cs b/source/MongoDB.Tests/UnitTests/TestDocument.cs index ffdb005c..829e86c2 100644 --- a/source/MongoDB.Tests/UnitTests/TestDocument.cs +++ b/source/MongoDB.Tests/UnitTests/TestDocument.cs @@ -11,13 +11,13 @@ namespace MongoDB.UnitTests [TestFixture] public class TestDocument { - private void AreEqual(Document d1, Document d2) + private static void AreEqual(Document d1, Document d2) { if(!d1.Equals(d2)) Assert.Fail(string.Format("Documents don't match\r\nExpected: {0}\r\nActual: {1}", d1, d2)); } - private void AreNotEqual(Document d1, Document d2) + private static void AreNotEqual(Document d1, Document d2) { if(d1.Equals(d2)) Assert.Fail(string.Format("Documents match\r\nExpected: not {0}\r\nActual: {1}", d1, d2)); @@ -284,33 +284,33 @@ public void TestValuesAdded() [Test] public void CanBeBinarySerialized() { - var docSource = new Document("key1", "value1").Add("key2", 10); + var source = new Document("key1", "value1").Add("key2", 10); var formatter = new BinaryFormatter(); var mem = new MemoryStream(); - formatter.Serialize(mem, docSource); + formatter.Serialize(mem, source); mem.Position = 0; - var docDest = (Document)formatter.Deserialize(mem); + var dest = (Document)formatter.Deserialize(mem); - Assert.AreEqual(2,docDest.Count); - Assert.AreEqual(docSource["key1"], docDest["key1"]); - Assert.AreEqual(docSource["key2"], docDest["key2"]); + Assert.AreEqual(2,dest.Count); + Assert.AreEqual(source["key1"], dest["key1"]); + Assert.AreEqual(source["key2"], dest["key2"]); } [Test] public void CanBeXmlSerialized() { - var docSource = new Document("key1", "value1").Add("key2", 10); + var source = new Document("key1", "value1").Add("key2", 10); var serializer = new XmlSerializer(typeof(Document)); var writer = new StringWriter(); - serializer.Serialize(writer, docSource); - var docDest = (Document)serializer.Deserialize(new StringReader(writer.ToString())); + serializer.Serialize(writer, source); + var dest = (Document)serializer.Deserialize(new StringReader(writer.ToString())); - Assert.AreEqual(2, docDest.Count); - Assert.AreEqual(docSource["key1"], docDest["key1"]); - Assert.AreEqual(docSource["key2"], docDest["key2"]); + Assert.AreEqual(2, dest.Count); + Assert.AreEqual(source["key1"], dest["key1"]); + Assert.AreEqual(source["key2"], dest["key2"]); } } } \ No newline at end of file diff --git a/source/MongoDB.Tests/UnitTests/TestMongoRegex.cs b/source/MongoDB.Tests/UnitTests/TestMongoRegex.cs index a49cd6df..c4f9fded 100644 --- a/source/MongoDB.Tests/UnitTests/TestMongoRegex.cs +++ b/source/MongoDB.Tests/UnitTests/TestMongoRegex.cs @@ -1,3 +1,6 @@ +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using System.Xml.Serialization; using NUnit.Framework; namespace MongoDB.UnitTests @@ -5,5 +8,32 @@ namespace MongoDB.UnitTests [TestFixture] public class TestMongoRegex { + [Test] + public void CanBeBinarySerialized() + { + var source = new MongoRegex("exp", "opt"); + var formatter = new BinaryFormatter(); + + var mem = new MemoryStream(); + formatter.Serialize(mem, source); + mem.Position = 0; + + var dest = (MongoRegex)formatter.Deserialize(mem); + + Assert.AreEqual(source, dest); + } + + [Test] + public void CanBeXmlSerialized() + { + var source = new MongoRegex("exp", "opt"); + var serializer = new XmlSerializer(typeof(Oid)); + + var writer = new StringWriter(); + serializer.Serialize(writer, source); + var dest = (MongoRegex)serializer.Deserialize(new StringReader(writer.ToString())); + + Assert.AreEqual(source, dest); + } } } \ No newline at end of file diff --git a/source/MongoDB.Tests/UnitTests/TestMongoSymbol.cs b/source/MongoDB.Tests/UnitTests/TestMongoSymbol.cs index 90227f35..fd8592c7 100644 --- a/source/MongoDB.Tests/UnitTests/TestMongoSymbol.cs +++ b/source/MongoDB.Tests/UnitTests/TestMongoSymbol.cs @@ -1,4 +1,7 @@ +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; using System.Text; +using System.Xml.Serialization; using NUnit.Framework; namespace MongoDB.UnitTests @@ -116,5 +119,33 @@ public class TestMongoSymbol Assert.IsTrue(ReferenceEquals(s.Value, s2.Value)); } + + [Test] + public void CanBeBinarySerialized() + { + var source = new MongoSymbol("value"); + var formatter = new BinaryFormatter(); + + var mem = new MemoryStream(); + formatter.Serialize(mem, source); + mem.Position = 0; + + var dest = (MongoSymbol)formatter.Deserialize(mem); + + Assert.AreEqual(source, dest); + } + + [Test] + public void CanBeXmlSerialized() + { + var source = new MongoSymbol("value"); + var serializer = new XmlSerializer(typeof(MongoSymbol)); + + var writer = new StringWriter(); + serializer.Serialize(writer, source); + var dest = (MongoSymbol)serializer.Deserialize(new StringReader(writer.ToString())); + + Assert.AreEqual(source, dest); + } } } \ No newline at end of file diff --git a/source/MongoDB.Tests/UnitTests/TestOid.cs b/source/MongoDB.Tests/UnitTests/TestOid.cs index 9f1377ab..c3a1577c 100644 --- a/source/MongoDB.Tests/UnitTests/TestOid.cs +++ b/source/MongoDB.Tests/UnitTests/TestOid.cs @@ -12,29 +12,29 @@ public class TestOid [Test] public void CanBeBinarySerialized() { - var oidSource = Oid.NewOid(); + var source = Oid.NewOid(); var formatter = new BinaryFormatter(); var mem = new MemoryStream(); - formatter.Serialize(mem, oidSource); + formatter.Serialize(mem, source); mem.Position = 0; - var oidDest = (Oid)formatter.Deserialize(mem); + var dest = (Oid)formatter.Deserialize(mem); - Assert.AreEqual(oidSource, oidDest); + Assert.AreEqual(source, dest); } [Test] public void CanBeXmlSerialized() { - var oidSource = Oid.NewOid(); + var source = Oid.NewOid(); var serializer = new XmlSerializer(typeof(Oid)); var writer = new StringWriter(); - serializer.Serialize(writer, oidSource); - var oidDest = (Oid)serializer.Deserialize(new StringReader(writer.ToString())); + serializer.Serialize(writer, source); + var dest = (Oid)serializer.Deserialize(new StringReader(writer.ToString())); - Assert.AreEqual(oidSource, oidDest); + Assert.AreEqual(source, dest); } [Test]