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 MakeSureYouCannotWriteTooMuchDataIntoDiskBlock()
        {
            VirtualDisk virtualDisk = VirtualDiskTestFactory.ConstructDefaultTestDisk();

            byte[] bytesToWrite = new byte[virtualDisk.BlockSizeInBytes * 2];

            ExceptionAssert.MakeSureExceptionIsRaisedBy <ArgumentException>(
                delegate()
            {
                virtualDisk.WriteBytesToBlock(0, bytesToWrite);
            });
        }
        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);
            });
        }