// // Copyright (c) 2016-2020 The Aurora Authors. All rights reserved. // This program is free software. It comes without any warranty, // to the extent permitted by applicable law. You can redistribute // it and/or modify it under the terms of the Unlicense. See LICENSE // file for more details or see below. // // // This is free and unencumbered software released into the public domain. // // Anyone is free to copy, modify, publish, use, compile, sell, or // distribute this software, either in source code form or as a compiled // binary, for any purpose, commercial or non-commercial, and by any // means. // // In jurisdictions that recognize copyright laws, the author or authors // of this software dedicate any and all copyright interest in the // software to the public domain. We make this dedication for the benefit // of the public at large and to the detriment of our heirs and // successors. We intend this dedication to be an overt act of // relinquishment in perpetuity of all present and future rights to this // software under copyright law. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR // OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // // For more information, please refer to // package aurora import ( "testing" ) func isClear(v Value) bool { return v.Color() == 0 && v.tail() == 0 } func isColor(v Value, clr Color) bool { return v.Color() == clr } func isTail(v Value, tl Color) bool { return v.tail() == tl } func Test_NewAurora(t *testing.T) { if a := NewAurora(false); a == nil { t.Error("NewAurora(false) returns nil") } if a := NewAurora(true); a == nil { t.Error("NewAurora(true) returns nil") } if t.Failed() { t.FailNow() } } func Test_auroraClear_methods(t *testing.T) { a := NewAurora(false) test := func(mn string, v Value) { if !isClear(v) { t.Errorf("NewAurora(false).%s is not clear", mn) } else if str, ok := v.Value().(string); !ok { t.Errorf("NewAurora(false).%s wrong value type", mn) } else if str != "x" { t.Errorf("NewAurora(false).%s wrong value", mn) } } test("Reset", a.Reset("x")) test("Bold", a.Bold("x")) test("Faint", a.Faint("x")) test("DoublyUnderline", a.DoublyUnderline("x")) test("Fraktur", a.Fraktur("x")) test("Italic", a.Italic("x")) test("Underline", a.Underline("x")) test("SlowBlink", a.SlowBlink("x")) test("RapidBlink", a.RapidBlink("x")) test("Blink", a.Blink("x")) test("Reverse", a.Reverse("x")) test("Inverse", a.Inverse("x")) test("Conceal", a.Conceal("x")) test("Hidden", a.Hidden("x")) test("CrossedOut", a.CrossedOut("x")) test("StrikeThrough", a.StrikeThrough("x")) test("Framed", a.Framed("x")) test("Encircled", a.Encircled("x")) test("Overlined", a.Overlined("x")) test("Black", a.Black("x")) test("Red", a.Red("x")) test("Green", a.Green("x")) test("Yellow", a.Yellow("x")) test("Brown", a.Brown("x")) test("Blue", a.Blue("x")) test("Magenta", a.Magenta("x")) test("Cyan", a.Cyan("x")) test("White", a.White("x")) test("BrightBlack", a.BrightBlack("x")) test("BrightRed", a.BrightRed("x")) test("BrightGreen", a.BrightGreen("x")) test("BrightYellow", a.BrightYellow("x")) test("BrightBlue", a.BrightBlue("x")) test("BrightMagenta", a.BrightMagenta("x")) test("BrightCyan", a.BrightCyan("x")) test("BrightWhite", a.BrightWhite("x")) test("Index", a.Index(178, "x")) test("Gray", a.Gray(14, "x")) test("BgBlack", a.BgBlack("x")) test("BgRed", a.BgRed("x")) test("BgGreen", a.BgGreen("x")) test("BgYellow", a.BgYellow("x")) test("BgBrown", a.BgBrown("x")) test("BgBlue", a.BgBlue("x")) test("BgMagenta", a.BgMagenta("x")) test("BgCyan", a.BgCyan("x")) test("BgWhite", a.BgWhite("x")) test("BgBrightBlack", a.BgBrightBlack("x")) test("BgBrightRed", a.BgBrightRed("x")) test("BgBrightGreen", a.BgBrightGreen("x")) test("BgBrightYellow", a.BgBrightYellow("x")) test("BgBrightBlue", a.BgBrightBlue("x")) test("BgBrightMagenta", a.BgBrightMagenta("x")) test("BgBrightCyan", a.BgBrightCyan("x")) test("BgBrightWhite", a.BgBrightWhite("x")) test("BgIndex", a.BgIndex(187, "x")) test("BgGray", a.BgGray(15, "x")) test("Colorize", a.Colorize("x", RedFg|BlueBg|BrightBg|BoldFm)) } func Test_auroraClear_sprintf(t *testing.T) { a := NewAurora(false) if s := a.Sprintf(a.Black("x: %d"), a.Blue(2)); s != "x: 2" { t.Error("NewAurora(false).Sprintf wrong value") } if s := a.Sprintf("x: %d", a.Blue(2)); s != "x: 2" { t.Error("NewAurora(false).Sprintf wrong value") } } func Test_aurora_methods(t *testing.T) { a := NewAurora(true) test := func(mn string, v Value, clr Color) { t.Helper() if !isColor(v, clr) { t.Errorf("NewAurora(true).%s wrong color: %d", mn, v.Color()) } else if !isTail(v, 0) { t.Errorf("NewAurora(true).%s unexpected tail value", mn) } else if str, ok := v.Value().(string); !ok { t.Errorf("NewAurora(true).%s wrong value type", mn) } else if str != "x" { t.Errorf("NewAurora(true).%s wrong value", mn) } } test("Reset", a.Reset("x"), 0) test("Bold", a.Bold("x"), BoldFm) test("Faint", a.Faint("x"), FaintFm) test("DoublyUnderline", a.DoublyUnderline("x"), DoublyUnderlineFm) test("Fraktur", a.Fraktur("x"), FrakturFm) test("Italic", a.Italic("x"), ItalicFm) test("Underline", a.Underline("x"), UnderlineFm) test("SlowBlink", a.SlowBlink("x"), SlowBlinkFm) test("RapidBlink", a.RapidBlink("x"), RapidBlinkFm) test("Blink", a.Blink("x"), BlinkFm) test("Reverse", a.Reverse("x"), ReverseFm) test("Inverse", a.Inverse("x"), InverseFm) test("Conceal", a.Conceal("x"), ConcealFm) test("Hidden", a.Hidden("x"), HiddenFm) test("CrossedOut", a.CrossedOut("x"), CrossedOutFm) test("StrikeThrough", a.StrikeThrough("x"), StrikeThroughFm) test("Framed", a.Framed("x"), FramedFm) test("Encircled", a.Encircled("x"), EncircledFm) test("Overlined", a.Overlined("x"), OverlinedFm) test("Black", a.Black("x"), BlackFg) test("Red", a.Red("x"), RedFg) test("Green", a.Green("x"), GreenFg) test("Yellow", a.Yellow("x"), YellowFg) test("Brown", a.Brown("x"), BrownFg) test("Blue", a.Blue("x"), BlueFg) test("Magenta", a.Magenta("x"), MagentaFg) test("Cyan", a.Cyan("x"), CyanFg) test("White", a.White("x"), WhiteFg) test("BrightBlack", a.BrightBlack("x"), BrightFg|BlackFg) test("BrightRed", a.BrightRed("x"), BrightFg|RedFg) test("BrightGreen", a.BrightGreen("x"), BrightFg|GreenFg) test("BrightYellow", a.BrightYellow("x"), BrightFg|YellowFg) test("BrightBlue", a.BrightBlue("x"), BrightFg|BlueFg) test("BrightMagenta", a.BrightMagenta("x"), BrightFg|MagentaFg) test("BrightCyan", a.BrightCyan("x"), BrightFg|CyanFg) test("BrightWhite", a.BrightWhite("x"), BrightFg|WhiteFg) test("Index", a.Index(178, "x"), (Color(178)<