1*80814287SRaphael 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 
TEST(AnsiTerminal,Empty)152d425798SRaphael Isemann TEST(AnsiTerminal, Empty) { EXPECT_EQ("", ansi::FormatAnsiTerminalCodes("")); }
162d425798SRaphael Isemann 
TEST(AnsiTerminal,WhiteSpace)172d425798SRaphael Isemann TEST(AnsiTerminal, WhiteSpace) {
182d425798SRaphael Isemann   EXPECT_EQ(" ", ansi::FormatAnsiTerminalCodes(" "));
192d425798SRaphael Isemann }
202d425798SRaphael Isemann 
TEST(AnsiTerminal,AtEnd)212d425798SRaphael Isemann TEST(AnsiTerminal, AtEnd) {
222d425798SRaphael Isemann   EXPECT_EQ("abc\x1B[30m",
232d425798SRaphael Isemann             ansi::FormatAnsiTerminalCodes("abc${ansi.fg.black}"));
242d425798SRaphael Isemann }
252d425798SRaphael Isemann 
TEST(AnsiTerminal,AtStart)262d425798SRaphael Isemann TEST(AnsiTerminal, AtStart) {
272d425798SRaphael Isemann   EXPECT_EQ("\x1B[30mabc",
282d425798SRaphael Isemann             ansi::FormatAnsiTerminalCodes("${ansi.fg.black}abc"));
292d425798SRaphael Isemann }
302d425798SRaphael Isemann 
TEST(AnsiTerminal,KnownPrefix)312d425798SRaphael Isemann TEST(AnsiTerminal, KnownPrefix) {
322d425798SRaphael Isemann   EXPECT_EQ("${ansi.fg.redish}abc",
332d425798SRaphael Isemann             ansi::FormatAnsiTerminalCodes("${ansi.fg.redish}abc"));
342d425798SRaphael Isemann }
352d425798SRaphael Isemann 
TEST(AnsiTerminal,Unknown)362d425798SRaphael Isemann TEST(AnsiTerminal, Unknown) {
372d425798SRaphael Isemann   EXPECT_EQ("${ansi.fg.foo}abc",
382d425798SRaphael Isemann             ansi::FormatAnsiTerminalCodes("${ansi.fg.foo}abc"));
392d425798SRaphael Isemann }
402d425798SRaphael Isemann 
TEST(AnsiTerminal,Incomplete)412d425798SRaphael Isemann TEST(AnsiTerminal, Incomplete) {
422d425798SRaphael Isemann   EXPECT_EQ("abc${ansi.", ansi::FormatAnsiTerminalCodes("abc${ansi."));
432d425798SRaphael Isemann }
442d425798SRaphael Isemann 
TEST(AnsiTerminal,Twice)452d425798SRaphael Isemann TEST(AnsiTerminal, Twice) {
462d425798SRaphael Isemann   EXPECT_EQ("\x1B[30m\x1B[31mabc",
472d425798SRaphael Isemann             ansi::FormatAnsiTerminalCodes("${ansi.fg.black}${ansi.fg.red}abc"));
482d425798SRaphael Isemann }
492d425798SRaphael Isemann 
TEST(AnsiTerminal,Basic)502d425798SRaphael Isemann TEST(AnsiTerminal, Basic) {
512d425798SRaphael Isemann   EXPECT_EQ(
522d425798SRaphael Isemann       "abc\x1B[31mabc\x1B[0mabc",
532d425798SRaphael Isemann       ansi::FormatAnsiTerminalCodes("abc${ansi.fg.red}abc${ansi.normal}abc"));
542d425798SRaphael Isemann }
55