1 //===-- AnsiTerminalTest.cpp ------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "gtest/gtest.h"
11 
12 #include "lldb/Utility/AnsiTerminal.h"
13 
14 using namespace lldb_utility;
15 
16 TEST(AnsiTerminal, Empty) { EXPECT_EQ("", ansi::FormatAnsiTerminalCodes("")); }
17 
18 TEST(AnsiTerminal, WhiteSpace) {
19   EXPECT_EQ(" ", ansi::FormatAnsiTerminalCodes(" "));
20 }
21 
22 TEST(AnsiTerminal, AtEnd) {
23   EXPECT_EQ("abc\x1B[30m",
24             ansi::FormatAnsiTerminalCodes("abc${ansi.fg.black}"));
25 }
26 
27 TEST(AnsiTerminal, AtStart) {
28   EXPECT_EQ("\x1B[30mabc",
29             ansi::FormatAnsiTerminalCodes("${ansi.fg.black}abc"));
30 }
31 
32 TEST(AnsiTerminal, KnownPrefix) {
33   EXPECT_EQ("${ansi.fg.redish}abc",
34             ansi::FormatAnsiTerminalCodes("${ansi.fg.redish}abc"));
35 }
36 
37 TEST(AnsiTerminal, Unknown) {
38   EXPECT_EQ("${ansi.fg.foo}abc",
39             ansi::FormatAnsiTerminalCodes("${ansi.fg.foo}abc"));
40 }
41 
42 TEST(AnsiTerminal, Incomplete) {
43   EXPECT_EQ("abc${ansi.", ansi::FormatAnsiTerminalCodes("abc${ansi."));
44 }
45 
46 TEST(AnsiTerminal, Twice) {
47   EXPECT_EQ("\x1B[30m\x1B[31mabc",
48             ansi::FormatAnsiTerminalCodes("${ansi.fg.black}${ansi.fg.red}abc"));
49 }
50 
51 TEST(AnsiTerminal, Basic) {
52   EXPECT_EQ(
53       "abc\x1B[31mabc\x1B[0mabc",
54       ansi::FormatAnsiTerminalCodes("abc${ansi.fg.red}abc${ansi.normal}abc"));
55 }
56