public void TestBase64StreamWrite()
        {
            byte[] data = new byte[256];
            for (int i = 0; i < data.Length; i++)
                data[i] = (byte)i;

            using (Stream mem = new MemoryStream())
            {
                using (Stream io = new Base64Stream(new NonClosingStream(mem), CryptoStreamMode.Write))
                    io.Write(data, 0, data.Length);


                Assert.AreEqual(((data.Length + 2) / 3 * 4), mem.Position);
                mem.Position = 0;
                string test = new StreamReader(mem).ReadToEnd();
                Assert.AreEqual(Convert.ToBase64String(data), test);
            }
        }
        public void TestBase64StreamRead()
        {
            string encoded = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/9w==";
            byte[] data = Convert.FromBase64String(encoded);
            byte[] test;
            using (Stream io = new Base64Stream(new MemoryStream(Encoding.ASCII.GetBytes(encoded)), CryptoStreamMode.Read))
                test = IOStream.Read(io, data.Length);
            Assert.AreEqual(data, test);

            using (Stream io = new Base64Stream(new MemoryStream(Encoding.ASCII.GetBytes(encoded.TrimEnd('='))), CryptoStreamMode.Read))
                test = IOStream.Read(io, data.Length);
            Assert.AreEqual(data, test);
        }