annotate src/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs @ 148:b4bfdf10c4b3

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