public void ReadFromStorageTest()
        {
            IStorage storage = new RandomAccessFile(File.Open("ReadFromStorage", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None));

            int size = 8;
            byte[] data = new byte[] { byte.MaxValue, byte.MinValue };
            ReadFromStorageTestAssert(storage, size, data);

            int size2 = 1000000;
            byte[] data2 = new byte[] { };
            ReadFromStorageTestAssert(storage, size2, data2);

            try
            {
                ReadFromStorageTestAssert(storage, -1, data2);
                Assert.Fail("Should throw exception");
            }
            catch (InvalidUserHeaderException) { }

            int size3 = 10;
            byte[] data3 = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
            ReadFromStorageTestAssert(storage, size3, data3);

            storage.Close();
        }
        public void WriteReadStorageTest()
        {
            IStorage storage = new RandomAccessFile(File.Open("WriteReadStorageTest", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None));

            WriteReadStorageTestAssert(10, new byte[] { 1, 2, 3, 4, 5, 6, 7 }, storage);
            WriteReadStorageTestAssert(10, new byte[] { }, storage);
            WriteReadStorageTestAssert(10, new byte[] { byte.MaxValue, byte.MinValue }, storage);
            try {
                WriteReadStorageTestAssert(5, new byte[] { 1, 2, 3, 4, 5, 6, 7 }, storage);
                Assert.Fail("Should throw exception");
            }catch (SizeTooSmallException) { }

            storage.Close();
        }