pkg.re/essentialkaos/ek@v12.36.0+incompatible/fmtc/fmtc_test.go (about) 1 package fmtc 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2021 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 if os.Getenv("CI") == "" { 91 c.Assert(Is256ColorsSupported(), Equals, true) 92 } else { 93 c.Assert(Is256ColorsSupported(), Equals, false) 94 } 95 96 c.Assert(Sprint("{#214}o{!}"), Equals, "\x1b[38;5;214mo\x1b[0m") 97 c.Assert(Sprint("{%214}O{!}"), Equals, "\x1b[48;5;214mO\x1b[0m") 98 99 c.Assert(Sprint("{#}o"), Equals, "{#}o") 100 c.Assert(Sprint("{#257}o"), Equals, "{#257}o") 101 c.Assert(Sprint("{#-1}o"), Equals, "{#-1}o") 102 } 103 104 func (s *FormatSuite) TestZDisable(c *C) { 105 DisableColors = true 106 107 c.Assert(Sprint("{r}W{!}"), Equals, "W") 108 c.Assert(Sprint("{g}W{!}"), Equals, "W") 109 c.Assert(Sprint("{y}W{!}"), Equals, "W") 110 c.Assert(Sprint("{b}W{!}"), Equals, "W") 111 c.Assert(Sprint("{m}W{!}"), Equals, "W") 112 c.Assert(Sprint("{c}W{!}"), Equals, "W") 113 c.Assert(Sprint("{s}W{!}"), Equals, "W") 114 c.Assert(Sprint("{R}W{!}"), Equals, "W") 115 c.Assert(Sprint("{G}W{!}"), Equals, "W") 116 c.Assert(Sprint("{Y}W{!}"), Equals, "W") 117 c.Assert(Sprint("{B}W{!}"), Equals, "W") 118 c.Assert(Sprint("{M}W{!}"), Equals, "W") 119 c.Assert(Sprint("{C}W{!}"), Equals, "W") 120 c.Assert(Sprint("{S}W{!}"), Equals, "W") 121 c.Assert(Sprint("{S*_}W{!}"), Equals, "W") 122 123 c.Assert(Sprint("Test {config} value"), Equals, "Test {config} value") 124 125 DisableColors = false 126 } 127 128 func (s *FormatSuite) TestClean(c *C) { 129 c.Assert(Clean("{r}W{!}"), Equals, "W") 130 c.Assert(Clean("{g}W{!}"), Equals, "W") 131 c.Assert(Clean("{y}W{!}"), Equals, "W") 132 c.Assert(Clean("{b}W{!}"), Equals, "W") 133 c.Assert(Clean("{m}W{!}"), Equals, "W") 134 c.Assert(Clean("{c}W{!}"), Equals, "W") 135 c.Assert(Clean("{s}W{!}"), Equals, "W") 136 c.Assert(Clean("{R}W{!}"), Equals, "W") 137 c.Assert(Clean("{G}W{!}"), Equals, "W") 138 c.Assert(Clean("{Y}W{!}"), Equals, "W") 139 c.Assert(Clean("{B}W{!}"), Equals, "W") 140 c.Assert(Clean("{M}W{!}"), Equals, "W") 141 c.Assert(Clean("{C}W{!}"), Equals, "W") 142 c.Assert(Clean("{S}W{!}"), Equals, "W") 143 c.Assert(Clean("{S*_}W{!}"), Equals, "W") 144 } 145 146 func (s *FormatSuite) TestMethods(c *C) { 147 c.Assert(Errorf("Test %s", "OK"), DeepEquals, errors.New("Test OK")) 148 c.Assert(Sprintf("Test %s", "OK"), Equals, "Test OK") 149 c.Assert(Sprintln("Test OK"), Equals, "Test OK\n") 150 151 w := bytes.NewBufferString("") 152 153 Fprint(w, "TEST") 154 155 c.Assert(w.String(), Equals, "TEST") 156 157 w = bytes.NewBufferString("") 158 159 Fprintln(w, "TEST") 160 161 c.Assert(w.String(), Equals, "TEST\n") 162 163 w = bytes.NewBufferString("") 164 165 Fprintf(w, "TEST %s", "OK") 166 167 c.Assert(w.String(), Equals, "TEST OK") 168 169 Printf("Printf: %s\n", "OK") 170 Print("Print: OK\n") 171 172 LPrintf(11, "LPrintf: %s NOTOK", "OK") 173 NewLine() 174 LPrintln(12, "LPrintln: OK NOTOK") 175 } 176 177 func (s *FormatSuite) TestAux(c *C) { 178 TPrintf("TPrint: %s", "OK") 179 TPrintf("") 180 TPrintf("TPrint: %s", "OK") 181 182 TPrintln("TPrint: OK") 183 184 TLPrintf(11, "TLPrint: %s NOTOK", "OK") 185 TLPrintf(11, "") 186 TLPrintf(11, "TLPrint: %s NOTOK", "OK") 187 188 TLPrintln(11, "TLPrint: OK NOTOK") 189 190 Bell() 191 } 192 193 func (s *FormatSuite) TestFuzzFixes(c *C) { 194 c.Assert(isValidTag("!!!"), Equals, false) 195 c.Assert(isValidTag("---"), Equals, false) 196 c.Assert(isValidTag("-!"), Equals, false) 197 c.Assert(isValidTag("!--"), Equals, false) 198 c.Assert(tag2ANSI("-!", false), Equals, "") 199 }