annotate src/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs @ 83:ae30d91d2ffe

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