source: Vago/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs@ 1081

Last change on this file since 1081 was 1049, checked in by s10k, 8 years ago
File size: 7.5 KB
Line 
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
8using System;
9using System.Collections;
10using System.IO;
11
12// uncomment the define below to include unit tests
13//#define nunit
14#if nunit
15using 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
23namespace 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.8", 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
Note: See TracBrowser for help on using the repository browser.