Merge pull request #63 from Ivan-Marquez/feature/console-tests

feature/console-tests
This commit is contained in:
Alexander Lukyanchikov 2019-09-10 13:20:33 -04:00 committed by GitHub
commit c9d15c68a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 111 additions and 2 deletions

View File

@ -2,10 +2,11 @@ package console
import ( import (
"fmt" "fmt"
ui "github.com/gizak/termui/v3"
"log" "log"
"os" "os"
"time" "time"
ui "github.com/gizak/termui/v3"
) )
const ( const (
@ -38,10 +39,13 @@ func Init() {
} }
} }
// Close function calls Close from termui package,
// which closes termbox-go
func Close() { func Close() {
ui.Close() ui.Close()
} }
// Exit function exits the program successfully
func Exit(message string) { func Exit(message string) {
if len(message) > 0 { if len(message) > 0 {
println(message) println(message)

View File

@ -2,8 +2,9 @@ package console
import ( import (
"fmt" "fmt"
ui "github.com/gizak/termui/v3"
"runtime" "runtime"
ui "github.com/gizak/termui/v3"
) )
type Theme string type Theme string
@ -46,6 +47,7 @@ type Palette struct {
ReverseColor ui.Color ReverseColor ui.Color
} }
// GetPalette returns a color palette based on specified theme
func GetPalette(theme Theme) Palette { func GetPalette(theme Theme) Palette {
switch theme { switch theme {
case ThemeDark: case ThemeDark:
@ -69,6 +71,8 @@ func GetPalette(theme Theme) Palette {
} }
} }
// GetMenuColor returns a color based on the
// operating system target
func GetMenuColor() ui.Color { func GetMenuColor() ui.Color {
switch runtime.GOOS { switch runtime.GOOS {
case "windows": case "windows":
@ -78,6 +82,8 @@ func GetMenuColor() ui.Color {
} }
} }
// GetMenuColorReverse returns a color based on the
// operating system target
func GetMenuColorReverse() ui.Color { func GetMenuColorReverse() ui.Color {
switch runtime.GOOS { switch runtime.GOOS {
case "windows": case "windows":

99
console/palette_test.go Normal file
View File

@ -0,0 +1,99 @@
package console
import (
"testing"
ui "github.com/gizak/termui/v3"
)
func TestGetPalette(t *testing.T) {
var (
darkPalette = Palette{
BaseColor: ColorWhite,
ReverseColor: ColorBlack,
}
lightPalette = Palette{
BaseColor: ColorBlack,
ReverseColor: ColorWhite,
}
)
tests := []struct {
name string
input Theme
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.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)
}
}
}