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