Skip to content

Commit

Permalink
Add failing serialization tests to Binary, DBRef, Document, MongoRege…
Browse files Browse the repository at this point in the history
…x and MongoSymbol.
  • Loading branch information
lanwin committed May 22, 2010
1 parent 03663ba commit 4d125fc
Show file tree
Hide file tree
Showing 6 changed files with 218 additions and 95 deletions.
31 changes: 31 additions & 0 deletions 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;

Expand Down Expand Up @@ -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);
}
}
}
177 changes: 104 additions & 73 deletions 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));
}
}
}
28 changes: 14 additions & 14 deletions source/MongoDB.Tests/UnitTests/TestDocument.cs
Expand Up @@ -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));
Expand Down Expand Up @@ -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"]);
}
}
}
30 changes: 30 additions & 0 deletions source/MongoDB.Tests/UnitTests/TestMongoRegex.cs
@@ -1,9 +1,39 @@
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
using NUnit.Framework;

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);
}
}
}
31 changes: 31 additions & 0 deletions 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
Expand Down Expand Up @@ -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);
}
}
}

0 comments on commit 4d125fc

Please sign in to comment.