Rizin
unix-like reverse engineering framework and cli tools
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.12", 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
lzma_index ** i
Definition: index.h:629
RzBinInfo * info(RzBinFile *bf)
Definition: bin_ne.c:86
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
Definition: sflib.h:98
unsigned int uint
Definition: gzlog.c:242
voidpf void * buf
Definition: ioapi.h:138
CompressLevel
Defines constants for the available compression levels in zlib
Definition: DotZLib.cs:62
delegate void DataAvailableHandler(byte[] data, int startIndex, int count)
Represents the method that will be called from a codec when new data are available.
static RzSocket * s
Definition: rtr.c:28
#define typeof(arg)
Definition: rz_types.h:354
#define d(i)
Definition: sha256.c:44
void reader(void *n)
Definition: main.c:8
void writer(void *n)
Definition: main.c:22
unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, uInt len)
Definition: crc32.c:1063
int inf(FILE *source, FILE *dest)
Definition: zpipe.c:92
int def(FILE *source, FILE *dest, int level)
Definition: zpipe.c:36
#define Assert(cond, msg)
Definition: zutil.h:251