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