//
// © Copyright Henrik Ravn 2004
//
// Use, modification and distribution are subject to the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
using System;
using System.Collections;
using System.IO;
// uncomment the define below to include unit tests
//#define nunit
#if nunit
using NUnit.Framework;
// Unit tests for the DotZLib class library
// ----------------------------------------
//
// Use this with NUnit 2 from http://www.nunit.org
//
namespace DotZLibTests
{
using DotZLib;
// helper methods
internal class Utils
{
public static bool byteArrEqual(
byte [] lhs,
byte [] rhs )
{
if (lhs.Length != rhs.Length)
return false ;
for (
int i = lhs.Length-
1 ; i >=
0 ; --i)
if (lhs[i] != rhs[i])
return false ;
return true ;
}
}
[TestFixture]
public class CircBufferTests
{
#region Circular buffer tests
[Test]
public void SinglePutGet()
{
CircularBuffer buf =
new CircularBuffer(
10 );
Assert.AreEqual(
0 , buf.Size );
Assert.AreEqual( -
1 , buf.
Get () );
Assert.IsTrue(buf.Put(
1 ));
Assert.AreEqual(
1 , buf.Size );
Assert.AreEqual(
1 , buf.
Get () );
Assert.AreEqual(
0 , buf.Size );
Assert.AreEqual( -
1 , buf.
Get () );
}
[Test]
public void BlockPutGet()
{
CircularBuffer buf =
new CircularBuffer(
10 );
byte [] arr = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 };
Assert.AreEqual(
10 , buf.Put(arr,
0 ,
10 ) );
Assert.AreEqual(
10 , buf.Size );
Assert.IsFalse( buf.Put(
11 ) );
Assert.AreEqual(
1 , buf.
Get () );
Assert.IsTrue( buf.Put(
11 ) );
byte [] arr2 = (
byte [])arr.Clone();
Assert.AreEqual(
9 , buf.
Get (arr2,
1 ,
9 ) );
Assert.IsTrue( Utils.byteArrEqual(arr,arr2) );
}
#endregion
}
[TestFixture]
public class ChecksumTests
{
#region CRC32 Tests
[Test]
public void CRC32_Null()
{
CRC32Checksum crc32 =
new CRC32Checksum();
Assert.AreEqual(
0 , crc32.Value );
crc32 =
new CRC32Checksum(
1 );
Assert.AreEqual(
1 , crc32.Value );
crc32 =
new CRC32Checksum(
556 );
Assert.AreEqual(
556 , crc32.Value );
}
[Test]
public void CRC32_Data()
{
CRC32Checksum crc32 =
new CRC32Checksum();
byte [] data = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 };
crc32.Update(data);
Assert.AreEqual(
0 x70e46888, crc32.Value );
crc32 =
new CRC32Checksum();
crc32.Update(
"penguin" );
Assert.AreEqual(
0 x0e5c1a120, crc32.Value );
crc32 =
new CRC32Checksum(
1 );
crc32.Update(
"penguin" );
Assert.AreEqual(
0 x43b6aa94, crc32.Value);
}
#endregion
#region Adler tests
[Test]
public void Adler_Null()
{
AdlerChecksum adler =
new AdlerChecksum();
Assert.AreEqual(
0 , adler.Value);
adler =
new AdlerChecksum(
1 );
Assert.AreEqual(
1 , adler.Value );
adler =
new AdlerChecksum(
556 );
Assert.AreEqual(
556 , adler.Value );
}
[Test]
public void Adler_Data()
{
AdlerChecksum adler =
new AdlerChecksum(
1 );
byte [] data = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 };
adler.Update(data);
Assert.AreEqual(
0 x5b001d, adler.Value );
adler =
new AdlerChecksum();
adler.Update(
"penguin" );
Assert.AreEqual(
0 x0bcf02f6, adler.Value );
adler =
new AdlerChecksum(
1 );
adler.Update(
"penguin" );
Assert.AreEqual(
0 x0bd602f7, adler.Value);
}
#endregion
}
[TestFixture]
public class InfoTests
{
#region Info tests
[Test]
public void Info_Version()
{
Info info =
new Info();
Assert.AreEqual(
"1.3.0" , Info.Version);
Assert.AreEqual(
32 , info.SizeOfUInt);
Assert.AreEqual(
32 , info.SizeOfULong);
Assert.AreEqual(
32 , info.SizeOfPointer);
Assert.AreEqual(
32 , info.SizeOfOffset);
}
#endregion
}
[TestFixture]
public class DeflateInflateTests
{
#region Deflate tests
[Test]
public void Deflate_Init()
{
using (Deflater def =
new Deflater(CompressLevel.
Default ))
{
}
}
private ArrayList compressedData =
new ArrayList();
private uint adler1;
private ArrayList uncompressedData =
new ArrayList();
private uint adler2;
public void CDataAvail(
byte [] data,
int startIndex,
int count)
{
for (
int i =
0 ; i < count; ++i)
compressedData.
Add (data[i+startIndex]);
}
[Test]
public void Deflate_Compress()
{
compressedData.Clear();
byte [] testData =
new byte [
35000 ];
for (
int i =
0 ; i < testData.Length; ++i)
testData[i] =
5 ;
using (Deflater def =
new Deflater((CompressLevel)
5 ))
{
def.DataAvailable +=
new DataAvailableHandler(CDataAvail);
def.
Add (testData);
def.Finish();
adler1 = def.Checksum;
}
}
#endregion
#region Inflate tests
[Test]
public void Inflate_Init()
{
using (Inflater inf =
new Inflater())
{
}
}
private void DDataAvail(
byte [] data,
int startIndex,
int count)
{
for (
int i =
0 ; i < count; ++i)
uncompressedData.
Add (data[i+startIndex]);
}
[Test]
public void Inflate_Expand()
{
uncompressedData.Clear();
using (Inflater inf =
new Inflater())
{
inf.DataAvailable +=
new DataAvailableHandler(DDataAvail);
inf.
Add ((
byte [])compressedData.ToArray(
typeof (
byte )));
inf.Finish();
adler2 = inf.Checksum;
}
Assert.AreEqual( adler1, adler2 );
}
#endregion
}
[TestFixture]
public class GZipStreamTests
{
#region GZipStream test
[Test]
public void GZipStream_WriteRead()
{
using (GZipStream gzOut =
new GZipStream(
"gzstream.gz" , CompressLevel.Best))
{
BinaryWriter writer =
new BinaryWriter(gzOut);
writer.Write(
"hi there" );
writer.Write(Math.PI);
writer.Write(
42 );
}
using (GZipStream gzIn =
new GZipStream(
"gzstream.gz" ))
{
BinaryReader reader =
new BinaryReader(gzIn);
string s = reader.ReadString();
Assert.AreEqual(
"hi there" ,s);
double d = reader.ReadDouble();
Assert.AreEqual(Math.PI, d);
int i = reader.ReadInt32();
Assert.AreEqual(
42 ,i);
}
}
#endregion
}
}
#endif
Messung V0.5 in Prozent C=89 H=96 G=92
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-17)
¤
*© Formatika GbR, Deutschland