public void TryReadWriteCycleWithAllBlocksOnDisk() { VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); for (int i = 0; i < virtualDisk.NumberOfBlocks; i++) { byte[] bytesToWrite = new byte[virtualDisk.BlockSizeInBytes]; byte byteToPutInEveryPlaceInArray = (byte)i; for (int j = 0; j < virtualDisk.BlockSizeInBytes; j++) { bytesToWrite[j] = byteToPutInEveryPlaceInArray; } virtualDisk.WriteBytesToBlock(i, bytesToWrite); } for (int i = 0; i < virtualDisk.NumberOfBlocks; i++) { byte[] bytesRead = virtualDisk.ReadAllBytesFromBlock(i); byte byteThatMustBeInEveryPlaceInArray = (byte)i; Assert.AreEqual(virtualDisk.BlockSizeInBytes, bytesRead.Length); for (int j = 0; j < virtualDisk.BlockSizeInBytes; j++) { Assert.AreEqual(byteThatMustBeInEveryPlaceInArray, bytesRead[j]); } } }
public void MakeSureYouCannotReadTooMuchDataFromDisk() { VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate() { virtualDisk.ReadBytesFromBlock(0, 0, virtualDisk.BlockSizeInBytes + 1); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate() { virtualDisk.ReadBytesFromBlock(0, 3, virtualDisk.BlockSizeInBytes - 2); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate() { virtualDisk.ReadBytesFromBlock(0, int.MaxValue, 0); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate() { virtualDisk.ReadBytesFromBlock(0, 0, int.MaxValue); }); }
public void MakeSureTheBlockChecksArgumentsBeforeWritingAnything() { var virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); DiskBlock block = new DiskBlock(virtualDisk, 10, 0, 0); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentNullException>( delegate { block.WriteBytes(null, 10, 11); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate { block.WriteBytes(new byte[2], 10, 11); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { block.WriteBytes(new byte[2], -10, 11); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { block.WriteBytes(new byte[2], 10, -1); }); }
public void TryWriteReadCycleForABuffer() { var virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); DiskBlock block = new DiskBlock(virtualDisk, 10, 0, 0); for (int i = 0; i < 2048 / 4; i++) { byte[] fourByteBlock = new byte[4]; MemoryStream writerStream = new MemoryStream(fourByteBlock); BinaryWriter writer = new BinaryWriter(writerStream); writer.Write(i); block.WriteBytes(fourByteBlock, 0, fourByteBlock.Length); } byte[] allBytes = block.ReadAll(); MemoryStream readerStream = new MemoryStream(allBytes); BinaryReader reader = new BinaryReader(readerStream); for (int i = 0; i < 2048 / 4; i++) { Assert.AreEqual(i, reader.ReadInt32()); } Assert.IsFalse(block.CanAcceptBytesAtCurrentPosition); }
public void MakeSureYouCannotWriteTooMuchDataIntoDiskBlock() { VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); byte[] bytesToWrite = new byte[virtualDisk.BlockSizeInBytes * 2]; ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>( delegate() { virtualDisk.WriteBytesToBlock(0, bytesToWrite); }); }
public void MakeSureVirtualDisksCorrectlyInitializeThemselvesFromSuitableStreams() { VirtualDiskWithItsStream virtualDiskConstructionResult = VirtualDiskTestFactory.ConstructDefaultTestDiskWithStream(); var virtualDisk = virtualDiskConstructionResult.Disk; Assert.AreEqual(VirtualDiskTestFactory.DefaultDiskBlockSize, virtualDisk.BlockSizeInBytes); Assert.AreEqual(VirtualDiskTestFactory.DefaultDiskSize, virtualDisk.DiskSizeInBytes); VirtualDisk diskRecreatedFromTheSameStream = VirtualDisk.CreateFromStream(virtualDiskConstructionResult.BackingStream); Assert.AreEqual(virtualDisk.BlockSizeInBytes, diskRecreatedFromTheSameStream.BlockSizeInBytes); Assert.AreEqual(VirtualDiskTestFactory.DefaultDiskSize, diskRecreatedFromTheSameStream.DiskSizeInBytes); }
public void MakeSureThePositionChangesAsYouAreWritingToTheBlock() { var virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); DiskBlock block = new DiskBlock(virtualDisk, 10, 0, 0); Assert.AreEqual(0, block.Position); block.WriteBytes(new byte[15], 0, 15); Assert.AreEqual(15, block.Position); // после последнего записанного байта. block.WriteBytes(new byte[15], 9, 6); Assert.AreEqual(21, block.Position); // после последнего записанного байта. }
public void MakeSureBlockConstructionIsPossibleOnlyWithSaneArguments() { var virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); DiskBlock block = new DiskBlock(virtualDisk, 10, 0, 0); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { new DiskBlock(virtualDisk, 100000000, 0, 0); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentNullException>( delegate { new DiskBlock(null, 10, 0, 0); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { new DiskBlock(virtualDisk, -2, 0, 0); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { new DiskBlock(virtualDisk, 15, virtualDisk.BlockSizeInBytes * 5, 0); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { new DiskBlock(virtualDisk, 15, virtualDisk.BlockSizeInBytes, 56789); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate { new DiskBlock(virtualDisk, 15, virtualDisk.BlockSizeInBytes, -56789); }); }
public void TryReadingFromNonExistingBlocksOnDisk() { VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.ReadAllBytesFromBlock(int.MaxValue); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.ReadAllBytesFromBlock(virtualDisk.NumberOfBlocks); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.ReadAllBytesFromBlock(-3); }); }
public void TryWritingToNonExistingBlocksOnDisk() { VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk(); byte[] bytesToWrite = new byte[100]; ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.WriteBytesToBlock(-2, bytesToWrite); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.WriteBytesToBlock(virtualDisk.NumberOfBlocks, bytesToWrite); }); ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentOutOfRangeException>( delegate() { virtualDisk.WriteBytesToBlock(int.MaxValue, bytesToWrite); }); }