public void TestGetBytesToRead()
        {
            #region Arrange

            StringBuilder inputString = new StringBuilder("zza");

            var sut = new ReplaceStreamContentCore(null, null, 8, null);

            #endregion

            #region Act
            var readCount = sut.InvokeProtectedOrPrivateMethod<Tuple<int, StringBuilder>>("getBytesToRead", inputString);
            #endregion

            #region Assert

            readCount.Item1.Should().Be(5);

            #endregion
        }
        public void TestDeleteWrittenBuffer()
        {
            #region Arrange

            StringBuilder inputString = new StringBuilder("11aabzza");

            var sut = new ReplaceStreamContentCore(null, null, 5, null);

            #endregion

            #region Act
            var bufferRest = sut.InvokeProtectedOrPrivateMethod<StringBuilder>("deleteWrittenBuffer", new Tuple<int, StringBuilder>(5, inputString));
            #endregion

            #region Assert

            bufferRest.ToString().Should().Be("zza");

            #endregion
        }
        public void TestGetBytesToWrite02()
        {
            #region Arrange

            StringBuilder inputString = new StringBuilder("11aabzza");

            List<Replacement> replacements = new List<Replacement> { new Replacement { OldValue = "22", NewValue = "11" }, new Replacement { OldValue = "aaa", NewValue = "aab" } };
            var sut = new ReplaceStreamContentCore(null, null, 8, replacements);

            #endregion

            #region Act
            var outputTuple = sut.InvokeProtectedOrPrivateMethod<Tuple<int, StringBuilder>>("getBytesToWrite", new Tuple<int, StringBuilder>(4, inputString));
            #endregion

            #region Assert

            outputTuple.Item1.Should().Be(5);
            outputTuple.Item2.ToString().Should().Be("11aabzza");

            #endregion
        }
        public void TestWriteBytes()
        {
            #region Arrange

            string inputString = "11aabzza";
            Stream input = GenerateStreamFromString(inputString);
            MemoryStream outputStream = new MemoryStream();

            List<Replacement> replacements = new List<Replacement> { new Replacement { OldValue = "22", NewValue = "11" }, new Replacement { OldValue = "aaa", NewValue = "aab" } };
            var streamWriter = new StreamWriter(outputStream);
            var sut = new ReplaceStreamContentCore(new StreamReader(input), streamWriter, 5, replacements);

            #endregion

            #region Act
            var outputTuple = sut.InvokeProtectedOrPrivateMethod<Tuple<int, StringBuilder>>("writeBytes", new Tuple<int, StringBuilder>(5, new StringBuilder(inputString)));
            streamWriter.Flush();
            #endregion

            #region Assert

            outputTuple.Item1.Should().Be(5);
            outputTuple.Item2.ToString().Should().Be("11aabzza");

            outputStream.Position = 0;

            string writtenString = Encoding.ASCII.GetString(outputStream.ToArray());
            writtenString.Should().Be("11aab");

            #endregion
        }
        public void TestReplace()
        {
            #region Arrange

            StringBuilder inputString = new StringBuilder("12abz");

            List<Replacement> replacements = new List<Replacement> { new Replacement { OldValue = "12", NewValue = "11" }, new Replacement { OldValue = "ab", NewValue = "aa" } };
            var sut = new ReplaceStreamContentCore(null, null, 5, replacements);

            #endregion

            #region Act
            var outputTuple = sut.InvokeProtectedOrPrivateMethod<Tuple<int, StringBuilder>>("replace", new Tuple<int, StringBuilder>(0, inputString));
            #endregion

            #region Assert

            outputTuple.Item2.ToString().Should().Be("11aaz");

            #endregion
        }
        public void TestReadBytes()
        {
            #region Arrange
            Stream input = GenerateStreamFromString("abcdefg");

            ReplaceStreamContentCore sut = new ReplaceStreamContentCore(new StreamReader(input), null, 5, null);

            #endregion

            #region Act
            var erg = sut.InvokeProtectedOrPrivateMethod<StringBuilder>("readBytes", new Tuple<int, StringBuilder>(3, new StringBuilder()));
            #endregion

            #region Assert

            erg.ToString().Should().Be("abc");

            #endregion
        }
        public void TestGetLastEndPosition()
        {
            #region Arrange

            StringBuilder inputString = new StringBuilder("12abz");

            List<Replacement> replacements = new List<Replacement> { new Replacement { OldValue = "12", NewValue = "11" }, new Replacement { OldValue = "ab", NewValue = "aa" } };
            var sut = new ReplaceStreamContentCore(null, null, 5, replacements);

            #endregion

            #region Act
            var erg = sut.InvokeProtectedOrPrivateMethod<Tuple<int, StringBuilder>>("getLastEndPosition", inputString);
            #endregion

            #region Assert

            erg.Item1.Should().Be(3);

            #endregion
        }