public virtual void EncryptionAlgorithm_InputStreamThenOuputStreamProducesEquivalentData(Stream testData) { var originalDataStream = new MemoryStream(); testData.CopyTo(originalDataStream); originalDataStream.Position = 0; var options = GenerateEncryptionOptions(EncryptionType); EncryptionAlgorithm algorithm = GetAlgorithm(options, "~password!!"); var encryptedMemoryStream = new MemoryStream(); using (Stream encryptorStream = algorithm.CreateOutputStream(encryptedMemoryStream, true, 4096)) { originalDataStream.CopyTo(encryptorStream); } var decryptedData = new MemoryStream(); encryptedMemoryStream.Position = 0; using (Stream decrytorStream = algorithm.CreateInputStream(encryptedMemoryStream, true)) { decrytorStream.CopyTo(decryptedData); } Assert.AreEqual(originalDataStream.Length, decryptedData.Length); CollectionAssert.AreEqual(originalDataStream.ToArray(), decryptedData.ToArray()); }