public void FileIsCopiedCorrectlyForNumberOfBitsBetween8And32() { var stopWatch = new Stopwatch(); using (var fileReader = new FileReader(filePathSource, new Buffer())) { using (var fileWriter = new FileWriter(filePathDestination, new Buffer())) { stopWatch.Start(); while (!fileReader.ReachedEndOfFile) { var random = new Random(); var numberOfBits = fileReader.BitsLeft < 32 ? (byte)fileReader.BitsLeft : (byte)random.Next(8, 32); var readStuff = fileReader.ReadBits(numberOfBits); fileWriter.WriteValueOnBits(readStuff, numberOfBits); } stopWatch.Stop(); } } Console.WriteLine($"File copying in '{TestMethods.GetCurrentMethodName()}' took {stopWatch.ElapsedMilliseconds} ms for {originalFileSizeInBytes} bytes"); Assert.IsTrue(TestMethods.FilesHaveTheSameContent(filePathSource, filePathDestination)); }