Example #1
0
        public void TestBase64Decode()
        {
            using (var original = new MemoryStream()) {
                using (var file = File.OpenRead("../../TestData/encoders/photo.jpg"))
                    file.CopyTo(original, 4096);

                using (var decoded = new MemoryStream()) {
                    using (var file = File.OpenRead("../../TestData/encoders/photo.b64")) {
                        using (var filtered = new FilteredStream(file)) {
                            filtered.Add(DecoderFilter.Create(ContentEncoding.Base64));

                            filtered.CopyTo(decoded, 4096);
                        }
                    }

                    var buf0 = original.GetBuffer();
                    var buf1 = decoded.GetBuffer();
                    int n    = (int)original.Length;

                    Assert.AreEqual(original.Length, decoded.Length, "Decoded length is incorrect.");

                    for (int i = 0; i < n; i++)
                    {
                        Assert.AreEqual(buf0[i], buf1[i], "The byte at offset {0} does not match.", i);
                    }
                }
            }
        }
Example #2
0
        public void TestBase64Decode()
        {
            using (var original = new MemoryStream()) {
                using (var file = File.OpenRead("../../TestData/encoders/photo.jpg"))
                    file.CopyTo(original, 4096);

                using (var decoded = new MemoryStream()) {
                    using (var file = File.OpenRead("../../TestData/encoders/photo.b64")) {
                        using (var filtered = new FilteredStream(file)) {
                            filtered.Add(DecoderFilter.Create(ContentEncoding.Base64));
                            filtered.CopyTo(decoded, 4096);
                        }
                    }

                    var buf0 = original.GetBuffer();
                    var buf1 = decoded.GetBuffer();
                    int n    = (int)original.Length;

                    Assert.AreEqual(original.Length, decoded.Length, "Decoded length is incorrect.");

                    for (int i = 0; i < n; i++)
                    {
                        Assert.AreEqual(buf0[i], buf1[i], "The byte at offset {0} does not match.", i);
                    }
                }
            }

            var decoder = new Base64Decoder();
            var output  = new byte[4096];

            Assert.AreEqual(ContentEncoding.Base64, decoder.Encoding);

            for (int i = 0; i < base64EncodedPatterns.Length; i++)
            {
                decoder.Reset();
                var buf    = Encoding.ASCII.GetBytes(base64EncodedPatterns[i]);
                int n      = decoder.Decode(buf, 0, buf.Length, output);
                var actual = Encoding.ASCII.GetString(output, 0, n);
                Assert.AreEqual(base64DecodedPatterns[i], actual, "Failed to decode base64EncodedPatterns[{0}]", i);
            }

            for (int i = 0; i < base64EncodedLongPatterns.Length; i++)
            {
                decoder.Reset();
                var buf = Encoding.ASCII.GetBytes(base64EncodedLongPatterns[i]);
                int n   = decoder.Decode(buf, 0, buf.Length, output);

                for (int j = 0; j < n; j++)
                {
                    Assert.AreEqual(output[j], (byte)(j + i), "Failed to decode base64EncodedLongPatterns[{0}]", i);
                }
            }
        }