Changeset 1106 for trunk/DevTestMethods


Ignore:
Timestamp:
Jan 26, 2010, 12:32:13 PM (12 years ago)
Author:
Matthäus Wander
Message:

CStream finished, ready for deployment:

  • added CStream as exchange class
  • removed finalizer, relying on FileOptions.DeleteOnClose now
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DevTestMethods/CrypPluginBase/CStream.cs

    r1101 r1106  
    109109            // put 6 bytes
    110110            writer.Write(ShortData);
    111             CStream reader = writer.CreateReader();
     111            CStreamReader reader = writer.CStream.CreateReader();
    112112
    113113            // length==6, position==0
     
    156156        {
    157157            CStreamWriter writer = new CStreamWriter();
    158             CStream reader = writer.CreateReader();
     158            CStreamReader reader = writer.CStream.CreateReader();
    159159
    160160            // write, not swapped
     
    164164            // read a few bytes, but there are still a few bytes left
    165165            byte[] buf = new byte[ShortData.Length];
    166             reader.Read(buf, 0, buf.Length);
     166            reader.Read(buf);
    167167            Assert.IsTrue(reader.Position > 0);
    168168            Assert.IsTrue(reader.Length > reader.Position);
     
    210210
    211211        [TestMethod]
     212        public void TestDisposedExceptionWithMem()
     213        {
     214            CStreamWriter writer = new CStreamWriter();
     215
     216            // write not, swapped
     217            writer.Write(LongData);
     218            Assert.IsFalse(writer.IsSwapped);
     219
     220            // try to read
     221            CStreamReader reader = writer.CStream.CreateReader();
     222            byte[] buf = new byte[ShortData.Length];
     223            {
     224                int read = reader.Read(buf);
     225                Assert.AreEqual(ShortData.Length, read);
     226            }
     227
     228            // dispose CStream and try to read again, assert error
     229            writer.Dispose();
     230            {
     231                try
     232                {
     233                    int read = reader.Read(buf);
     234                    Assert.Fail("unreachable code, missed exception");
     235                }
     236                catch (ObjectDisposedException e)
     237                {
     238                    // everything ok
     239                }
     240            }
     241        }
     242
     243        [TestMethod]
     244        public void TestDisposedExceptionWithSwap()
     245        {
     246            CStreamWriter writer = new CStreamWriter();
     247
     248            writer.Write(LongData);
     249            writer.Write(LongData);
     250            writer.Write(LongData);
     251            Assert.IsTrue(writer.IsSwapped);
     252
     253            CStreamReader reader = writer.CStream.CreateReader();
     254
     255            // dispose CStream and try to read, assert error
     256            writer.Dispose();
     257            try
     258            {
     259                byte[] buf = new byte[1024];
     260                int read = reader.Read(buf);
     261                Assert.Fail("unreachable code, missed exception");
     262            }
     263            catch (ObjectDisposedException e)
     264            {
     265                // everything ok
     266            }
     267        }
     268
     269        [TestMethod]
    212270        public void TestDestructorWithReader()
    213271        {
     
    218276
    219277            // read something and assert there's more
    220             CStream reader = writer.CreateReader();
     278            CStreamReader reader = writer.CStream.CreateReader();
    221279            byte[] buf = new byte[ShortData.Length];
    222             reader.Read(buf, 0, buf.Length);
     280            reader.Read(buf);
    223281            Assert.IsTrue(reader.Position > 0);
    224282            Assert.IsTrue(reader.Length > reader.Position);
     
    270328            writer.Close();
    271329
    272             CStream reader = writer.CreateReader();
     330            CStreamReader reader = writer.CStream.CreateReader();
    273331            byte[] bigbuf = reader.ReadFully();
    274332
    275333            Assert.AreEqual(LongData.Length * 3, bigbuf.Length);
     334        }
     335
     336        [TestMethod]
     337        public void TestSeek()
     338        {
     339            CStreamWriter writer = new CStreamWriter();
     340            writer.Write(LongData);
     341            writer.Close();
     342
     343            CStreamReader reader = writer.CStream.CreateReader();
     344            byte[] buf = new byte[1024];
     345
     346            { // seek 5 bytes before EOF, attempt to read much, get 5 bytes
     347                reader.Seek(LongData.Length - 5, SeekOrigin.Begin);
     348                int read = reader.Read(buf, 0, int.MaxValue);
     349                Assert.AreEqual(5, read);
     350            }
     351
     352            { // read EOF
     353                int read = reader.Read(buf, 0, int.MaxValue);
     354                Assert.AreEqual(0, read);
     355            }
     356
     357            { // seek beyond stream length, read EOF
     358                reader.Seek(LongData.Length * 3, SeekOrigin.Begin);
     359                int read = reader.Read(buf, 0, int.MaxValue);
     360                Assert.AreEqual(0, read);
     361            }
     362
     363            { // seek back, read again
     364                reader.Seek(LongData.Length - 5, SeekOrigin.Begin);
     365                int read = reader.Read(buf, 0, int.MaxValue);
     366                Assert.AreEqual(5, read);
     367            }
     368        }
     369
     370        [TestMethod]
     371        public void TestSeekSwap()
     372        {
     373            CStreamWriter writer = new CStreamWriter();
     374            writer.Write(LongData);
     375
     376            CStreamReader reader = writer.CStream.CreateReader();
     377            byte[] buf = new byte[1024];
     378
     379            // seek 5 bytes before EOF
     380            reader.Seek(LongData.Length - 5, SeekOrigin.Begin);
     381
     382            // write more, ensure swap
     383            writer.Write(LongData);
     384            writer.Write(LongData);
     385            Assert.IsTrue(writer.IsSwapped);
     386
     387            { // seek somewhere to the middle, read
     388                reader.Seek(LongData.Length * 2, SeekOrigin.Begin);
     389                int read = reader.Read(buf);
     390                Assert.AreEqual(buf.Length, read);
     391            }
     392
     393            { // seek beyond length, assert still open, get EOF
     394                reader.Seek(LongData.Length * 3, SeekOrigin.Current);
     395                Assert.IsFalse(writer.IsClosed);
     396                int read = reader.Read(buf);
     397                Assert.AreEqual(0, read);
     398            }
    276399        }
    277400    }
Note: See TracChangeset for help on using the changeset viewer.