public void TestNewlineNormalizerStream8bitReading()
        {
            var newlinePermutations = new byte[][] { "\n".ToUtf8(), "\r".ToUtf8(), "\r\n".ToUtf8() }.Permutations();
            foreach (var permutation in newlinePermutations)
            {
                var permutationArr = permutation.ToArray();
                var bytes = "Line 1".ToUtf8().Concat(permutationArr[0])
                    .Concat("Line 2".ToUtf8()).Concat(permutationArr[1])
                    .Concat("Line 3".ToUtf8()).Concat(permutationArr[2])
                    .Concat("Line 4".ToUtf8()).ToArray();

                for (int chunkSize1 = 1; chunkSize1 <= bytes.Length; chunkSize1++)
                {
                    for (int chunkSize2 = 1; chunkSize2 < chunkSize1; chunkSize2++)
                    {
                        using (var str = new MemoryStream(bytes))
                        using (var slowMaker1 = new SlowStream(str, chunkSize1))
                        using (var normaliser = new NewlineNormalizerStream8bit(slowMaker1, "<NL>".ToUtf8()))
                        using (var slowMaker2 = new SlowStream(normaliser, chunkSize2))
                        {
                            var text = slowMaker2.ReadAllText(Encoding.UTF8);
                            Assert.AreEqual("Line 1<NL>Line 2<NL>Line 3<NL>Line 4", text);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void TestNewlineNormalizerStream16bitLittleEndianRead()
        {
            var newlinePermutations = new byte[][] { "\n".ToUtf16(), "\r".ToUtf16(), "\r\n".ToUtf16() }.Permutations();

            foreach (var permutation in newlinePermutations)
            {
                var permutationArr = permutation.ToArray();
                var bytes          = "Line 1".ToUtf16().Concat(permutationArr[0])
                                     .Concat("Line 2".ToUtf16()).Concat(permutationArr[1])
                                     .Concat("Line 3".ToUtf16()).Concat(permutationArr[2])
                                     .Concat("Line 4".ToUtf16()).ToArray();

                for (int chunkSize1 = 1; chunkSize1 <= bytes.Length; chunkSize1++)
                {
                    for (int chunkSize2 = 1; chunkSize2 < chunkSize1; chunkSize2++)
                    {
                        using (var str = new MemoryStream(bytes))
                            using (var slowMaker1 = new SlowStream(str, chunkSize1))
                                using (var normaliser = new NewlineNormalizerStream16bit(slowMaker1, "<NL>".ToUtf16()))
                                    using (var slowMaker2 = new SlowStream(normaliser, chunkSize2))
                                    {
                                        var text = slowMaker2.ReadAllText(Encoding.Unicode);
                                        Assert.AreEqual("Line 1<NL>Line 2<NL>Line 3<NL>Line 4", text);
                                    }
                    }
                }
            }
        }