golib/helper/text/color_test.go

159 lines
5.9 KiB
Go
Raw Normal View History

2023-08-20 13:50:39 +08:00
package text
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func init() {
EnableColors()
}
func TestColor_EnableAndDisable(t *testing.T) {
defer EnableColors()
EnableColors()
assert.Equal(t, "\x1b[31mtest\x1b[0m", FgRed.Sprint("test"))
DisableColors()
assert.Equal(t, "test", FgRed.Sprint("test"))
EnableColors()
assert.Equal(t, "\x1b[31mtest\x1b[0m", FgRed.Sprint("test"))
}
func ExampleColor_EscapeSeq() {
fmt.Printf("Black Background: %#v\n", BgBlack.EscapeSeq())
fmt.Printf("Black Foreground: %#v\n", FgBlack.EscapeSeq())
// Output: Black Background: "\x1b[40m"
// Black Foreground: "\x1b[30m"
}
func TestColor_EscapeSeq(t *testing.T) {
assert.Equal(t, "\x1b[40m", BgBlack.EscapeSeq())
}
func ExampleColor_HTMLProperty() {
fmt.Printf("Bold: %#v\n", Bold.HTMLProperty())
fmt.Printf("Black Background: %#v\n", BgBlack.HTMLProperty())
fmt.Printf("Black Foreground: %#v\n", FgBlack.HTMLProperty())
// Output: Bold: "class=\"bold\""
// Black Background: "class=\"bg-black\""
// Black Foreground: "class=\"fg-black\""
}
func TestColor_HTMLProperty(t *testing.T) {
assert.Equal(t, "class=\"bold\"", Bold.HTMLProperty())
assert.Equal(t, "class=\"bg-black\"", BgBlack.HTMLProperty())
assert.Equal(t, "class=\"fg-black\"", FgBlack.HTMLProperty())
}
func ExampleColor_Sprint() {
fmt.Printf("%#v\n", BgBlack.Sprint("Black Background"))
fmt.Printf("%#v\n", FgBlack.Sprint("Black Foreground"))
// Output: "\x1b[40mBlack Background\x1b[0m"
// "\x1b[30mBlack Foreground\x1b[0m"
}
func TestColor_Sprint(t *testing.T) {
assert.Equal(t, "\x1b[31mtest true\x1b[0m", FgRed.Sprint("test ", true))
assert.Equal(t, "\x1b[32mtest\x1b[0m\x1b[31mtrue\x1b[0m", FgRed.Sprint("\x1b[32mtest\x1b[0m", true))
assert.Equal(t, "\x1b[32mtest true\x1b[0m", FgRed.Sprint("\x1b[32mtest ", true))
assert.Equal(t, "\x1b[32mtest\x1b[0m\x1b[31m \x1b[0m", FgRed.Sprint("\x1b[32mtest\x1b[0m "))
assert.Equal(t, "\x1b[32mtest\x1b[0m", FgRed.Sprint("\x1b[32mtest\x1b[0m"))
}
func ExampleColor_Sprintf() {
fmt.Printf("%#v\n", BgBlack.Sprintf("%s %s", "Black", "Background"))
fmt.Printf("%#v\n", FgBlack.Sprintf("%s %s", "Black", "Foreground"))
// Output: "\x1b[40mBlack Background\x1b[0m"
// "\x1b[30mBlack Foreground\x1b[0m"
}
func TestColor_Sprintf(t *testing.T) {
assert.Equal(t, "\x1b[31mtest true\x1b[0m", FgRed.Sprintf("test %s", "true"))
}
func ExampleColors_EscapeSeq() {
fmt.Printf("Black Background: %#v\n", Colors{BgBlack}.EscapeSeq())
fmt.Printf("Black Foreground: %#v\n", Colors{FgBlack}.EscapeSeq())
fmt.Printf("Black Background, White Foreground: %#v\n", Colors{BgBlack, FgWhite}.EscapeSeq())
fmt.Printf("Black Foreground, White Background: %#v\n", Colors{FgBlack, BgWhite}.EscapeSeq())
// Output: Black Background: "\x1b[40m"
// Black Foreground: "\x1b[30m"
// Black Background, White Foreground: "\x1b[40;37m"
// Black Foreground, White Background: "\x1b[30;47m"
}
func TestColors_EscapeSeq(t *testing.T) {
assert.Equal(t, "", Colors{}.EscapeSeq())
assert.Equal(t, "\x1b[40;37m", Colors{BgBlack, FgWhite}.EscapeSeq())
}
func ExampleColors_HTMLProperty() {
fmt.Printf("Black Background: %#v\n", Colors{BgBlack}.HTMLProperty())
fmt.Printf("Black Foreground: %#v\n", Colors{FgBlack}.HTMLProperty())
fmt.Printf("Black Background, White Foreground: %#v\n", Colors{BgBlack, FgWhite}.HTMLProperty())
fmt.Printf("Black Foreground, White Background: %#v\n", Colors{FgBlack, BgWhite}.HTMLProperty())
fmt.Printf("Bold Italic Underline Red Text: %#v\n", Colors{Bold, Italic, Underline, FgRed}.HTMLProperty())
// Output: Black Background: "class=\"bg-black\""
// Black Foreground: "class=\"fg-black\""
// Black Background, White Foreground: "class=\"bg-black fg-white\""
// Black Foreground, White Background: "class=\"bg-white fg-black\""
// Bold Italic Underline Red Text: "class=\"bold fg-red italic underline\""
}
func TestColors_HTMLProperty(t *testing.T) {
assert.Equal(t, "", Colors{}.HTMLProperty())
assert.Equal(t, "class=\"bg-black fg-white\"", Colors{BgBlack, FgWhite}.HTMLProperty())
assert.Equal(t, "class=\"bold fg-red\"", Colors{Bold, FgRed}.HTMLProperty())
}
func ExampleColors_Sprint() {
fmt.Printf("%#v\n", Colors{BgBlack}.Sprint("Black Background"))
fmt.Printf("%#v\n", Colors{BgBlack, FgWhite}.Sprint("Black Background, White Foreground"))
fmt.Printf("%#v\n", Colors{FgBlack}.Sprint("Black Foreground"))
fmt.Printf("%#v\n", Colors{FgBlack, BgWhite}.Sprint("Black Foreground, White Background"))
// Output: "\x1b[40mBlack Background\x1b[0m"
// "\x1b[40;37mBlack Background, White Foreground\x1b[0m"
// "\x1b[30mBlack Foreground\x1b[0m"
// "\x1b[30;47mBlack Foreground, White Background\x1b[0m"
}
func TestColors_Sprint(t *testing.T) {
assert.Equal(t, "test true", Colors{}.Sprint("test ", true))
assert.Equal(t, "\x1b[31mtest true\x1b[0m", Colors{FgRed}.Sprint("test ", true))
assert.Equal(t, "\x1b[32mtest\x1b[0m\x1b[31mtrue\x1b[0m", Colors{FgRed}.Sprint("\x1b[32mtest\x1b[0m", true))
assert.Equal(t, "\x1b[32mtest true\x1b[0m", Colors{FgRed}.Sprint("\x1b[32mtest ", true))
assert.Equal(t, "\x1b[32mtest\x1b[0m\x1b[31m \x1b[0m", Colors{FgRed}.Sprint("\x1b[32mtest\x1b[0m "))
assert.Equal(t, "\x1b[32mtest\x1b[0m", Colors{FgRed}.Sprint("\x1b[32mtest\x1b[0m"))
}
func ExampleColors_Sprintf() {
fmt.Printf("%#v\n", Colors{BgBlack}.Sprintf("%s %s", "Black", "Background"))
fmt.Printf("%#v\n", Colors{BgBlack, FgWhite}.Sprintf("%s, %s", "Black Background", "White Foreground"))
fmt.Printf("%#v\n", Colors{FgBlack}.Sprintf("%s %s", "Black", "Foreground"))
fmt.Printf("%#v\n", Colors{FgBlack, BgWhite}.Sprintf("%s, %s", "Black Foreground", "White Background"))
// Output: "\x1b[40mBlack Background\x1b[0m"
// "\x1b[40;37mBlack Background, White Foreground\x1b[0m"
// "\x1b[30mBlack Foreground\x1b[0m"
// "\x1b[30;47mBlack Foreground, White Background\x1b[0m"
}
func TestColors_Sprintf(t *testing.T) {
assert.Equal(t, "test true", Colors{}.Sprintf("test %s", "true"))
assert.Equal(t, "\x1b[31mtest true\x1b[0m", Colors{FgRed}.Sprintf("test %s", "true"))
}