/source/MongoDB.Tests/UnitTests/TestBinary.cs

https://github.com/weiheng/mongodb-csharp
C# | 129 lines | 108 code | 21 blank | 0 comment | 0 complexity | 830ec4ccefca6d9dd2180dcc1810f412 MD5 | raw file
  1. using System.IO;
  2. using System.Runtime.Serialization.Formatters.Binary;
  3. using System.Xml.Serialization;
  4. using NUnit.Framework;
  5. using System.Linq;
  6. namespace MongoDB.UnitTests
  7. {
  8. [TestFixture]
  9. public class TestBinary
  10. {
  11. [Test]
  12. public void CanCreateBinary(){
  13. var binary = new Binary();
  14. Assert.IsNull(binary.Bytes);
  15. Assert.AreEqual(BinarySubtype.Unknown, binary.Subtype);
  16. }
  17. [Test]
  18. public void CanCreateBinaryFromNull(){
  19. var binary = new Binary(null);
  20. Assert.IsNull(binary.Bytes);
  21. Assert.AreEqual(BinarySubtype.General, binary.Subtype);
  22. }
  23. [Test]
  24. public void CanCreateBinaryFromBytes(){
  25. var bytes = new byte[] { 10 };
  26. var binary = new Binary(bytes);
  27. Assert.AreEqual(bytes,binary.Bytes);
  28. Assert.AreEqual(BinarySubtype.General, binary.Subtype);
  29. }
  30. [Test]
  31. public void CanCreateBinaryFromBytesAndSubtype(){
  32. var bytes = new byte[] {10};
  33. var binary = new Binary(bytes,BinarySubtype.UserDefined);
  34. Assert.AreEqual(bytes, binary.Bytes);
  35. Assert.AreEqual(BinarySubtype.UserDefined, binary.Subtype);
  36. }
  37. [Test]
  38. public void CanImplicitConvertedToBytes(){
  39. var bytes = new byte[]{10,12};
  40. var binary = new Binary(bytes);
  41. var converted = (byte[])binary;
  42. Assert.IsNotNull(converted);
  43. Assert.AreEqual(bytes, converted);
  44. }
  45. [Test]
  46. public void CanImplicitConvertedFromBytes(){
  47. var bytes = new byte[] {10, 12};
  48. var binary = (Binary)bytes;
  49. Assert.IsNotNull(binary);
  50. Assert.AreEqual(bytes,binary.Bytes);
  51. }
  52. [Test]
  53. public void CanBeCloned(){
  54. var binarySource = new Binary(new byte[] {10, 20}, BinarySubtype.UserDefined);
  55. var binaryDest = binarySource.Clone() as Binary;
  56. Assert.IsNotNull(binaryDest);
  57. Assert.AreEqual(binarySource.Bytes,binaryDest.Bytes);
  58. Assert.AreEqual(binarySource.Subtype,binaryDest.Subtype);
  59. }
  60. [Test]
  61. public void CanBeEnumerated()
  62. {
  63. var binary = new Binary(new byte[] { 10, 20 });
  64. var array = binary.ToArray();
  65. Assert.AreEqual(2,array.Length);
  66. Assert.AreEqual(10, array[0]);
  67. Assert.AreEqual(20, array[1]);
  68. }
  69. [Test]
  70. public void CanBeBinarySerialized()
  71. {
  72. var source = new Binary(new byte[] {10, 20}, BinarySubtype.Md5);
  73. var formatter = new BinaryFormatter();
  74. var mem = new MemoryStream();
  75. formatter.Serialize(mem, source);
  76. mem.Position = 0;
  77. var dest = (Binary)formatter.Deserialize(mem);
  78. Assert.AreEqual(source, dest);
  79. }
  80. [Test]
  81. public void CanBeEqual()
  82. {
  83. var binary1 = new Binary(new byte[] { 10, 20 }, BinarySubtype.Md5);
  84. var binary2 = new Binary(new byte[] { 10, 20 }, BinarySubtype.Md5);
  85. Assert.AreEqual(binary1,binary2);
  86. }
  87. [Test]
  88. public void CanBeXmlSerialized()
  89. {
  90. var source = new Binary(new byte[] { 10, 20 }, BinarySubtype.Md5);
  91. var serializer = new XmlSerializer(typeof(Binary));
  92. var writer = new StringWriter();
  93. serializer.Serialize(writer, source);
  94. var dest = (Binary)serializer.Deserialize(new StringReader(writer.ToString()));
  95. Assert.AreEqual(source, dest);
  96. }
  97. [Test]
  98. public void CanBeXmlSerializedWhenNullBytes()
  99. {
  100. var source = new Binary(null, BinarySubtype.Md5);
  101. var serializer = new XmlSerializer(typeof(Binary));
  102. var writer = new StringWriter();
  103. serializer.Serialize(writer, source);
  104. var dest = (Binary)serializer.Deserialize(new StringReader(writer.ToString()));
  105. Assert.AreEqual(source, dest);
  106. }
  107. }
  108. }