symbian-qemu-0.9.1-12/zlib-1.2.3/contrib/dotzlib/DotZLib/UnitTests.cs
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 //
       
     2 // © Copyright Henrik Ravn 2004
       
     3 //
       
     4 // Use, modification and distribution are subject to the Boost Software License, Version 1.0. 
       
     5 // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       
     6 //
       
     7 
       
     8 using System;
       
     9 using System.Collections;
       
    10 using System.IO;
       
    11 
       
    12 // uncomment the define below to include unit tests
       
    13 //#define nunit
       
    14 #if nunit
       
    15 using NUnit.Framework;
       
    16 
       
    17 // Unit tests for the DotZLib class library
       
    18 // ----------------------------------------
       
    19 //
       
    20 // Use this with NUnit 2 from http://www.nunit.org
       
    21 //
       
    22 
       
    23 namespace DotZLibTests
       
    24 {
       
    25     using DotZLib;
       
    26 
       
    27     // helper methods
       
    28     internal class Utils
       
    29     {
       
    30         public static bool byteArrEqual( byte[] lhs, byte[] rhs )
       
    31         {
       
    32             if (lhs.Length != rhs.Length)
       
    33                 return false;
       
    34             for (int i = lhs.Length-1; i >= 0; --i)
       
    35                 if (lhs[i] != rhs[i])
       
    36                     return false;
       
    37             return true;
       
    38         }
       
    39 
       
    40     }
       
    41 
       
    42 
       
    43     [TestFixture]
       
    44     public class CircBufferTests
       
    45     {
       
    46         #region Circular buffer tests
       
    47         [Test]
       
    48         public void SinglePutGet()
       
    49         {
       
    50             CircularBuffer buf = new CircularBuffer(10);
       
    51             Assert.AreEqual( 0, buf.Size );
       
    52             Assert.AreEqual( -1, buf.Get() );
       
    53 
       
    54             Assert.IsTrue(buf.Put( 1 ));
       
    55             Assert.AreEqual( 1, buf.Size );
       
    56             Assert.AreEqual( 1, buf.Get() );
       
    57             Assert.AreEqual( 0, buf.Size );
       
    58             Assert.AreEqual( -1, buf.Get() );
       
    59         }
       
    60 
       
    61         [Test]
       
    62         public void BlockPutGet()
       
    63         {
       
    64             CircularBuffer buf = new CircularBuffer(10);
       
    65             byte[] arr = {1,2,3,4,5,6,7,8,9,10};
       
    66             Assert.AreEqual( 10, buf.Put(arr,0,10) );
       
    67             Assert.AreEqual( 10, buf.Size );
       
    68             Assert.IsFalse( buf.Put(11) );
       
    69             Assert.AreEqual( 1, buf.Get() );
       
    70             Assert.IsTrue( buf.Put(11) );
       
    71 
       
    72             byte[] arr2 = (byte[])arr.Clone();
       
    73             Assert.AreEqual( 9, buf.Get(arr2,1,9) );
       
    74             Assert.IsTrue( Utils.byteArrEqual(arr,arr2) );
       
    75         }
       
    76 
       
    77         #endregion
       
    78     }
       
    79 
       
    80     [TestFixture]
       
    81     public class ChecksumTests
       
    82     {
       
    83         #region CRC32 Tests
       
    84         [Test]
       
    85         public void CRC32_Null()
       
    86         {
       
    87             CRC32Checksum crc32 = new CRC32Checksum();
       
    88             Assert.AreEqual( 0, crc32.Value );
       
    89 
       
    90             crc32 = new CRC32Checksum(1);
       
    91             Assert.AreEqual( 1, crc32.Value );
       
    92 
       
    93             crc32 = new CRC32Checksum(556);
       
    94             Assert.AreEqual( 556, crc32.Value );
       
    95         }
       
    96 
       
    97         [Test]
       
    98         public void CRC32_Data()
       
    99         {
       
   100             CRC32Checksum crc32 = new CRC32Checksum();
       
   101             byte[] data = { 1,2,3,4,5,6,7 };
       
   102             crc32.Update(data);
       
   103             Assert.AreEqual( 0x70e46888, crc32.Value  );
       
   104 
       
   105             crc32 = new CRC32Checksum();
       
   106             crc32.Update("penguin");
       
   107             Assert.AreEqual( 0x0e5c1a120, crc32.Value );
       
   108 
       
   109             crc32 = new CRC32Checksum(1);
       
   110             crc32.Update("penguin");
       
   111             Assert.AreEqual(0x43b6aa94, crc32.Value);
       
   112 
       
   113         }
       
   114         #endregion
       
   115 
       
   116         #region Adler tests
       
   117 
       
   118         [Test]
       
   119         public void Adler_Null()
       
   120         {
       
   121             AdlerChecksum adler = new AdlerChecksum();
       
   122             Assert.AreEqual(0, adler.Value);
       
   123 
       
   124             adler = new AdlerChecksum(1);
       
   125             Assert.AreEqual( 1, adler.Value );
       
   126 
       
   127             adler = new AdlerChecksum(556);
       
   128             Assert.AreEqual( 556, adler.Value );
       
   129         }
       
   130 
       
   131         [Test]
       
   132         public void Adler_Data()
       
   133         {
       
   134             AdlerChecksum adler = new AdlerChecksum(1);
       
   135             byte[] data = { 1,2,3,4,5,6,7 };
       
   136             adler.Update(data);
       
   137             Assert.AreEqual( 0x5b001d, adler.Value  );
       
   138 
       
   139             adler = new AdlerChecksum();
       
   140             adler.Update("penguin");
       
   141             Assert.AreEqual(0x0bcf02f6, adler.Value );
       
   142 
       
   143             adler = new AdlerChecksum(1);
       
   144             adler.Update("penguin");
       
   145             Assert.AreEqual(0x0bd602f7, adler.Value);
       
   146 
       
   147         }
       
   148         #endregion
       
   149     }
       
   150 
       
   151     [TestFixture]
       
   152     public class InfoTests
       
   153     {
       
   154         #region Info tests
       
   155         [Test]
       
   156         public void Info_Version()
       
   157         {
       
   158             Info info = new Info();
       
   159             Assert.AreEqual("1.2.3", Info.Version);
       
   160             Assert.AreEqual(32, info.SizeOfUInt);
       
   161             Assert.AreEqual(32, info.SizeOfULong);
       
   162             Assert.AreEqual(32, info.SizeOfPointer);
       
   163             Assert.AreEqual(32, info.SizeOfOffset);
       
   164         }
       
   165         #endregion
       
   166     }
       
   167 
       
   168     [TestFixture]
       
   169     public class DeflateInflateTests
       
   170     {
       
   171         #region Deflate tests
       
   172         [Test]
       
   173         public void Deflate_Init()
       
   174         {
       
   175             using (Deflater def = new Deflater(CompressLevel.Default))
       
   176             {
       
   177             }
       
   178         }
       
   179 
       
   180         private ArrayList compressedData = new ArrayList();
       
   181         private uint adler1;
       
   182 
       
   183         private ArrayList uncompressedData = new ArrayList();
       
   184         private uint adler2;
       
   185 
       
   186         public void CDataAvail(byte[] data, int startIndex, int count)
       
   187         {
       
   188             for (int i = 0; i < count; ++i)
       
   189                 compressedData.Add(data[i+startIndex]);
       
   190         }
       
   191 
       
   192         [Test]
       
   193         public void Deflate_Compress()
       
   194         {
       
   195             compressedData.Clear();
       
   196 
       
   197             byte[] testData = new byte[35000];
       
   198             for (int i = 0; i < testData.Length; ++i)
       
   199                 testData[i] = 5;
       
   200 
       
   201             using (Deflater def = new Deflater((CompressLevel)5))
       
   202             {
       
   203                 def.DataAvailable += new DataAvailableHandler(CDataAvail);
       
   204                 def.Add(testData);
       
   205                 def.Finish();
       
   206                 adler1 = def.Checksum;
       
   207             }
       
   208         }
       
   209         #endregion
       
   210 
       
   211         #region Inflate tests
       
   212         [Test]
       
   213         public void Inflate_Init()
       
   214         {
       
   215             using (Inflater inf = new Inflater())
       
   216             {
       
   217             }
       
   218         }
       
   219 
       
   220         private void DDataAvail(byte[] data, int startIndex, int count)
       
   221         {
       
   222             for (int i = 0; i < count; ++i)
       
   223                 uncompressedData.Add(data[i+startIndex]);
       
   224         }
       
   225 
       
   226         [Test]
       
   227         public void Inflate_Expand()
       
   228         { 
       
   229             uncompressedData.Clear();
       
   230 
       
   231             using (Inflater inf = new Inflater())
       
   232             {
       
   233                 inf.DataAvailable += new DataAvailableHandler(DDataAvail);
       
   234                 inf.Add((byte[])compressedData.ToArray(typeof(byte)));
       
   235                 inf.Finish();
       
   236                 adler2 = inf.Checksum;
       
   237             }
       
   238             Assert.AreEqual( adler1, adler2 );
       
   239         }
       
   240         #endregion
       
   241     }
       
   242 
       
   243     [TestFixture]
       
   244     public class GZipStreamTests
       
   245     {
       
   246         #region GZipStream test
       
   247         [Test]
       
   248         public void GZipStream_WriteRead()
       
   249         {
       
   250             using (GZipStream gzOut = new GZipStream("gzstream.gz", CompressLevel.Best))
       
   251             {
       
   252                 BinaryWriter writer = new BinaryWriter(gzOut);
       
   253                 writer.Write("hi there");
       
   254                 writer.Write(Math.PI);
       
   255                 writer.Write(42);
       
   256             }
       
   257 
       
   258             using (GZipStream gzIn = new GZipStream("gzstream.gz"))
       
   259             {
       
   260                 BinaryReader reader = new BinaryReader(gzIn);
       
   261                 string s = reader.ReadString();
       
   262                 Assert.AreEqual("hi there",s);
       
   263                 double d = reader.ReadDouble();
       
   264                 Assert.AreEqual(Math.PI, d);
       
   265                 int i = reader.ReadInt32();
       
   266                 Assert.AreEqual(42,i);
       
   267             }
       
   268 
       
   269         }
       
   270         #endregion
       
   271 	}
       
   272 }
       
   273 
       
   274 #endif