all repos — mgba @ 3b353ac62190a00765812938e86e04b753196736

mGBA Game Boy Advance Emulator

src/third-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs (view raw)

  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