github.com/chain5j/chain5j-pkg@v1.0.7/color/color_test.go (about)

     1  // Package color
     2  //
     3  // @author: xwc1125
     4  package color
     5  
     6  import (
     7  	"fmt"
     8  	"strings"
     9  	"testing"
    10  )
    11  
    12  func TestColor(t *testing.T) {
    13  	// 默认的不带任何效果的字体显示
    14  	fmt.Println(Green("字体:Green"))
    15  	fmt.Println(LightGreen("字体:LightGreen"))
    16  	fmt.Println(Cyan("字体:Cyan"))
    17  	fmt.Println(LightCyan("字体:LightCyan"))
    18  	fmt.Println(Red("字体:Red"))
    19  	fmt.Println(LightRed("字体:LightRed"))
    20  	fmt.Println(Yellow("字体:Yellow"))
    21  	fmt.Println(Black("字体:Black"))
    22  	fmt.Println(DarkGray("字体:DarkGray"))
    23  	fmt.Println(LightGray("字体:LightGray"))
    24  	fmt.Println(White("字体:White"))
    25  	fmt.Println(Blue("字体:Blue"))
    26  	fmt.Println(LightBlue("字体:LightBlue"))
    27  	fmt.Println(Purple("字体:Purple"))
    28  	fmt.Println(LightPurple("字体:LightPurple"))
    29  	fmt.Println(Brown("字体:Brown"))
    30  	fmt.Println(Blue("字体:Blue", 1, 1))
    31  
    32  	// 带闪烁效果的彩色字体显示
    33  	fmt.Println(Green("闪烁字体:Green", 1, 1))
    34  	fmt.Println(LightGreen("闪烁字体:LightGreen", 1))
    35  	fmt.Println(Cyan("闪烁字体:Cyan", 1))
    36  	fmt.Println(LightCyan("闪烁字体:LightCyan", 1))
    37  	fmt.Println(Red("闪烁字体:Red", 1))
    38  	fmt.Println(LightRed("闪烁字体:LightRed", 1))
    39  	fmt.Println(Yellow("闪烁字体:Yellow", 1))
    40  	fmt.Println(Black("闪烁字体:Black", 1))
    41  	fmt.Println(DarkGray("闪烁字体:DarkGray", 1))
    42  	fmt.Println(LightGray("闪烁字体:LightGray", 1))
    43  	fmt.Println(White("闪烁字体:White", 1))
    44  	fmt.Println(Blue("闪烁字体:Blue", 1))
    45  	fmt.Println(LightBlue("闪烁字体:LightBlue", 1))
    46  	fmt.Println(Purple("闪烁字体:Purple", 1))
    47  	fmt.Println(LightPurple("闪烁字体:LightPurple", 1))
    48  	fmt.Println(Brown("闪烁字体:Brown", 1))
    49  
    50  	// 带下划线效果的字体显示
    51  	fmt.Println(Green("闪烁且带下划线字体:Green", 1, 1, 1))
    52  	fmt.Println(LightGreen("闪烁且带下划线字体:LightGreen", 1, 1))
    53  	fmt.Println(Cyan("闪烁且带下划线字体:Cyan", 1, 1))
    54  	fmt.Println(LightCyan("闪烁且带下划线字体:LightCyan", 1, 1))
    55  	fmt.Println(Red("闪烁且带下划线字体:Red", 1, 1))
    56  	fmt.Println(LightRed("闪烁且带下划线字体:LightRed", 1, 1))
    57  	fmt.Println(Yellow("闪烁且带下划线字体:Yellow", 1, 1))
    58  	fmt.Println(Black("闪烁且带下划线字体:Black", 1, 1))
    59  	fmt.Println(DarkGray("闪烁且带下划线字体:DarkGray", 1, 1))
    60  	fmt.Println(LightGray("闪烁且带下划线字体:LightGray", 1, 1))
    61  	fmt.Println(White("闪烁且带下划线字体:White", 1, 1))
    62  	fmt.Println(Blue("闪烁且带下划线字体:Blue", 1, 1))
    63  	fmt.Println(LightBlue("闪烁且带下划线字体:LightBlue", 1, 1))
    64  	fmt.Println(Purple("闪烁且带下划线字体:Purple", 1, 1))
    65  	fmt.Println(LightPurple("闪烁且带下划线字体:LightPurple", 1, 1))
    66  	fmt.Println(Brown("闪烁且带下划线字体:Brown", 1, 1))
    67  }
    68  
    69  // Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例:
    70  // fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B)
    71  // 其中0x1B是标记,[开始定义颜色,1代表高亮,40代表黑色背景,32代表绿色前景,0代表恢复默认颜色。显示效果为:
    72  func TestColor2(t *testing.T) {
    73  
    74  	fmt.Println(Green("字体:Green"))
    75  	fmt.Println(ColorRender("字体:Green", ForegroundColor_Green, BackgroundColor_Transparent))
    76  	fmt.Println(Green("闪烁字体:Green", 1))
    77  	fmt.Println(ColorRender("闪烁字体:Green", ForegroundColor_Green, BackgroundColor_Transparent, []ShowType{
    78  		ShowType_Blink,
    79  	}...))
    80  	fmt.Println(Green("闪烁且带下划线字体:Green", 1, 1))
    81  	fmt.Println(ColorRender("闪烁且带下划线字体:Green", ForegroundColor_Green, BackgroundColor_Transparent, []ShowType{
    82  		ShowType_Blink,
    83  		ShowType_Underline,
    84  	}...))
    85  
    86  	var foreground = 30
    87  	var background = 41
    88  	var typ1 = 1
    89  	msg := "字体:Green"
    90  	sprintf := fmt.Sprintf("%c[%d;%d;%dm%s%s%c[0m", 0x1B, typ1, background, foreground, "", msg, 0x1B)
    91  	fmt.Println(sprintf)
    92  	//  0  终端默认设置
    93  	//  1  高亮显示
    94  	//  4  使用下划线
    95  	//  5  闪烁
    96  	//  7  反白显示
    97  	//  8  不可见
    98  	var mo = []string{
    99  		"05", // 闪烁
   100  		// "04", // 使用下划线
   101  		// "07", // 反白显示
   102  		fmt.Sprintf("%d", 1), // 高亮显示
   103  		// fmt.Sprintf("%d", 0),// 终端默认设置
   104  		// fmt.Sprintf("%d", 8), // 不可见
   105  		fmt.Sprintf("%d", background), // 不可见
   106  	}
   107  	sprintf2 := fmt.Sprintf("\033[%s;%dm"+msg+"\033[0m", strings.Join(mo, ";"), foreground)
   108  	fmt.Println(sprintf2)
   109  	test1()
   110  	// test2()
   111  }
   112  
   113  func test1() {
   114  	fmt.Println("")
   115  	// 前景 背景 颜色
   116  	// ---------------------------------------
   117  	//  -  39  透明
   118  	// 30  40  黑色
   119  	// 31  41  红色
   120  	// 32  42  绿色
   121  	// 33  43  黄色
   122  	// 34  44  蓝色
   123  	// 35  45  紫红色
   124  	// 36  46  青蓝色
   125  	// 37  47  白色
   126  	//
   127  	// 代码 意义
   128  	// -------------------------
   129  	//  0  终端默认设置
   130  	//  1  高亮显示
   131  	//  4  使用下划线
   132  	//  5  闪烁
   133  	//  7  反白显示
   134  	//  8  不可见
   135  
   136  	for background := 39; background <= 47; background++ { // 背景色彩 = 39-47
   137  		for foreground := 30; foreground <= 37; foreground++ { // 前景色彩 = 30-37
   138  			for _, t := range []int{0, 1, 4, 5, 7, 8} { // 显示方式 = 0,1,4,5,7,8
   139  				msg := fmt.Sprintf("(f=%d,b=%d,t=%d)", foreground, background, t)
   140  				sprintf := fmt.Sprintf(" %c[%d;%d;%dm%s"+msg+"%c[0m ", 0x1B, t, background, foreground, "", 0x1B)
   141  				fmt.Print(sprintf)
   142  			}
   143  			fmt.Println("")
   144  		}
   145  		fmt.Println("")
   146  	}
   147  }
   148  
   149  func test2() {
   150  	// 0x1B是标记
   151  	// 1代表高亮,40代表黑色背景,32代表绿色前景,0代表恢复默认颜色
   152  	fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B)
   153  	fmt.Printf("\n %c[1;34;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B)
   154  }