public void CharsConvertedToHtmlEncodedForm()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new[] {
                        new CharHTMLCommand {Char = 'X'},
                        new CharHTMLCommand {Char = '<'}
                    }
                );

            Assert.AreEqual("<pre>X&lt;", actualHtml);
        }
        public void CRLFGetsCorrectlyInserted()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand {Char = 'X'},
                        new NewLineHTMLCommand(),
                        new CharHTMLCommand {Char = 'Y'}
                    }
                );

            Assert.AreEqual("<pre>X</pre><pre>Y", actualHtml);
        }
        public void EmptyLineGetsNBSP()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new NewLineHTMLCommand(),
                        new NewLineHTMLCommand(),
                        new NewLineHTMLCommand(),
                        new CharHTMLCommand {Char = 'Y'}
                    }
                );

            Assert.AreEqual("<pre>&nbsp;</pre><pre>&nbsp;</pre><pre>&nbsp;</pre><pre>Y", actualHtml);
        }
        public void BoldGetsAppliedMidLine()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new BackgroundColorCommand(Color.Red),
                        new SetBoldCommand(true),
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre>ab<font style='color:#FFFFFF;background-color:#FF0000'>cd", actualHtml);
        }
        public void FontInteractsCorrectlyWithLineEnd()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new ForegroundColorCommand(Color.Red),
                        new CharHTMLCommand { Char = 'a' },
                        new ForegroundColorCommand(Color.Blue),
                        new CharHTMLCommand { Char = 'b' },
                        new ForegroundColorCommand(Color.FromArgb(0, 255, 0)),
                        new CharHTMLCommand {Char = 'c'},
                        new NewLineHTMLCommand(),
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            string expectedHtml = "<pre><font style='color:#8B0000'>a</font>" +
                                        "<font style='color:#00008B'>b</font>" +
                                        "<font style='color:#008B00'>c</font></pre>" +
                                        "<pre><font style='color:#008B00'>d";
            Assert.AreEqual(expectedHtml, actualHtml);
        }
        public void UnderlineGetsAppliedMidLine()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new SetUnderlineCommand(true),
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre>ab<font style='text-decoration:underline'>cd", actualHtml);
        }
        public void TextColorGetsAppliedAtStartOfLine()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new ForegroundColorCommand(Color.Red),
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre><font style='color:#8B0000'>abcd", actualHtml);
        }
        public void StrikethroughCombinesWithLinethrough()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new SetUnderlineCommand(true),
                        new SetStrikethroughCommand(true),
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre>ab<font style='text-decoration:line-through underline'>cd", actualHtml);
        }
        public void ReverseVideoGetsAppliedMidline()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new SetReverseVideoCommand(true),
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre>ab<font style='color:#000000;background-color:#8B8B8B'>cd", actualHtml);
        }
 public void ResetRevertsToDefaultFonts()
 {
     var decoder = new ANSICommandToHTMLConverter(null);
     string actualHtml = decoder.ConvertFromInternalFormat(
             new IANSICommand[] {
                 new ForegroundColorCommand(Color.Red),
                 new CharHTMLCommand { Char = 'a' },
                 new CharHTMLCommand { Char = 'b' },
                 new ResetCommand(),
                 new CharHTMLCommand {Char = 'c'},
                 new CharHTMLCommand { Char = 'd' }
             }
         );
     Assert.AreEqual("<pre><font style='color:#8B0000'>ab</font>cd", actualHtml);
 }
        public void ItalicGetsAppliedMidLine()
        {
            var decoder = new ANSICommandToHTMLConverter(null);
            string actualHtml = decoder.ConvertFromInternalFormat(
                    new IANSICommand[] {
                        new CharHTMLCommand { Char = 'a' },
                        new CharHTMLCommand { Char = 'b' },
                        new SetItalicCommand(true),
                        new CharHTMLCommand {Char = 'c'},
                        new CharHTMLCommand { Char = 'd' }
                    }
                );

            Assert.AreEqual("<pre>ab<font style='font-style:italic'>cd", actualHtml);
        }