Fossil

Hex Artifact Content
Login

Artifact 8d35d4a5b28e472f5618185c295d1964c1459d07:


0000: 2f 2f 0d 0a 2f 2f 20 c2 a9 20 43 6f 70 79 72 69  //..// .. Copyri
0010: 67 68 74 20 48 65 6e 72 69 6b 20 52 61 76 6e 20  ght Henrik Ravn 
0020: 32 30 30 34 0d 0a 2f 2f 0d 0a 2f 2f 20 55 73 65  2004..//..// Use
0030: 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 61  , modification a
0040: 6e 64 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20  nd distribution 
0050: 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20 74  are subject to t
0060: 68 65 20 42 6f 6f 73 74 20 53 6f 66 74 77 61 72  he Boost Softwar
0070: 65 20 4c 69 63 65 6e 73 65 2c 20 56 65 72 73 69  e License, Versi
0080: 6f 6e 20 31 2e 30 2e 0d 0a 2f 2f 20 28 53 65 65  on 1.0...// (See
0090: 20 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 66 69   accompanying fi
00a0: 6c 65 20 4c 49 43 45 4e 53 45 5f 31 5f 30 2e 74  le LICENSE_1_0.t
00b0: 78 74 20 6f 72 20 63 6f 70 79 20 61 74 20 68 74  xt or copy at ht
00c0: 74 70 3a 2f 2f 77 77 77 2e 62 6f 6f 73 74 2e 6f  tp://www.boost.o
00d0: 72 67 2f 4c 49 43 45 4e 53 45 5f 31 5f 30 2e 74  rg/LICENSE_1_0.t
00e0: 78 74 29 0d 0a 2f 2f 0d 0a 0d 0a 75 73 69 6e 67  xt)..//....using
00f0: 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20   System;..using 
0100: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
0110: 6e 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  ns;..using Syste
0120: 6d 2e 49 4f 3b 0d 0a 0d 0a 2f 2f 20 75 6e 63 6f  m.IO;....// unco
0130: 6d 6d 65 6e 74 20 74 68 65 20 64 65 66 69 6e 65  mment the define
0140: 20 62 65 6c 6f 77 20 74 6f 20 69 6e 63 6c 75 64   below to includ
0150: 65 20 75 6e 69 74 20 74 65 73 74 73 0d 0a 2f 2f  e unit tests..//
0160: 23 64 65 66 69 6e 65 20 6e 75 6e 69 74 0d 0a 23  #define nunit..#
0170: 69 66 20 6e 75 6e 69 74 0d 0a 75 73 69 6e 67 20  if nunit..using 
0180: 4e 55 6e 69 74 2e 46 72 61 6d 65 77 6f 72 6b 3b  NUnit.Framework;
0190: 0d 0a 0d 0a 2f 2f 20 55 6e 69 74 20 74 65 73 74  ....// Unit test
01a0: 73 20 66 6f 72 20 74 68 65 20 44 6f 74 5a 4c 69  s for the DotZLi
01b0: 62 20 63 6c 61 73 73 20 6c 69 62 72 61 72 79 0d  b class library.
01c0: 0a 2f 2f 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .// ------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f  ------------..//
01f0: 0d 0a 2f 2f 20 55 73 65 20 74 68 69 73 20 77 69  ..// Use this wi
0200: 74 68 20 4e 55 6e 69 74 20 32 20 66 72 6f 6d 20  th NUnit 2 from 
0210: 68 74 74 70 3a 2f 2f 77 77 77 2e 6e 75 6e 69 74  http://www.nunit
0220: 2e 6f 72 67 0d 0a 2f 2f 0d 0a 0d 0a 6e 61 6d 65  .org..//....name
0230: 73 70 61 63 65 20 44 6f 74 5a 4c 69 62 54 65 73  space DotZLibTes
0240: 74 73 0d 0a 7b 0d 0a 20 20 20 20 75 73 69 6e 67  ts..{..    using
0250: 20 44 6f 74 5a 4c 69 62 3b 0d 0a 0d 0a 20 20 20   DotZLib;....   
0260: 20 2f 2f 20 68 65 6c 70 65 72 20 6d 65 74 68 6f   // helper metho
0270: 64 73 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ds..    internal
0280: 20 63 6c 61 73 73 20 55 74 69 6c 73 0d 0a 20 20   class Utils..  
0290: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62    {..        pub
02a0: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  lic static bool 
02b0: 62 79 74 65 41 72 72 45 71 75 61 6c 28 20 62 79  byteArrEqual( by
02c0: 74 65 5b 5d 20 6c 68 73 2c 20 62 79 74 65 5b 5d  te[] lhs, byte[]
02d0: 20 72 68 73 20 29 0d 0a 20 20 20 20 20 20 20 20   rhs )..        
02e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
02f0: 66 20 28 6c 68 73 2e 4c 65 6e 67 74 68 20 21 3d  f (lhs.Length !=
0300: 20 72 68 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20   rhs.Length)..  
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
0320: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
0330: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
0340: 74 20 69 20 3d 20 6c 68 73 2e 4c 65 6e 67 74 68  t i = lhs.Length
0350: 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29  -1; i >= 0; --i)
0360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0370: 20 20 69 66 20 28 6c 68 73 5b 69 5d 20 21 3d 20    if (lhs[i] != 
0380: 72 68 73 5b 69 5d 29 0d 0a 20 20 20 20 20 20 20  rhs[i])..       
0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
03a0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
03b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
03c0: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rue;..        }.
03d0: 0a 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20  ...    }......  
03e0: 20 20 5b 54 65 73 74 46 69 78 74 75 72 65 5d 0d    [TestFixture].
03f0: 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73  .    public clas
0400: 73 20 43 69 72 63 42 75 66 66 65 72 54 65 73 74  s CircBufferTest
0410: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
0420: 20 20 23 72 65 67 69 6f 6e 20 43 69 72 63 75 6c    #region Circul
0430: 61 72 20 62 75 66 66 65 72 20 74 65 73 74 73 0d  ar buffer tests.
0440: 0a 20 20 20 20 20 20 20 20 5b 54 65 73 74 5d 0d  .        [Test].
0450: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
0460: 76 6f 69 64 20 53 69 6e 67 6c 65 50 75 74 47 65  void SinglePutGe
0470: 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  t()..        {..
0480: 20 20 20 20 20 20 20 20 20 20 20 20 43 69 72 63              Circ
0490: 75 6c 61 72 42 75 66 66 65 72 20 62 75 66 20 3d  ularBuffer buf =
04a0: 20 6e 65 77 20 43 69 72 63 75 6c 61 72 42 75 66   new CircularBuf
04b0: 66 65 72 28 31 30 29 3b 0d 0a 20 20 20 20 20 20  fer(10);..      
04c0: 20 20 20 20 20 20 41 73 73 65 72 74 2e 41 72 65        Assert.Are
04d0: 45 71 75 61 6c 28 20 30 2c 20 62 75 66 2e 53 69  Equal( 0, buf.Si
04e0: 7a 65 20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ze );..         
04f0: 20 20 20 41 73 73 65 72 74 2e 41 72 65 45 71 75     Assert.AreEqu
0500: 61 6c 28 20 2d 31 2c 20 62 75 66 2e 47 65 74 28  al( -1, buf.Get(
0510: 29 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ) );....        
0520: 20 20 20 20 41 73 73 65 72 74 2e 49 73 54 72 75      Assert.IsTru
0530: 65 28 62 75 66 2e 50 75 74 28 20 31 20 29 29 3b  e(buf.Put( 1 ));
0540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73  ..            As
0550: 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28 20 31  sert.AreEqual( 1
0560: 2c 20 62 75 66 2e 53 69 7a 65 20 29 3b 0d 0a 20  , buf.Size );.. 
0570: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 72             Asser
0580: 74 2e 41 72 65 45 71 75 61 6c 28 20 31 2c 20 62  t.AreEqual( 1, b
0590: 75 66 2e 47 65 74 28 29 20 29 3b 0d 0a 20 20 20  uf.Get() );..   
05a0: 20 20 20 20 20 20 20 20 20 41 73 73 65 72 74 2e           Assert.
05b0: 41 72 65 45 71 75 61 6c 28 20 30 2c 20 62 75 66  AreEqual( 0, buf
05c0: 2e 53 69 7a 65 20 29 3b 0d 0a 20 20 20 20 20 20  .Size );..      
05d0: 20 20 20 20 20 20 41 73 73 65 72 74 2e 41 72 65        Assert.Are
05e0: 45 71 75 61 6c 28 20 2d 31 2c 20 62 75 66 2e 47  Equal( -1, buf.G
05f0: 65 74 28 29 20 29 3b 0d 0a 20 20 20 20 20 20 20  et() );..       
0600: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5b 54   }....        [T
0610: 65 73 74 5d 0d 0a 20 20 20 20 20 20 20 20 70 75  est]..        pu
0620: 62 6c 69 63 20 76 6f 69 64 20 42 6c 6f 63 6b 50  blic void BlockP
0630: 75 74 47 65 74 28 29 0d 0a 20 20 20 20 20 20 20  utGet()..       
0640: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0650: 43 69 72 63 75 6c 61 72 42 75 66 66 65 72 20 62  CircularBuffer b
0660: 75 66 20 3d 20 6e 65 77 20 43 69 72 63 75 6c 61  uf = new Circula
0670: 72 42 75 66 66 65 72 28 31 30 29 3b 0d 0a 20 20  rBuffer(10);..  
0680: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
0690: 20 61 72 72 20 3d 20 7b 31 2c 32 2c 33 2c 34 2c   arr = {1,2,3,4,
06a0: 35 2c 36 2c 37 2c 38 2c 39 2c 31 30 7d 3b 0d 0a  5,6,7,8,9,10};..
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
06c0: 72 74 2e 41 72 65 45 71 75 61 6c 28 20 31 30 2c  rt.AreEqual( 10,
06d0: 20 62 75 66 2e 50 75 74 28 61 72 72 2c 30 2c 31   buf.Put(arr,0,1
06e0: 30 29 20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  0) );..         
06f0: 20 20 20 41 73 73 65 72 74 2e 41 72 65 45 71 75     Assert.AreEqu
0700: 61 6c 28 20 31 30 2c 20 62 75 66 2e 53 69 7a 65  al( 10, buf.Size
0710: 20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   );..           
0720: 20 41 73 73 65 72 74 2e 49 73 46 61 6c 73 65 28   Assert.IsFalse(
0730: 20 62 75 66 2e 50 75 74 28 31 31 29 20 29 3b 0d   buf.Put(11) );.
0740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73  .            Ass
0750: 65 72 74 2e 41 72 65 45 71 75 61 6c 28 20 31 2c  ert.AreEqual( 1,
0760: 20 62 75 66 2e 47 65 74 28 29 20 29 3b 0d 0a 20   buf.Get() );.. 
0770: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 72             Asser
0780: 74 2e 49 73 54 72 75 65 28 20 62 75 66 2e 50 75  t.IsTrue( buf.Pu
0790: 74 28 31 31 29 20 29 3b 0d 0a 0d 0a 20 20 20 20  t(11) );....    
07a0: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 61          byte[] a
07b0: 72 72 32 20 3d 20 28 62 79 74 65 5b 5d 29 61 72  rr2 = (byte[])ar
07c0: 72 2e 43 6c 6f 6e 65 28 29 3b 0d 0a 20 20 20 20  r.Clone();..    
07d0: 20 20 20 20 20 20 20 20 41 73 73 65 72 74 2e 41          Assert.A
07e0: 72 65 45 71 75 61 6c 28 20 39 2c 20 62 75 66 2e  reEqual( 9, buf.
07f0: 47 65 74 28 61 72 72 32 2c 31 2c 39 29 20 29 3b  Get(arr2,1,9) );
0800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73  ..            As
0810: 73 65 72 74 2e 49 73 54 72 75 65 28 20 55 74 69  sert.IsTrue( Uti
0820: 6c 73 2e 62 79 74 65 41 72 72 45 71 75 61 6c 28  ls.byteArrEqual(
0830: 61 72 72 2c 61 72 72 32 29 20 29 3b 0d 0a 20 20  arr,arr2) );..  
0840: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0850: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
0860: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 5b 54 65 73     }....    [Tes
0870: 74 46 69 78 74 75 72 65 5d 0d 0a 20 20 20 20 70  tFixture]..    p
0880: 75 62 6c 69 63 20 63 6c 61 73 73 20 43 68 65 63  ublic class Chec
0890: 6b 73 75 6d 54 65 73 74 73 0d 0a 20 20 20 20 7b  ksumTests..    {
08a0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
08b0: 6e 20 43 52 43 33 32 20 54 65 73 74 73 0d 0a 20  n CRC32 Tests.. 
08c0: 20 20 20 20 20 20 20 5b 54 65 73 74 5d 0d 0a 20         [Test].. 
08d0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
08e0: 69 64 20 43 52 43 33 32 5f 4e 75 6c 6c 28 29 0d  id CRC32_Null().
08f0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
0900: 20 20 20 20 20 20 20 20 43 52 43 33 32 43 68 65          CRC32Che
0910: 63 6b 73 75 6d 20 63 72 63 33 32 20 3d 20 6e 65  cksum crc32 = ne
0920: 77 20 43 52 43 33 32 43 68 65 63 6b 73 75 6d 28  w CRC32Checksum(
0930: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
0940: 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28  Assert.AreEqual(
0950: 20 30 2c 20 63 72 63 33 32 2e 56 61 6c 75 65 20   0, crc32.Value 
0960: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
0970: 20 20 63 72 63 33 32 20 3d 20 6e 65 77 20 43 52    crc32 = new CR
0980: 43 33 32 43 68 65 63 6b 73 75 6d 28 31 29 3b 0d  C32Checksum(1);.
0990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73  .            Ass
09a0: 65 72 74 2e 41 72 65 45 71 75 61 6c 28 20 31 2c  ert.AreEqual( 1,
09b0: 20 63 72 63 33 32 2e 56 61 6c 75 65 20 29 3b 0d   crc32.Value );.
09c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ...            c
09d0: 72 63 33 32 20 3d 20 6e 65 77 20 43 52 43 33 32  rc32 = new CRC32
09e0: 43 68 65 63 6b 73 75 6d 28 35 35 36 29 3b 0d 0a  Checksum(556);..
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
0a00: 72 74 2e 41 72 65 45 71 75 61 6c 28 20 35 35 36  rt.AreEqual( 556
0a10: 2c 20 63 72 63 33 32 2e 56 61 6c 75 65 20 29 3b  , crc32.Value );
0a20: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
0a30: 20 20 20 20 20 20 20 5b 54 65 73 74 5d 0d 0a 20         [Test].. 
0a40: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
0a50: 69 64 20 43 52 43 33 32 5f 44 61 74 61 28 29 0d  id CRC32_Data().
0a60: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
0a70: 20 20 20 20 20 20 20 20 43 52 43 33 32 43 68 65          CRC32Che
0a80: 63 6b 73 75 6d 20 63 72 63 33 32 20 3d 20 6e 65  cksum crc32 = ne
0a90: 77 20 43 52 43 33 32 43 68 65 63 6b 73 75 6d 28  w CRC32Checksum(
0aa0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
0ab0: 62 79 74 65 5b 5d 20 64 61 74 61 20 3d 20 7b 20  byte[] data = { 
0ac0: 31 2c 32 2c 33 2c 34 2c 35 2c 36 2c 37 20 7d 3b  1,2,3,4,5,6,7 };
0ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 72  ..            cr
0ae0: 63 33 32 2e 55 70 64 61 74 65 28 64 61 74 61 29  c32.Update(data)
0af0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41  ;..            A
0b00: 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28 20  ssert.AreEqual( 
0b10: 30 78 37 30 65 34 36 38 38 38 2c 20 63 72 63 33  0x70e46888, crc3
0b20: 32 2e 56 61 6c 75 65 20 20 29 3b 0d 0a 0d 0a 20  2.Value  );.... 
0b30: 20 20 20 20 20 20 20 20 20 20 20 63 72 63 33 32             crc32
0b40: 20 3d 20 6e 65 77 20 43 52 43 33 32 43 68 65 63   = new CRC32Chec
0b50: 6b 73 75 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  ksum();..       
0b60: 20 20 20 20 20 63 72 63 33 32 2e 55 70 64 61 74       crc32.Updat
0b70: 65 28 22 70 65 6e 67 75 69 6e 22 29 3b 0d 0a 20  e("penguin");.. 
0b80: 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 72             Asser
0b90: 74 2e 41 72 65 45 71 75 61 6c 28 20 30 78 30 65  t.AreEqual( 0x0e
0ba0: 35 63 31 61 31 32 30 2c 20 63 72 63 33 32 2e 56  5c1a120, crc32.V
0bb0: 61 6c 75 65 20 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue );....     
0bc0: 20 20 20 20 20 20 20 63 72 63 33 32 20 3d 20 6e         crc32 = n
0bd0: 65 77 20 43 52 43 33 32 43 68 65 63 6b 73 75 6d  ew CRC32Checksum
0be0: 28 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (1);..          
0bf0: 20 20 63 72 63 33 32 2e 55 70 64 61 74 65 28 22    crc32.Update("
0c00: 70 65 6e 67 75 69 6e 22 29 3b 0d 0a 20 20 20 20  penguin");..    
0c10: 20 20 20 20 20 20 20 20 41 73 73 65 72 74 2e 41          Assert.A
0c20: 72 65 45 71 75 61 6c 28 30 78 34 33 62 36 61 61  reEqual(0x43b6aa
0c30: 39 34 2c 20 63 72 63 33 32 2e 56 61 6c 75 65 29  94, crc32.Value)
0c40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ;....        }..
0c50: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
0c60: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  on....        #r
0c70: 65 67 69 6f 6e 20 41 64 6c 65 72 20 74 65 73 74  egion Adler test
0c80: 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5b 54 65  s....        [Te
0c90: 73 74 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62  st]..        pub
0ca0: 6c 69 63 20 76 6f 69 64 20 41 64 6c 65 72 5f 4e  lic void Adler_N
0cb0: 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ull()..        {
0cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 64  ..            Ad
0cd0: 6c 65 72 43 68 65 63 6b 73 75 6d 20 61 64 6c 65  lerChecksum adle
0ce0: 72 20 3d 20 6e 65 77 20 41 64 6c 65 72 43 68 65  r = new AdlerChe
0cf0: 63 6b 73 75 6d 28 29 3b 0d 0a 20 20 20 20 20 20  cksum();..      
0d00: 20 20 20 20 20 20 41 73 73 65 72 74 2e 41 72 65        Assert.Are
0d10: 45 71 75 61 6c 28 30 2c 20 61 64 6c 65 72 2e 56  Equal(0, adler.V
0d20: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
0d30: 20 20 20 20 20 20 61 64 6c 65 72 20 3d 20 6e 65        adler = ne
0d40: 77 20 41 64 6c 65 72 43 68 65 63 6b 73 75 6d 28  w AdlerChecksum(
0d50: 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1);..           
0d60: 20 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c   Assert.AreEqual
0d70: 28 20 31 2c 20 61 64 6c 65 72 2e 56 61 6c 75 65  ( 1, adler.Value
0d80: 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   );....         
0d90: 20 20 20 61 64 6c 65 72 20 3d 20 6e 65 77 20 41     adler = new A
0da0: 64 6c 65 72 43 68 65 63 6b 73 75 6d 28 35 35 36  dlerChecksum(556
0db0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
0dc0: 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28  Assert.AreEqual(
0dd0: 20 35 35 36 2c 20 61 64 6c 65 72 2e 56 61 6c 75   556, adler.Valu
0de0: 65 20 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e );..        }.
0df0: 0a 0d 0a 20 20 20 20 20 20 20 20 5b 54 65 73 74  ...        [Test
0e00: 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ]..        publi
0e10: 63 20 76 6f 69 64 20 41 64 6c 65 72 5f 44 61 74  c void Adler_Dat
0e20: 61 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  a()..        {..
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 41 64 6c 65              Adle
0e40: 72 43 68 65 63 6b 73 75 6d 20 61 64 6c 65 72 20  rChecksum adler 
0e50: 3d 20 6e 65 77 20 41 64 6c 65 72 43 68 65 63 6b  = new AdlerCheck
0e60: 73 75 6d 28 31 29 3b 0d 0a 20 20 20 20 20 20 20  sum(1);..       
0e70: 20 20 20 20 20 62 79 74 65 5b 5d 20 64 61 74 61       byte[] data
0e80: 20 3d 20 7b 20 31 2c 32 2c 33 2c 34 2c 35 2c 36   = { 1,2,3,4,5,6
0e90: 2c 37 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20  ,7 };..         
0ea0: 20 20 20 61 64 6c 65 72 2e 55 70 64 61 74 65 28     adler.Update(
0eb0: 64 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20  data);..        
0ec0: 20 20 20 20 41 73 73 65 72 74 2e 41 72 65 45 71      Assert.AreEq
0ed0: 75 61 6c 28 20 30 78 35 62 30 30 31 64 2c 20 61  ual( 0x5b001d, a
0ee0: 64 6c 65 72 2e 56 61 6c 75 65 20 20 29 3b 0d 0a  dler.Value  );..
0ef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64  ..            ad
0f00: 6c 65 72 20 3d 20 6e 65 77 20 41 64 6c 65 72 43  ler = new AdlerC
0f10: 68 65 63 6b 73 75 6d 28 29 3b 0d 0a 20 20 20 20  hecksum();..    
0f20: 20 20 20 20 20 20 20 20 61 64 6c 65 72 2e 55 70          adler.Up
0f30: 64 61 74 65 28 22 70 65 6e 67 75 69 6e 22 29 3b  date("penguin");
0f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73  ..            As
0f50: 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28 30 78  sert.AreEqual(0x
0f60: 30 62 63 66 30 32 66 36 2c 20 61 64 6c 65 72 2e  0bcf02f6, adler.
0f70: 56 61 6c 75 65 20 29 3b 0d 0a 0d 0a 20 20 20 20  Value );....    
0f80: 20 20 20 20 20 20 20 20 61 64 6c 65 72 20 3d 20          adler = 
0f90: 6e 65 77 20 41 64 6c 65 72 43 68 65 63 6b 73 75  new AdlerChecksu
0fa0: 6d 28 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  m(1);..         
0fb0: 20 20 20 61 64 6c 65 72 2e 55 70 64 61 74 65 28     adler.Update(
0fc0: 22 70 65 6e 67 75 69 6e 22 29 3b 0d 0a 20 20 20  "penguin");..   
0fd0: 20 20 20 20 20 20 20 20 20 41 73 73 65 72 74 2e           Assert.
0fe0: 41 72 65 45 71 75 61 6c 28 30 78 30 62 64 36 30  AreEqual(0x0bd60
0ff0: 32 66 37 2c 20 61 64 6c 65 72 2e 56 61 6c 75 65  2f7, adler.Value
1000: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7d 0d  );....        }.
1010: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
1020: 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ion..    }....  
1030: 20 20 5b 54 65 73 74 46 69 78 74 75 72 65 5d 0d    [TestFixture].
1040: 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73  .    public clas
1050: 73 20 49 6e 66 6f 54 65 73 74 73 0d 0a 20 20 20  s InfoTests..   
1060: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
1070: 69 6f 6e 20 49 6e 66 6f 20 74 65 73 74 73 0d 0a  ion Info tests..
1080: 20 20 20 20 20 20 20 20 5b 54 65 73 74 5d 0d 0a          [Test]..
1090: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
10a0: 6f 69 64 20 49 6e 66 6f 5f 56 65 72 73 69 6f 6e  oid Info_Version
10b0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
10c0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 66 6f 20             Info 
10d0: 69 6e 66 6f 20 3d 20 6e 65 77 20 49 6e 66 6f 28  info = new Info(
10e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10f0: 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28  Assert.AreEqual(
1100: 22 31 2e 32 2e 31 31 22 2c 20 49 6e 66 6f 2e 56  "1.2.11", Info.V
1110: 65 72 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  ersion);..      
1120: 20 20 20 20 20 20 41 73 73 65 72 74 2e 41 72 65        Assert.Are
1130: 45 71 75 61 6c 28 33 32 2c 20 69 6e 66 6f 2e 53  Equal(32, info.S
1140: 69 7a 65 4f 66 55 49 6e 74 29 3b 0d 0a 20 20 20  izeOfUInt);..   
1150: 20 20 20 20 20 20 20 20 20 41 73 73 65 72 74 2e           Assert.
1160: 41 72 65 45 71 75 61 6c 28 33 32 2c 20 69 6e 66  AreEqual(32, inf
1170: 6f 2e 53 69 7a 65 4f 66 55 4c 6f 6e 67 29 3b 0d  o.SizeOfULong);.
1180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73  .            Ass
1190: 65 72 74 2e 41 72 65 45 71 75 61 6c 28 33 32 2c  ert.AreEqual(32,
11a0: 20 69 6e 66 6f 2e 53 69 7a 65 4f 66 50 6f 69 6e   info.SizeOfPoin
11b0: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter);..         
11c0: 20 20 20 41 73 73 65 72 74 2e 41 72 65 45 71 75     Assert.AreEqu
11d0: 61 6c 28 33 32 2c 20 69 6e 66 6f 2e 53 69 7a 65  al(32, info.Size
11e0: 4f 66 4f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20  OfOffset);..    
11f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
1200: 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
1210: 0d 0a 0d 0a 20 20 20 20 5b 54 65 73 74 46 69 78  ....    [TestFix
1220: 74 75 72 65 5d 0d 0a 20 20 20 20 70 75 62 6c 69  ture]..    publi
1230: 63 20 63 6c 61 73 73 20 44 65 66 6c 61 74 65 49  c class DeflateI
1240: 6e 66 6c 61 74 65 54 65 73 74 73 0d 0a 20 20 20  nflateTests..   
1250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
1260: 69 6f 6e 20 44 65 66 6c 61 74 65 20 74 65 73 74  ion Deflate test
1270: 73 0d 0a 20 20 20 20 20 20 20 20 5b 54 65 73 74  s..        [Test
1280: 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ]..        publi
1290: 63 20 76 6f 69 64 20 44 65 66 6c 61 74 65 5f 49  c void Deflate_I
12a0: 6e 69 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  nit()..        {
12b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73  ..            us
12c0: 69 6e 67 20 28 44 65 66 6c 61 74 65 72 20 64 65  ing (Deflater de
12d0: 66 20 3d 20 6e 65 77 20 44 65 66 6c 61 74 65 72  f = new Deflater
12e0: 28 43 6f 6d 70 72 65 73 73 4c 65 76 65 6c 2e 44  (CompressLevel.D
12f0: 65 66 61 75 6c 74 29 29 0d 0a 20 20 20 20 20 20  efault))..      
1300: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1310: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1320: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  }....        pri
1330: 76 61 74 65 20 41 72 72 61 79 4c 69 73 74 20 63  vate ArrayList c
1340: 6f 6d 70 72 65 73 73 65 64 44 61 74 61 20 3d 20  ompressedData = 
1350: 6e 65 77 20 41 72 72 61 79 4c 69 73 74 28 29 3b  new ArrayList();
1360: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1370: 65 20 75 69 6e 74 20 61 64 6c 65 72 31 3b 0d 0a  e uint adler1;..
1380: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1390: 65 20 41 72 72 61 79 4c 69 73 74 20 75 6e 63 6f  e ArrayList unco
13a0: 6d 70 72 65 73 73 65 64 44 61 74 61 20 3d 20 6e  mpressedData = n
13b0: 65 77 20 41 72 72 61 79 4c 69 73 74 28 29 3b 0d  ew ArrayList();.
13c0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
13d0: 20 75 69 6e 74 20 61 64 6c 65 72 32 3b 0d 0a 0d   uint adler2;...
13e0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
13f0: 76 6f 69 64 20 43 44 61 74 61 41 76 61 69 6c 28  void CDataAvail(
1400: 62 79 74 65 5b 5d 20 64 61 74 61 2c 20 69 6e 74  byte[] data, int
1410: 20 73 74 61 72 74 49 6e 64 65 78 2c 20 69 6e 74   startIndex, int
1420: 20 63 6f 75 6e 74 29 0d 0a 20 20 20 20 20 20 20   count)..       
1430: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1440: 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 30 3b 20  for (int i = 0; 
1450: 69 20 3c 20 63 6f 75 6e 74 3b 20 2b 2b 69 29 0d  i < count; ++i).
1460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1470: 20 63 6f 6d 70 72 65 73 73 65 64 44 61 74 61 2e   compressedData.
1480: 41 64 64 28 64 61 74 61 5b 69 2b 73 74 61 72 74  Add(data[i+start
1490: 49 6e 64 65 78 5d 29 3b 0d 0a 20 20 20 20 20 20  Index]);..      
14a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5b    }....        [
14b0: 54 65 73 74 5d 0d 0a 20 20 20 20 20 20 20 20 70  Test]..        p
14c0: 75 62 6c 69 63 20 76 6f 69 64 20 44 65 66 6c 61  ublic void Defla
14d0: 74 65 5f 43 6f 6d 70 72 65 73 73 28 29 0d 0a 20  te_Compress().. 
14e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14f0: 20 20 20 20 20 20 63 6f 6d 70 72 65 73 73 65 64        compressed
1500: 44 61 74 61 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d  Data.Clear();...
1510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
1520: 65 5b 5d 20 74 65 73 74 44 61 74 61 20 3d 20 6e  e[] testData = n
1530: 65 77 20 62 79 74 65 5b 33 35 30 30 30 5d 3b 0d  ew byte[35000];.
1540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
1550: 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c   (int i = 0; i <
1560: 20 74 65 73 74 44 61 74 61 2e 4c 65 6e 67 74 68   testData.Length
1570: 3b 20 2b 2b 69 29 0d 0a 20 20 20 20 20 20 20 20  ; ++i)..        
1580: 20 20 20 20 20 20 20 20 74 65 73 74 44 61 74 61          testData
1590: 5b 69 5d 20 3d 20 35 3b 0d 0a 0d 0a 20 20 20 20  [i] = 5;....    
15a0: 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 44          using (D
15b0: 65 66 6c 61 74 65 72 20 64 65 66 20 3d 20 6e 65  eflater def = ne
15c0: 77 20 44 65 66 6c 61 74 65 72 28 28 43 6f 6d 70  w Deflater((Comp
15d0: 72 65 73 73 4c 65 76 65 6c 29 35 29 29 0d 0a 20  ressLevel)5)).. 
15e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
1600: 66 2e 44 61 74 61 41 76 61 69 6c 61 62 6c 65 20  f.DataAvailable 
1610: 2b 3d 20 6e 65 77 20 44 61 74 61 41 76 61 69 6c  += new DataAvail
1620: 61 62 6c 65 48 61 6e 64 6c 65 72 28 43 44 61 74  ableHandler(CDat
1630: 61 41 76 61 69 6c 29 3b 0d 0a 20 20 20 20 20 20  aAvail);..      
1640: 20 20 20 20 20 20 20 20 20 20 64 65 66 2e 41 64            def.Ad
1650: 64 28 74 65 73 74 44 61 74 61 29 3b 0d 0a 20 20  d(testData);..  
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
1670: 66 2e 46 69 6e 69 73 68 28 29 3b 0d 0a 20 20 20  f.Finish();..   
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 6c               adl
1690: 65 72 31 20 3d 20 64 65 66 2e 43 68 65 63 6b 73  er1 = def.Checks
16a0: 75 6d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  um;..           
16b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
16c0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16d0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  n....        #re
16e0: 67 69 6f 6e 20 49 6e 66 6c 61 74 65 20 74 65 73  gion Inflate tes
16f0: 74 73 0d 0a 20 20 20 20 20 20 20 20 5b 54 65 73  ts..        [Tes
1700: 74 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  t]..        publ
1710: 69 63 20 76 6f 69 64 20 49 6e 66 6c 61 74 65 5f  ic void Inflate_
1720: 49 6e 69 74 28 29 0d 0a 20 20 20 20 20 20 20 20  Init()..        
1730: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  {..            u
1740: 73 69 6e 67 20 28 49 6e 66 6c 61 74 65 72 20 69  sing (Inflater i
1750: 6e 66 20 3d 20 6e 65 77 20 49 6e 66 6c 61 74 65  nf = new Inflate
1760: 72 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  r())..          
1770: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1780: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
1790: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
17a0: 20 76 6f 69 64 20 44 44 61 74 61 41 76 61 69 6c   void DDataAvail
17b0: 28 62 79 74 65 5b 5d 20 64 61 74 61 2c 20 69 6e  (byte[] data, in
17c0: 74 20 73 74 61 72 74 49 6e 64 65 78 2c 20 69 6e  t startIndex, in
17d0: 74 20 63 6f 75 6e 74 29 0d 0a 20 20 20 20 20 20  t count)..      
17e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17f0: 20 66 6f 72 20 28 69 6e 74 20 69 20 3d 20 30 3b   for (int i = 0;
1800: 20 69 20 3c 20 63 6f 75 6e 74 3b 20 2b 2b 69 29   i < count; ++i)
1810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1820: 20 20 75 6e 63 6f 6d 70 72 65 73 73 65 64 44 61    uncompressedDa
1830: 74 61 2e 41 64 64 28 64 61 74 61 5b 69 2b 73 74  ta.Add(data[i+st
1840: 61 72 74 49 6e 64 65 78 5d 29 3b 0d 0a 20 20 20  artIndex]);..   
1850: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1860: 20 20 5b 54 65 73 74 5d 0d 0a 20 20 20 20 20 20    [Test]..      
1870: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 49 6e    public void In
1880: 66 6c 61 74 65 5f 45 78 70 61 6e 64 28 29 0d 0a  flate_Expand()..
1890: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18a0: 20 20 20 20 20 20 20 75 6e 63 6f 6d 70 72 65 73         uncompres
18b0: 73 65 64 44 61 74 61 2e 43 6c 65 61 72 28 29 3b  sedData.Clear();
18c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18d0: 75 73 69 6e 67 20 28 49 6e 66 6c 61 74 65 72 20  using (Inflater 
18e0: 69 6e 66 20 3d 20 6e 65 77 20 49 6e 66 6c 61 74  inf = new Inflat
18f0: 65 72 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  er())..         
1900: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1910: 20 20 20 20 20 20 69 6e 66 2e 44 61 74 61 41 76        inf.DataAv
1920: 61 69 6c 61 62 6c 65 20 2b 3d 20 6e 65 77 20 44  ailable += new D
1930: 61 74 61 41 76 61 69 6c 61 62 6c 65 48 61 6e 64  ataAvailableHand
1940: 6c 65 72 28 44 44 61 74 61 41 76 61 69 6c 29 3b  ler(DDataAvail);
1950: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1960: 20 20 69 6e 66 2e 41 64 64 28 28 62 79 74 65 5b    inf.Add((byte[
1970: 5d 29 63 6f 6d 70 72 65 73 73 65 64 44 61 74 61  ])compressedData
1980: 2e 54 6f 41 72 72 61 79 28 74 79 70 65 6f 66 28  .ToArray(typeof(
1990: 62 79 74 65 29 29 29 3b 0d 0a 20 20 20 20 20 20  byte)));..      
19a0: 20 20 20 20 20 20 20 20 20 20 69 6e 66 2e 46 69            inf.Fi
19b0: 6e 69 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20  nish();..       
19c0: 20 20 20 20 20 20 20 20 20 61 64 6c 65 72 32 20           adler2 
19d0: 3d 20 69 6e 66 2e 43 68 65 63 6b 73 75 6d 3b 0d  = inf.Checksum;.
19e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
1a00: 72 74 2e 41 72 65 45 71 75 61 6c 28 20 61 64 6c  rt.AreEqual( adl
1a10: 65 72 31 2c 20 61 64 6c 65 72 32 20 29 3b 0d 0a  er1, adler2 );..
1a20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
1a40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 5b 54 65 73     }....    [Tes
1a50: 74 46 69 78 74 75 72 65 5d 0d 0a 20 20 20 20 70  tFixture]..    p
1a60: 75 62 6c 69 63 20 63 6c 61 73 73 20 47 5a 69 70  ublic class GZip
1a70: 53 74 72 65 61 6d 54 65 73 74 73 0d 0a 20 20 20  StreamTests..   
1a80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
1a90: 69 6f 6e 20 47 5a 69 70 53 74 72 65 61 6d 20 74  ion GZipStream t
1aa0: 65 73 74 0d 0a 20 20 20 20 20 20 20 20 5b 54 65  est..        [Te
1ab0: 73 74 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62  st]..        pub
1ac0: 6c 69 63 20 76 6f 69 64 20 47 5a 69 70 53 74 72  lic void GZipStr
1ad0: 65 61 6d 5f 57 72 69 74 65 52 65 61 64 28 29 0d  eam_WriteRead().
1ae0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1af0: 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 47          using (G
1b00: 5a 69 70 53 74 72 65 61 6d 20 67 7a 4f 75 74 20  ZipStream gzOut 
1b10: 3d 20 6e 65 77 20 47 5a 69 70 53 74 72 65 61 6d  = new GZipStream
1b20: 28 22 67 7a 73 74 72 65 61 6d 2e 67 7a 22 2c 20  ("gzstream.gz", 
1b30: 43 6f 6d 70 72 65 73 73 4c 65 76 65 6c 2e 42 65  CompressLevel.Be
1b40: 73 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  st))..          
1b50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b60: 20 20 20 20 20 42 69 6e 61 72 79 57 72 69 74 65       BinaryWrite
1b70: 72 20 77 72 69 74 65 72 20 3d 20 6e 65 77 20 42  r writer = new B
1b80: 69 6e 61 72 79 57 72 69 74 65 72 28 67 7a 4f 75  inaryWriter(gzOu
1b90: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
1ba0: 20 20 20 20 20 77 72 69 74 65 72 2e 57 72 69 74       writer.Writ
1bb0: 65 28 22 68 69 20 74 68 65 72 65 22 29 3b 0d 0a  e("hi there");..
1bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd0: 77 72 69 74 65 72 2e 57 72 69 74 65 28 4d 61 74  writer.Write(Mat
1be0: 68 2e 50 49 29 3b 0d 0a 20 20 20 20 20 20 20 20  h.PI);..        
1bf0: 20 20 20 20 20 20 20 20 77 72 69 74 65 72 2e 57          writer.W
1c00: 72 69 74 65 28 34 32 29 3b 0d 0a 20 20 20 20 20  rite(42);..     
1c10: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1c20: 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 47          using (G
1c30: 5a 69 70 53 74 72 65 61 6d 20 67 7a 49 6e 20 3d  ZipStream gzIn =
1c40: 20 6e 65 77 20 47 5a 69 70 53 74 72 65 61 6d 28   new GZipStream(
1c50: 22 67 7a 73 74 72 65 61 6d 2e 67 7a 22 29 29 0d  "gzstream.gz")).
1c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c80: 42 69 6e 61 72 79 52 65 61 64 65 72 20 72 65 61  BinaryReader rea
1c90: 64 65 72 20 3d 20 6e 65 77 20 42 69 6e 61 72 79  der = new Binary
1ca0: 52 65 61 64 65 72 28 67 7a 49 6e 29 3b 0d 0a 20  Reader(gzIn);.. 
1cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1cc0: 74 72 69 6e 67 20 73 20 3d 20 72 65 61 64 65 72  tring s = reader
1cd0: 2e 52 65 61 64 53 74 72 69 6e 67 28 29 3b 0d 0a  .ReadString();..
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf0: 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c 28  Assert.AreEqual(
1d00: 22 68 69 20 74 68 65 72 65 22 2c 73 29 3b 0d 0a  "hi there",s);..
1d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d20: 64 6f 75 62 6c 65 20 64 20 3d 20 72 65 61 64 65  double d = reade
1d30: 72 2e 52 65 61 64 44 6f 75 62 6c 65 28 29 3b 0d  r.ReadDouble();.
1d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d50: 20 41 73 73 65 72 74 2e 41 72 65 45 71 75 61 6c   Assert.AreEqual
1d60: 28 4d 61 74 68 2e 50 49 2c 20 64 29 3b 0d 0a 20  (Math.PI, d);.. 
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1d80: 6e 74 20 69 20 3d 20 72 65 61 64 65 72 2e 52 65  nt i = reader.Re
1d90: 61 64 49 6e 74 33 32 28 29 3b 0d 0a 20 20 20 20  adInt32();..    
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
1db0: 72 74 2e 41 72 65 45 71 75 61 6c 28 34 32 2c 69  rt.AreEqual(42,i
1dc0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1dd0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  }....        }..
1de0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1df0: 6f 6e 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 23 65 6e  on...}..}....#en
1e00: 64 69 66 0d 0a                                   dif..