xref: /llvm-project/lldb/unittests/Utility/AnsiTerminalTest.cpp (revision 2841cdbfda92b3fb5fbec726f3376b198106d496)
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