180814287SRaphael Isemann //===-- AnsiTerminalTest.cpp ----------------------------------------------===// 22d425798SRaphael Isemann // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 62d425798SRaphael Isemann // 72d425798SRaphael Isemann //===----------------------------------------------------------------------===// 82d425798SRaphael Isemann 92d425798SRaphael Isemann #include "gtest/gtest.h" 102d425798SRaphael Isemann 112d425798SRaphael Isemann #include "lldb/Utility/AnsiTerminal.h" 122d425798SRaphael Isemann 134b3c0fd5SJonas Devlieghere using namespace lldb_private; 142d425798SRaphael Isemann 152d425798SRaphael Isemann TEST(AnsiTerminal, Empty) { EXPECT_EQ("", ansi::FormatAnsiTerminalCodes("")); } 162d425798SRaphael Isemann 172d425798SRaphael Isemann TEST(AnsiTerminal, WhiteSpace) { 182d425798SRaphael Isemann EXPECT_EQ(" ", ansi::FormatAnsiTerminalCodes(" ")); 19*2841cdbfSJonas Devlieghere EXPECT_EQ(" ", ansi::StripAnsiTerminalCodes(" ")); 202d425798SRaphael Isemann } 212d425798SRaphael Isemann 222d425798SRaphael Isemann TEST(AnsiTerminal, AtEnd) { 232d425798SRaphael Isemann EXPECT_EQ("abc\x1B[30m", 242d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("abc${ansi.fg.black}")); 25*2841cdbfSJonas Devlieghere 26*2841cdbfSJonas Devlieghere EXPECT_EQ("abc", ansi::StripAnsiTerminalCodes("abc\x1B[30m")); 272d425798SRaphael Isemann } 282d425798SRaphael Isemann 292d425798SRaphael Isemann TEST(AnsiTerminal, AtStart) { 302d425798SRaphael Isemann EXPECT_EQ("\x1B[30mabc", 312d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("${ansi.fg.black}abc")); 32*2841cdbfSJonas Devlieghere 33*2841cdbfSJonas Devlieghere EXPECT_EQ("abc", ansi::StripAnsiTerminalCodes("\x1B[30mabc")); 342d425798SRaphael Isemann } 352d425798SRaphael Isemann 362d425798SRaphael Isemann TEST(AnsiTerminal, KnownPrefix) { 372d425798SRaphael Isemann EXPECT_EQ("${ansi.fg.redish}abc", 382d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("${ansi.fg.redish}abc")); 392d425798SRaphael Isemann } 402d425798SRaphael Isemann 412d425798SRaphael Isemann TEST(AnsiTerminal, Unknown) { 422d425798SRaphael Isemann EXPECT_EQ("${ansi.fg.foo}abc", 432d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("${ansi.fg.foo}abc")); 442d425798SRaphael Isemann } 452d425798SRaphael Isemann 462d425798SRaphael Isemann TEST(AnsiTerminal, Incomplete) { 472d425798SRaphael Isemann EXPECT_EQ("abc${ansi.", ansi::FormatAnsiTerminalCodes("abc${ansi.")); 482d425798SRaphael Isemann } 492d425798SRaphael Isemann 502d425798SRaphael Isemann TEST(AnsiTerminal, Twice) { 512d425798SRaphael Isemann EXPECT_EQ("\x1B[30m\x1B[31mabc", 522d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("${ansi.fg.black}${ansi.fg.red}abc")); 53*2841cdbfSJonas Devlieghere 54*2841cdbfSJonas Devlieghere EXPECT_EQ("abc", ansi::StripAnsiTerminalCodes("\x1B[30m\x1B[31mabc")); 552d425798SRaphael Isemann } 562d425798SRaphael Isemann 572d425798SRaphael Isemann TEST(AnsiTerminal, Basic) { 582d425798SRaphael Isemann EXPECT_EQ( 592d425798SRaphael Isemann "abc\x1B[31mabc\x1B[0mabc", 602d425798SRaphael Isemann ansi::FormatAnsiTerminalCodes("abc${ansi.fg.red}abc${ansi.normal}abc")); 61*2841cdbfSJonas Devlieghere 62*2841cdbfSJonas Devlieghere EXPECT_EQ("abcabcabc", 63*2841cdbfSJonas Devlieghere ansi::StripAnsiTerminalCodes("abc\x1B[31mabc\x1B[0mabc")); 64*2841cdbfSJonas Devlieghere } 65*2841cdbfSJonas Devlieghere 66*2841cdbfSJonas Devlieghere TEST(AnsiTerminal, InvalidEscapeCode) { 67*2841cdbfSJonas Devlieghere EXPECT_EQ("abc\x1B[31kabcabc", 68*2841cdbfSJonas Devlieghere ansi::StripAnsiTerminalCodes("abc\x1B[31kabc\x1B[0mabc")); 692d425798SRaphael Isemann } 70