public void MessageUsingClassicOrdinalPositionsFormatsToItself()
        {
            var message =
                "The element at {0} using {1} and {2} was causing grief because {2} and {1} dislike {0} except {1} secretly likes {2}";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            Assert.Equal(message, dummyLogger.NameFormatToPositionalFormat(message));
        }
        public void MessageUsingOrdinalPositionsOutOfOrderDoesNotRearrangeTheOrder()
        {
            var message = "The elements in reverse {2}, {1}, {0} are out of order";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(message);

            Assert.Equal(message, actualReformattedMessage);
        }
        public void MessageUsingOrdinalPositionsOutOfOrderDoesNotRearrangeTheOrder()
        {
            var message = "The elements in reverse {2}, {1}, {0} are out of order";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(message);

            Assert.Equal(message, actualReformattedMessage);
        }
        public void MessageUsingClassicOrdinalPositionsFormatsToItself()
        {
            var message =
                "The element at {0} using {1} and {2} was causing grief because {2} and {1} dislike {0} except {1} secretly likes {2}";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();

            Assert.Equal(message, dummyLogger.NameFormatToPositionalFormat(message));
        }
        public void MessageUsingMixedOrdinalAndNamedPositionsIsHandled()
        {
            var message =
                "This message mixes names {name}, then some arbitrary positions like {0} and names like {name}, {@file} and could reuse positions {0:f}";
            var expected =
                "This message mixes names {0}, then some arbitrary positions like {1} and names like {0}, {2} and could reuse positions {1:f}";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(message);

            Assert.Equal(expected, actualReformattedMessage);
        }
        public void MessageUsingMixedOrdinalAndNamedPositionsIsHandled()
        {
            var message =
                "This message mixes names {name}, then some arbitrary positions like {0} and names like {name}, {@file} and could reuse positions {0:f}";
            var expected =
                "This message mixes names {0}, then some arbitrary positions like {1} and names like {0}, {2} and could reuse positions {1:f}";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(message);

            Assert.Equal(expected, actualReformattedMessage);
        }
        public void ComplexMessageIsCorrectlyReformatted()
        {
            var complexMessage =
                "The widget {@widget} for file {filename} was opened by {@user} that owns the {widget:'format'} which was opened by {user:'******'} at {today}";

            var expectedReformattedMessage =
                "The widget {0} for file {1} was opened by {2} that owns the {0:'format'} which was opened by {2:'fff'} at {3}";

            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(complexMessage);

            Assert.Equal(expectedReformattedMessage, actualReformattedMessage);
        }
        public void ComplexMessageIsCorrectlyReformatted()
        {
            var complexMessage =
                "The widget {@widget} for file {filename} was opened by {@user} that owns the {widget:'format'} which was opened by {user:'******'} at {today}";

            var expectedReformattedMessage =
                "The widget {0} for file {1} was opened by {2} that owns the {0:'format'} which was opened by {2:'fff'} at {3}";


            var dummyLogger = new ExposesProtectedLogMessageReformatter();
            var actualReformattedMessage = dummyLogger.NameFormatToPositionalFormat(complexMessage);

            Assert.Equal(expectedReformattedMessage, actualReformattedMessage);
        }