From 44f9ba7441016432765c357251e80bf9aee42c70 Mon Sep 17 00:00:00 2001 From: Ivan Marquez Date: Sat, 7 Sep 2019 20:46:58 -0400 Subject: [PATCH 1/5] WIP: console package tests (palette) 20% code coverage. --- console/palette_test.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 console/palette_test.go diff --git a/console/palette_test.go b/console/palette_test.go new file mode 100644 index 0000000..55a205e --- /dev/null +++ b/console/palette_test.go @@ -0,0 +1,32 @@ +package console + +import "testing" + +func TestGetPalette(t *testing.T) { + var ( + darkPalette = Palette{ + BaseColor: ColorWhite, + ReverseColor: ColorBlack, + } + lightPalette = Palette{ + BaseColor: ColorBlack, + ReverseColor: ColorWhite, + } + ) + + tests := []struct { + name string + input Theme + want Palette + }{ + {"should return dark theme with base color white", ThemeDark, darkPalette}, + {"should return light theme with base color black", ThemeLight, lightPalette}, + } + + for _, test := range tests { + palette := GetPalette(test.input) + if got := palette.BaseColor; got != test.want.BaseColor { + t.Errorf("GetPalette(%q) = %d, want %d", test.input, got, test.want.BaseColor) + } + } +} From cb55f19565a32b3276779ad1771b759d4f10e9c3 Mon Sep 17 00:00:00 2001 From: Ivan Marquez Date: Sun, 8 Sep 2019 21:25:24 -0400 Subject: [PATCH 2/5] WIP: console package tests (palette) 53% code coverage. --- console/palette_test.go | 75 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/console/palette_test.go b/console/palette_test.go index 55a205e..1df5cf5 100644 --- a/console/palette_test.go +++ b/console/palette_test.go @@ -1,6 +1,10 @@ package console -import "testing" +import ( + "testing" + + ui "github.com/gizak/termui/v3" +) func TestGetPalette(t *testing.T) { var ( @@ -17,7 +21,7 @@ func TestGetPalette(t *testing.T) { tests := []struct { name string input Theme - want Palette + Palette }{ {"should return dark theme with base color white", ThemeDark, darkPalette}, {"should return light theme with base color black", ThemeLight, lightPalette}, @@ -25,8 +29,71 @@ func TestGetPalette(t *testing.T) { for _, test := range tests { palette := GetPalette(test.input) - if got := palette.BaseColor; got != test.want.BaseColor { - t.Errorf("GetPalette(%q) = %d, want %d", test.input, got, test.want.BaseColor) + if got := palette.BaseColor; got != test.BaseColor { + t.Errorf("GetPalette(%q) = %d, want %d", test.input, got, test.BaseColor) + } + } +} + +func TestGetPaletteInvalidTheme(t *testing.T) { + const invalid Theme = "invalid" + + defer func() { + if r := recover(); r == nil { + t.Errorf("GetPalette(%q) should have panicked", invalid) + } + }() + + GetPalette(invalid) +} + +func TestGetGradientColor(t *testing.T) { + type args struct { + gradient []ui.Color + cur int + max int + } + + var ( + lightThemeGradientInput = args{ + gradient: []ui.Color{ + 250, 248, 246, 244, 242, 240, 238, 236, 234, 232, 16, + }, + cur: 200, + max: 250, + } + + darkThemeGradientInput = args{ + gradient: []ui.Color{ + 39, 33, 62, 93, 164, 161, + }, + cur: 40, + max: 180, + } + + grey ui.Color = 234 + + blue ui.Color = 33 + ) + + tests := []struct { + name string + args + want ui.Color + }{ + {"should return color grey", lightThemeGradientInput, grey}, + {"should return color blue", darkThemeGradientInput, blue}, + } + + for _, test := range tests { + gradientColor := GetGradientColor( + test.gradient, + test.cur, + test.max, + ) + + if got := gradientColor; got != test.want { + t.Errorf("GetGradientColor(%v) = %d, want %d", test.args, got, test.want) } } } From 9ac16014638425b3e0eb4294e20060c9ae2f345b Mon Sep 17 00:00:00 2001 From: Ivan Marquez Date: Mon, 9 Sep 2019 20:11:22 -0400 Subject: [PATCH 3/5] DOC: adds descriptive comments to exported types and functions Comments for palette.go exported types and functions. --- console/palette.go | 57 +++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/console/palette.go b/console/palette.go index 88b865a..df75250 100644 --- a/console/palette.go +++ b/console/palette.go @@ -2,33 +2,52 @@ package console import ( "fmt" - ui "github.com/gizak/termui/v3" "runtime" + + ui "github.com/gizak/termui/v3" ) +// Theme is a representation of a theme type Theme string const ( - ThemeDark Theme = "dark" + // ThemeDark represents dark theme + ThemeDark Theme = "dark" + // ThemeLight represents light theme ThemeLight Theme = "light" ) const ( - ColorOlive ui.Color = 178 + // ColorOlive represents color olive + ColorOlive ui.Color = 178 + // ColorDeepSkyBlue represents color deepsky blue ColorDeepSkyBlue ui.Color = 39 - ColorDeepPink ui.Color = 198 - ColorCian ui.Color = 43 - ColorOrange ui.Color = 166 - ColorPurple ui.Color = 129 - ColorGreen ui.Color = 64 - ColorDarkRed ui.Color = 88 - ColorBlueViolet ui.Color = 57 - ColorDarkGrey ui.Color = 238 - ColorLightGrey ui.Color = 254 - ColorGrey ui.Color = 242 - ColorWhite ui.Color = 15 - ColorBlack ui.Color = 0 - ColorClear ui.Color = -1 + // ColorDeepPink represents color deep pink + ColorDeepPink ui.Color = 198 + // ColorCian represents color cyan + ColorCian ui.Color = 43 + // ColorOrange represents color orange + ColorOrange ui.Color = 166 + // ColorPurple represents color purple + ColorPurple ui.Color = 129 + // ColorGreen represents color green + ColorGreen ui.Color = 64 + // ColorDarkRed represents color dark red + ColorDarkRed ui.Color = 88 + // ColorBlueViolet represents color blue violet + ColorBlueViolet ui.Color = 57 + // ColorDarkGrey represents color dark grey + ColorDarkGrey ui.Color = 238 + // ColorLightGrey represents color light grey + ColorLightGrey ui.Color = 254 + // ColorGrey represents color grey + ColorGrey ui.Color = 242 + // ColorWhite represents color white + ColorWhite ui.Color = 15 + // ColorBlack represents color black + ColorBlack ui.Color = 0 + // ColorClear represents color clear + ColorClear ui.Color = -1 ) const ( @@ -38,6 +57,7 @@ const ( menuColorReverseWindows ui.Color = 0 ) +// Palette represents a color palette type Palette struct { ContentColors []ui.Color GradientColors [][]ui.Color @@ -46,6 +66,7 @@ type Palette struct { ReverseColor ui.Color } +// GetPalette returns a color palette based on specified theme func GetPalette(theme Theme) Palette { switch theme { case ThemeDark: @@ -69,6 +90,8 @@ func GetPalette(theme Theme) Palette { } } +// GetMenuColor returns a color based on the +// operating system target func GetMenuColor() ui.Color { switch runtime.GOOS { case "windows": @@ -78,6 +101,8 @@ func GetMenuColor() ui.Color { } } +// GetMenuColorReverse returns a color based on the +// operating system target func GetMenuColorReverse() ui.Color { switch runtime.GOOS { case "windows": From 7f47791c7b972009faa77b0fd12fc91fd4105317 Mon Sep 17 00:00:00 2001 From: Ivan Marquez Date: Mon, 9 Sep 2019 20:46:30 -0400 Subject: [PATCH 4/5] DOC: adds doc comments to exported functions Adds comments to console.go exported functions. --- console/console.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/console/console.go b/console/console.go index 9bbb2c5..d267d24 100644 --- a/console/console.go +++ b/console/console.go @@ -2,10 +2,11 @@ package console import ( "fmt" - ui "github.com/gizak/termui/v3" "log" "os" "time" + + ui "github.com/gizak/termui/v3" ) const ( @@ -38,10 +39,13 @@ func Init() { } } +// Close function calls Close from termui package, +// which closes termbox-go func Close() { ui.Close() } +// Exit function exits the program successfully func Exit(message string) { if len(message) > 0 { println(message) From 63a1a94fe7faeef117c6517f4458b3435ede79ae Mon Sep 17 00:00:00 2001 From: Ivan Marquez Date: Tue, 10 Sep 2019 11:19:41 -0400 Subject: [PATCH 5/5] DOC: removes comments from constants Removed comments from constants due that their names are already self descriptive. --- console/palette.go | 49 ++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/console/palette.go b/console/palette.go index df75250..fcd0c98 100644 --- a/console/palette.go +++ b/console/palette.go @@ -7,47 +7,29 @@ import ( ui "github.com/gizak/termui/v3" ) -// Theme is a representation of a theme type Theme string const ( - // ThemeDark represents dark theme - ThemeDark Theme = "dark" - // ThemeLight represents light theme + ThemeDark Theme = "dark" ThemeLight Theme = "light" ) const ( - // ColorOlive represents color olive - ColorOlive ui.Color = 178 - // ColorDeepSkyBlue represents color deepsky blue + ColorOlive ui.Color = 178 ColorDeepSkyBlue ui.Color = 39 - // ColorDeepPink represents color deep pink - ColorDeepPink ui.Color = 198 - // ColorCian represents color cyan - ColorCian ui.Color = 43 - // ColorOrange represents color orange - ColorOrange ui.Color = 166 - // ColorPurple represents color purple - ColorPurple ui.Color = 129 - // ColorGreen represents color green - ColorGreen ui.Color = 64 - // ColorDarkRed represents color dark red - ColorDarkRed ui.Color = 88 - // ColorBlueViolet represents color blue violet - ColorBlueViolet ui.Color = 57 - // ColorDarkGrey represents color dark grey - ColorDarkGrey ui.Color = 238 - // ColorLightGrey represents color light grey - ColorLightGrey ui.Color = 254 - // ColorGrey represents color grey - ColorGrey ui.Color = 242 - // ColorWhite represents color white - ColorWhite ui.Color = 15 - // ColorBlack represents color black - ColorBlack ui.Color = 0 - // ColorClear represents color clear - ColorClear ui.Color = -1 + ColorDeepPink ui.Color = 198 + ColorCian ui.Color = 43 + ColorOrange ui.Color = 166 + ColorPurple ui.Color = 129 + ColorGreen ui.Color = 64 + ColorDarkRed ui.Color = 88 + ColorBlueViolet ui.Color = 57 + ColorDarkGrey ui.Color = 238 + ColorLightGrey ui.Color = 254 + ColorGrey ui.Color = 242 + ColorWhite ui.Color = 15 + ColorBlack ui.Color = 0 + ColorClear ui.Color = -1 ) const ( @@ -57,7 +39,6 @@ const ( menuColorReverseWindows ui.Color = 0 ) -// Palette represents a color palette type Palette struct { ContentColors []ui.Color GradientColors [][]ui.Color