pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/fmtc/fmtc_test.go (about) 1 package fmtc 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "bytes" 12 "errors" 13 "os" 14 "testing" 15 16 . "pkg.re/essentialkaos/check.v1" 17 ) 18 19 // ////////////////////////////////////////////////////////////////////////////////// // 20 21 func Test(t *testing.T) { TestingT(t) } 22 23 type FormatSuite struct{} 24 25 // ////////////////////////////////////////////////////////////////////////////////// // 26 27 var _ = Suite(&FormatSuite{}) 28 29 func (s *FormatSuite) TestColors(c *C) { 30 c.Assert(Sprint("{r}W{!}"), Equals, "\x1b[31mW\x1b[0m") 31 c.Assert(Sprint("{g}W{!}"), Equals, "\x1b[32mW\x1b[0m") 32 c.Assert(Sprint("{y}W{!}"), Equals, "\x1b[33mW\x1b[0m") 33 c.Assert(Sprint("{b}W{!}"), Equals, "\x1b[34mW\x1b[0m") 34 c.Assert(Sprint("{m}W{!}"), Equals, "\x1b[35mW\x1b[0m") 35 c.Assert(Sprint("{c}W{!}"), Equals, "\x1b[36mW\x1b[0m") 36 c.Assert(Sprint("{s}W{!}"), Equals, "\x1b[37mW\x1b[0m") 37 c.Assert(Sprint("{w}W{!}"), Equals, "\x1b[97mW\x1b[0m") 38 c.Assert(Sprint("{r-}W{!}"), Equals, "\x1b[91mW\x1b[0m") 39 c.Assert(Sprint("{g-}W{!}"), Equals, "\x1b[92mW\x1b[0m") 40 c.Assert(Sprint("{y-}W{!}"), Equals, "\x1b[93mW\x1b[0m") 41 c.Assert(Sprint("{b-}W{!}"), Equals, "\x1b[94mW\x1b[0m") 42 c.Assert(Sprint("{m-}W{!}"), Equals, "\x1b[95mW\x1b[0m") 43 c.Assert(Sprint("{c-}W{!}"), Equals, "\x1b[96mW\x1b[0m") 44 c.Assert(Sprint("{s-}W{!}"), Equals, "\x1b[90mW\x1b[0m") 45 c.Assert(Sprint("{w-}W{!}"), Equals, "\x1b[97mW\x1b[0m") 46 } 47 48 func (s *FormatSuite) TestBackgrounds(c *C) { 49 c.Assert(Sprint("{R}W{!}"), Equals, "\x1b[41mW\x1b[0m") 50 c.Assert(Sprint("{G}W{!}"), Equals, "\x1b[42mW\x1b[0m") 51 c.Assert(Sprint("{Y}W{!}"), Equals, "\x1b[43mW\x1b[0m") 52 c.Assert(Sprint("{B}W{!}"), Equals, "\x1b[44mW\x1b[0m") 53 c.Assert(Sprint("{M}W{!}"), Equals, "\x1b[45mW\x1b[0m") 54 c.Assert(Sprint("{C}W{!}"), Equals, "\x1b[46mW\x1b[0m") 55 c.Assert(Sprint("{S}W{!}"), Equals, "\x1b[47mW\x1b[0m") 56 c.Assert(Sprint("{W}W{!}"), Equals, "\x1b[107mW\x1b[0m") 57 } 58 59 func (s *FormatSuite) TestModificators(c *C) { 60 c.Assert(Sprint("{!}"), Equals, "\x1b[0m") 61 c.Assert(Sprint("{*}W{!}"), Equals, "\x1b[1mW\x1b[0m") 62 c.Assert(Sprint("{^}W{!}"), Equals, "\x1b[2mW\x1b[0m") 63 c.Assert(Sprint("{_}W{!}"), Equals, "\x1b[4mW\x1b[0m") 64 c.Assert(Sprint("{~}W{!}"), Equals, "\x1b[5mW\x1b[0m") 65 c.Assert(Sprint("{@}W{!}"), Equals, "\x1b[7mW\x1b[0m") 66 } 67 68 func (s *FormatSuite) TestReset(c *C) { 69 c.Assert(Sprint("{*}W{!*}K{!}"), Equals, "\x1b[1mW\x1b[22mK\x1b[0m") 70 c.Assert(Sprint("{^}W{!^}K{!}"), Equals, "\x1b[2mW\x1b[22mK\x1b[0m") 71 c.Assert(Sprint("{_}W{!_}K{!}"), Equals, "\x1b[4mW\x1b[24mK\x1b[0m") 72 c.Assert(Sprint("{~}W{!~}K{!}"), Equals, "\x1b[5mW\x1b[25mK\x1b[0m") 73 c.Assert(Sprint("{@}W{!@}K{!}"), Equals, "\x1b[7mW\x1b[27mK\x1b[0m") 74 } 75 76 func (s *FormatSuite) TestParsing(c *C) { 77 c.Assert(Sprint(""), Equals, "") 78 c.Assert(Sprint("{}"), Equals, "{}") 79 c.Assert(Sprint("{-}"), Equals, "{-}") 80 c.Assert(Sprint("W"), Equals, "W") 81 c.Assert(Sprint("{"), Equals, "{") 82 c.Assert(Sprint("{r"), Equals, "{r") 83 c.Assert(Sprint("{J}W"), Equals, "{J}W") 84 c.Assert(Sprint("{r}W"), Equals, "\x1b[31mW\x1b[0m") 85 c.Assert(Sprint("{{r}W{!}}"), Equals, "{\x1b[31mW\x1b[0m}") 86 c.Assert(Sprint("Test"+string(rune(65533))), Equals, "Test") 87 } 88 89 func (s *FormatSuite) Test256Colors(c *C) { 90 term = "xterm-256color" 91 colorTerm = "" 92 93 colorsSupportChecked = false 94 95 c.Assert(Is256ColorsSupported(), Equals, true) 96 c.Assert(IsTrueColorSupported(), Equals, false) 97 98 colorsSupportChecked = false 99 colors256Supported = false 100 colorsTCSupported = false 101 term = "" 102 colorTerm = "" 103 104 c.Assert(Is256ColorsSupported(), Equals, false) 105 c.Assert(Is256ColorsSupported(), Equals, false) 106 c.Assert(IsTrueColorSupported(), Equals, false) 107 108 term = os.Getenv("TERM") 109 colorTerm = os.Getenv("COLORTERM") 110 111 c.Assert(Sprint("{#214}o{!}"), Equals, "\x1b[38;5;214mo\x1b[0m") 112 c.Assert(Sprint("{%214}O{!}"), Equals, "\x1b[48;5;214mO\x1b[0m") 113 114 c.Assert(Sprint("{#}o"), Equals, "{#}o") 115 c.Assert(Sprint("{#257}o"), Equals, "{#257}o") 116 c.Assert(Sprint("{#-1}o"), Equals, "{#-1}o") 117 } 118 119 func (s *FormatSuite) Test24BitColors(c *C) { 120 term = "xterm-256color" 121 colorTerm = "truecolor" 122 123 colorsSupportChecked = false 124 125 c.Assert(IsTrueColorSupported(), Equals, true) 126 c.Assert(Is256ColorsSupported(), Equals, true) 127 128 colorsSupportChecked = false 129 colors256Supported = false 130 colorsTCSupported = false 131 term = "" 132 colorTerm = "" 133 134 c.Assert(IsTrueColorSupported(), Equals, false) 135 c.Assert(IsTrueColorSupported(), Equals, false) 136 137 term = os.Getenv("TERM") 138 colorTerm = os.Getenv("COLORTERM") 139 140 c.Assert(Sprint("{#f1c1b2}o{!}"), Equals, "\x1b[38;2;241;193;178mo\x1b[0m") 141 c.Assert(Sprint("{%1F2E3D}O{!}"), Equals, "\x1b[48;2;31;46;61mO\x1b[0m") 142 143 c.Assert(Sprint("{#}o"), Equals, "{#}o") 144 c.Assert(Sprint("{#gggggg}o"), Equals, "{#gggggg}o") 145 c.Assert(Sprint("{#-1}o"), Equals, "{#-1}o") 146 } 147 148 func (s *FormatSuite) TestZDisable(c *C) { 149 DisableColors = true 150 151 c.Assert(Sprint("{r}W{!}"), Equals, "W") 152 c.Assert(Sprint("{g}W{!}"), Equals, "W") 153 c.Assert(Sprint("{y}W{!}"), Equals, "W") 154 c.Assert(Sprint("{b}W{!}"), Equals, "W") 155 c.Assert(Sprint("{m}W{!}"), Equals, "W") 156 c.Assert(Sprint("{c}W{!}"), Equals, "W") 157 c.Assert(Sprint("{s}W{!}"), Equals, "W") 158 c.Assert(Sprint("{R}W{!}"), Equals, "W") 159 c.Assert(Sprint("{G}W{!}"), Equals, "W") 160 c.Assert(Sprint("{Y}W{!}"), Equals, "W") 161 c.Assert(Sprint("{B}W{!}"), Equals, "W") 162 c.Assert(Sprint("{M}W{!}"), Equals, "W") 163 c.Assert(Sprint("{C}W{!}"), Equals, "W") 164 c.Assert(Sprint("{S}W{!}"), Equals, "W") 165 c.Assert(Sprint("{S*_}W{!}"), Equals, "W") 166 167 c.Assert(Sprint("Test {config} value"), Equals, "Test {config} value") 168 169 DisableColors = false 170 } 171 172 func (s *FormatSuite) TestClean(c *C) { 173 c.Assert(Clean("{r}W{!}"), Equals, "W") 174 c.Assert(Clean("{g}W{!}"), Equals, "W") 175 c.Assert(Clean("{y}W{!}"), Equals, "W") 176 c.Assert(Clean("{b}W{!}"), Equals, "W") 177 c.Assert(Clean("{m}W{!}"), Equals, "W") 178 c.Assert(Clean("{c}W{!}"), Equals, "W") 179 c.Assert(Clean("{s}W{!}"), Equals, "W") 180 c.Assert(Clean("{R}W{!}"), Equals, "W") 181 c.Assert(Clean("{G}W{!}"), Equals, "W") 182 c.Assert(Clean("{Y}W{!}"), Equals, "W") 183 c.Assert(Clean("{B}W{!}"), Equals, "W") 184 c.Assert(Clean("{M}W{!}"), Equals, "W") 185 c.Assert(Clean("{C}W{!}"), Equals, "W") 186 c.Assert(Clean("{S}W{!}"), Equals, "W") 187 c.Assert(Clean("{S*_}W{!}"), Equals, "W") 188 } 189 190 func (s *FormatSuite) TestMethods(c *C) { 191 c.Assert(Errorf("Test %s", "OK"), DeepEquals, errors.New("Test OK")) 192 c.Assert(Sprintf("Test %s", "OK"), Equals, "Test OK") 193 c.Assert(Sprintln("Test OK"), Equals, "Test OK\n") 194 195 w := bytes.NewBufferString("") 196 197 Fprint(w, "TEST") 198 199 c.Assert(w.String(), Equals, "TEST") 200 201 w = bytes.NewBufferString("") 202 203 Fprintln(w, "TEST") 204 205 c.Assert(w.String(), Equals, "TEST\n") 206 207 w = bytes.NewBufferString("") 208 209 Fprintf(w, "TEST %s", "OK") 210 211 c.Assert(w.String(), Equals, "TEST OK") 212 213 Printf("Printf: %s\n", "OK") 214 Print("Print: OK\n") 215 216 LPrintf(11, "LPrintf: %s NOTOK", "OK") 217 NewLine() 218 LPrintln(12, "LPrintln: OK NOTOK") 219 } 220 221 func (s *FormatSuite) TestAux(c *C) { 222 TPrintf("TPrint: %s", "OK") 223 TPrintf("") 224 TPrintf("TPrint: %s", "OK") 225 226 TPrintln("TPrint: OK") 227 228 TLPrintf(11, "TLPrint: %s NOTOK", "OK") 229 TLPrintf(11, "") 230 TLPrintf(11, "TLPrint: %s NOTOK", "OK") 231 232 TLPrintln(11, "TLPrint: OK NOTOK") 233 234 Bell() 235 } 236 237 func (s *FormatSuite) TestFuzzFixes(c *C) { 238 c.Assert(isValidTag("!!!"), Equals, false) 239 c.Assert(isValidTag("---"), Equals, false) 240 c.Assert(isValidTag("-!"), Equals, false) 241 c.Assert(isValidTag("!--"), Equals, false) 242 c.Assert(tag2ANSI("-!", false), Equals, "") 243 }