Colored text writer that appends special tags to the output when the color is changed.
Наследование: System.IO.TextWriter, IColoredTextWriter
Пример #1
0
        public void TestResolveControlChunk()
        {
            FormatBuilder builder = new FormatBuilder()
                                    .AppendFormat("{" + FormatBuilder.ForegroundColorTag + ":Custom}")
                                    .Resolve(
                (_, c) =>
            {
                if (string.Equals(
                        c.Tag,
                        FormatBuilder.ForegroundColorTag,
                        StringComparison.CurrentCultureIgnoreCase) &&
                    string.Equals(c.Format, "Custom"))
                {
                    return(Color.Green);
                }
                return(Resolution.Unknown);
            },
                false,
                true);

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);
                Assert.AreEqual("{fg:Green}", writer.ToString());
            }
        }
Пример #2
0
        public void TestReplaceColor()
        {
            FormatBuilder builder = new FormatBuilder()
                                    .Append("Some text. ")
                                    .AppendForegroundColor(Color.Red)
                                    .Append("Some red text. ")
                                    .AppendForegroundColor(Color.Green)
                                    .AppendLine("Some green text.");

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some text. {fg:Red}Some red text. {fg:Green}Some green text.\r\n",
                    writer.ToString());
            }

            builder.Resolve(
                (_, c) =>
                string.Equals(
                    c.Tag,
                    FormatBuilder.ForegroundColorTag,
                    StringComparison.CurrentCultureIgnoreCase) &&
                string.Equals(
                    c.Format,
                    "Green",
                    StringComparison.CurrentCultureIgnoreCase)
                        ? new FormatChunk(c, Color.Blue)
                        : Resolution.UnknownYet,
                resolveControls: true);

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some text. {fg:Red}Some red text. {fg:Blue}Some green text.\r\n",
                    writer.ToString());
            }
        }
Пример #3
0
        public void TestTrailingControlChunks()
        {
            FormatBuilder builder = new FormatBuilder(100)
                                    .Append("Text")
                                    .AppendFormat("{" + FormatBuilder.ForegroundColorTag + "}");

            using (TestColoredTextWriter writer = new TestColoredTextWriter())
            {
                builder.WriteTo(writer);
                Assert.AreEqual("Text{/fg}", writer.ToString());
            }

            builder.Clear();
            builder.AppendLine("Text")
            .AppendFormat("{" + FormatBuilder.ForegroundColorTag + "}");

            using (TestColoredTextWriter writer = new TestColoredTextWriter())
            {
                builder.WriteTo(writer);
                Assert.AreEqual("Text\r\n{/fg}", writer.ToString());
            }
        }
Пример #4
0
        public void TestColoredWriter()
        {
            FormatBuilder builder = new FormatBuilder()
                                    .Append("Some normal text, ")
                                    .AppendForegroundColor(Color.Red)
                                    .Append("some red text, ")
                                    .AppendResetForegroundColor()
                                    .Append("some more normal text, ")
                                    .AppendForegroundColor(Color.Green)
                                    .Append("some green ")
                                    .AppendBackgroundColor(Color.Blue)
                                    .Append("and some blue ")
                                    .AppendResetBackgroundColor()
                                    .AppendLine("and back to green.");

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some normal text, {fg:Red}some red text, {/fg}some more normal text, {fg:Green}some green {bg:Blue}and some blue {/bg}and back to green.\r\n",
                    writer.ToString());
            }
        }
Пример #5
0
        public void TestReplaceColor()
        {
            FormatBuilder builder = new FormatBuilder()
                .Append("Some text. ")
                .AppendForegroundColor(Color.Red)
                .Append("Some red text. ")
                .AppendForegroundColor(Color.Green)
                .AppendLine("Some green text.");

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some text. {fg:Red}Some red text. {fg:Green}Some green text.\r\n",
                    writer.ToString());
            }

            builder.Resolve(
                (_, c) =>
                    string.Equals(
                        c.Tag,
                        FormatBuilder.ForegroundColorTag,
                        StringComparison.CurrentCultureIgnoreCase) &&
                    string.Equals(
                        c.Format,
                        "Green",
                        StringComparison.CurrentCultureIgnoreCase)
                        ? new FormatChunk(c, Color.Blue)
                        : Resolution.UnknownYet,
                resolveControls: true);

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some text. {fg:Red}Some red text. {fg:Blue}Some green text.\r\n",
                    writer.ToString());
            }
        }
Пример #6
0
        public void TestColoredWriter()
        {
            FormatBuilder builder = new FormatBuilder()
                .Append("Some normal text, ")
                .AppendForegroundColor(Color.Red)
                .Append("some red text, ")
                .AppendResetForegroundColor()
                .Append("some more normal text, ")
                .AppendForegroundColor(Color.Green)
                .Append("some green ")
                .AppendBackgroundColor(Color.Blue)
                .Append("and some blue ")
                .AppendResetBackgroundColor()
                .AppendLine("and back to green.");

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);

                Assert.AreEqual(
                    "Some normal text, {fg:Red}some red text, {/fg}some more normal text, {fg:Green}some green {bg:Blue}and some blue {/bg}and back to green.\r\n",
                    writer.ToString());
            }
        }
Пример #7
0
        public void TestTrailingControlChunks()
        {
            FormatBuilder builder = new FormatBuilder(100)
                .Append("Text")
                .AppendFormat("{" + FormatBuilder.ForegroundColorTag + "}");

            using (TestColoredTextWriter writer = new TestColoredTextWriter())
            {
                builder.WriteTo(writer);
                Assert.AreEqual("Text{/fg}", writer.ToString());
            }

            builder.Clear();
            builder.AppendLine("Text")
                .AppendFormat("{" + FormatBuilder.ForegroundColorTag + "}");

            using (TestColoredTextWriter writer = new TestColoredTextWriter())
            {
                builder.WriteTo(writer);
                Assert.AreEqual("Text\r\n{/fg}", writer.ToString());
            }
        }
Пример #8
0
        public void TestResolveControlChunk()
        {
            FormatBuilder builder = new FormatBuilder()
                .AppendFormat("{" + FormatBuilder.ForegroundColorTag + ":Custom}")
                .Resolve(
                    (_, c) =>
                    {
                        if (string.Equals(
                            c.Tag,
                            FormatBuilder.ForegroundColorTag,
                            StringComparison.CurrentCultureIgnoreCase) &&
                            string.Equals(c.Format, "Custom"))
                            return Color.Green;
                        return Resolution.Unknown;
                    },
                    false,
                    true);

            using (TestColoredTextWriter writer = new TestColoredTextWriter(true))
            {
                builder.WriteTo(writer);
                Assert.AreEqual("{fg:Green}", writer.ToString());
            }
        }