Visualization Library 2.0.0-b5

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
UnitTests.cs
Go to the documentation of this file.
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.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
unsigned char byte
Definition: tif_acorn.c:69
png_uint_32 i
Definition: png.h:2640
GLenum GLuint GLenum GLsizei const GLchar * buf
unsigned int uint
Definition: gzlog.c:242
#define Assert(cond, msg)
Definition: zutil.h:196
GLsizei GLsizei GLenum GLenum const GLvoid * data
unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, uInt len)
Definition: crc32.c:204
int inf(FILE *source, FILE *dest)
Definition: zpipe.c:92
backing_store_ptr info
Definition: jmemsys.h:181
GLdouble s
GLuint GLuint GLsizei count
delegate void DataAvailableHandler(byte[] data, int startIndex, int count)
Represents the method that will be called from a codec when new data are available.
CompressLevel
Defines constants for the available compression levels in zlib
Definition: DotZLib.cs:61
int def(FILE *source, FILE *dest, int level)
Definition: zpipe.c:36