From c50e99c4f0ec7e406a2a4d3f38208bf2f601fcd1 Mon Sep 17 00:00:00 2001 From: Brooke Hatton Date: Wed, 23 Mar 2022 18:36:29 +0000 Subject: [PATCH] add basic tests --- barchart_test.go | 10 +++ basic_text_printer_test.go | 10 +++ bigtext_printer_test.go | 10 +++ box_printer_test.go | 10 +++ brooke/thing.go | 165 +++++++++++++++++++++++++++++++++++++ bulletlist_printer_test.go | 10 +++ center_printer_test.go | 10 +++ header_printer_test.go | 10 +++ panel_printer_test.go | 10 +++ paragraph_printer_test.go | 10 +++ prefix_printer_test.go | 13 +++ section_printer_test.go | 10 +++ table_printer_test.go | 10 +++ tree_printer_test.go | 10 +++ 14 files changed, 298 insertions(+) create mode 100644 brooke/thing.go diff --git a/barchart_test.go b/barchart_test.go index b45b908e4..c1c6df03c 100644 --- a/barchart_test.go +++ b/barchart_test.go @@ -1,6 +1,7 @@ package pterm_test import ( + "os" "testing" "github.com/MarvinJWendt/testza" @@ -437,3 +438,12 @@ func TestBarChartPrinter_WithWidth(t *testing.T) { testza.AssertEqual(t, s, p2.Width) testza.AssertZero(t, p.Width) } + +func TestBarChartPrinter_WithWriter(t *testing.T) { + p := pterm.BarChartPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/basic_text_printer_test.go b/basic_text_printer_test.go index 15d8774c4..c73c67338 100644 --- a/basic_text_printer_test.go +++ b/basic_text_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -103,3 +104,12 @@ func TestBasicTextPrinter_WithStyle(t *testing.T) { testza.AssertEqual(t, s, p2.Style) } + +func TestBasicTextPrinter_WithWriter(t *testing.T) { + p := pterm.BasicTextPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/bigtext_printer_test.go b/bigtext_printer_test.go index 66b1dd4b9..94113e2e9 100644 --- a/bigtext_printer_test.go +++ b/bigtext_printer_test.go @@ -2,6 +2,7 @@ package pterm_test import ( "fmt" + "os" "strings" "testing" @@ -154,3 +155,12 @@ func TestDefaultLettersMaxHeight(t *testing.T) { testza.AssertTrue(t, h <= maxHeight, fmt.Sprintf("'%s' is too high", s)) } } + +func TestBigTextPrinter_WithWriter(t *testing.T) { + p := pterm.BigTextPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/box_printer_test.go b/box_printer_test.go index 55ece1967..add0ac71a 100644 --- a/box_printer_test.go +++ b/box_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -334,3 +335,12 @@ func TestBoxPrinter_WithHorizontalString(t *testing.T) { testza.AssertEqual(t, "-", p2.HorizontalString) testza.AssertZero(t, p.HorizontalString) } + +func TestBoxPrinter_WithWriter(t *testing.T) { + p := pterm.BoxPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/brooke/thing.go b/brooke/thing.go new file mode 100644 index 000000000..d71f29948 --- /dev/null +++ b/brooke/thing.go @@ -0,0 +1,165 @@ +package main + +import ( + "io" + "os" + "strconv" + "strings" + "time" + + "github.com/pterm/pterm" +) + +const delay = time.Second + +func introScreen() { + ptermLogo, _ := pterm.DefaultBigText.WithLetters( + pterm.NewLettersFromStringWithStyle("P", pterm.NewStyle(pterm.FgLightCyan)), + pterm.NewLettersFromStringWithStyle("Term", pterm.NewStyle(pterm.FgLightMagenta))). + Srender() + + pterm.DefaultCenter.Print(ptermLogo) + + pterm.DefaultCenter.Print(pterm.DefaultHeader.WithFullWidth().WithBackgroundStyle(pterm.NewStyle(pterm.BgLightBlue)).WithMargin(10).Sprint("PTDP - PTerm Demo Program")) + + pterm.Info.Println("This animation was generated with the latest version of PTerm!" + + "\nPTerm works on nearly every terminal and operating system." + + "\nIt's super easy to use!" + + "\nIf you want, you can customize everything :)" + + "\nYou can see the code of this demo in the " + pterm.LightMagenta("./_examples/demo") + " directory." + + "\n" + + "\nThis demo was updated at: 02 Jan 2006 - 15:04:05 MST") + pterm.Println() + introSpinner, _ := pterm.DefaultSpinner.WithShowTimer(false).WithRemoveWhenDone(true).Start("Waiting for 15 seconds...") + time.Sleep(delay) + for i := 14; i > 0; i-- { + if i > 1 { + introSpinner.UpdateText("Waiting for " + strconv.Itoa(i) + " seconds...") + } else { + introSpinner.UpdateText("Waiting for " + strconv.Itoa(i) + " second...") + } + time.Sleep(delay) + } + introSpinner.Stop() +} + +var pseudoProgramList = strings.Split("pseudo-excel pseudo-photoshop pseudo-chrome pseudo-outlook pseudo-explorer "+ + "pseudo-dops pseudo-git pseudo-vsc pseudo-intellij pseudo-minecraft pseudo-scoop pseudo-chocolatey", " ") + +var b io.Writer = os.Stdout + +func main() { + + spinnerSuccess, _ := pterm.DefaultSpinner.Start("Doing something important... (will succeed)") + + spinnerFail, _ := pterm.DefaultSpinner.WithWriter(os.Stderr).Start("Doing something important... (will fail)") + time.Sleep(time.Second * 2) // Simulate 3 seconds of processing something. + spinnerFail.Fail() // Resolve spinner with success message. + time.Sleep(time.Second * 2) // Simulate 3 seconds of processing something. + spinnerSuccess.Success() // Resolve spinner with success message. + // d := pterm.TableData{ + // {"Firstname", "Lastname", "Email"}, + // {"Paul", "Dean", "nisi.dictum.augue@velitAliquam.co.uk"}, + // {"Callie", "Mckay", "egestas.nunc.sed@est.com"}, + // {"Libby", "Camacho", "aliquet.lobortis@semper.com"}, + // } + // pterm.DefaultTable.WithHasHeader().WithData(d).Render() + // // WithLeftAlignment + // printer := pterm.DefaultTable.WithHasHeader().WithLeftAlignment().WithData(d) + // printer.Render() + + // introScreen() + // pseudoApplicationHeader() + // time.Sleep(delay) + // installingPseudoList() + // time.Sleep(delay * 2) + // pterm.DefaultSection.WithLevel(2).Println("Program Install Report") + // installedProgramsSize() + // time.Sleep(delay * 4) + // pterm.DefaultSection.Println("Tree Printer") + // installedTree() + // time.Sleep(delay * 4) + // pterm.DefaultSection.Println("TrueColor Support") + // fadeText() + // time.Sleep(delay) + // pterm.DefaultSection.Println("Bullet List Printer") + // listPrinter() +} + +func installedTree() { + leveledList := pterm.LeveledList{ + pterm.LeveledListItem{Level: 0, Text: "C:"}, + pterm.LeveledListItem{Level: 1, Text: "Go"}, + pterm.LeveledListItem{Level: 1, Text: "Windows"}, + pterm.LeveledListItem{Level: 1, Text: "Programs"}, + } + for _, s := range pseudoProgramList { + if s != "pseudo-minecraft" { + leveledList = append(leveledList, pterm.LeveledListItem{Level: 2, Text: s}) + } + if s == "pseudo-chrome" { + leveledList = append(leveledList, pterm.LeveledListItem{Level: 3, Text: "pseudo-Tabs"}) + leveledList = append(leveledList, pterm.LeveledListItem{Level: 3, Text: "pseudo-Extensions"}) + leveledList = append(leveledList, pterm.LeveledListItem{Level: 4, Text: "Refined GitHub"}) + leveledList = append(leveledList, pterm.LeveledListItem{Level: 4, Text: "GitHub Dark Theme"}) + leveledList = append(leveledList, pterm.LeveledListItem{Level: 3, Text: "pseudo-Bookmarks"}) + leveledList = append(leveledList, pterm.LeveledListItem{Level: 4, Text: "PTerm"}) + } + } + + pterm.DefaultTree.WithRoot(pterm.NewTreeFromLeveledList(leveledList)).Render() +} + +func installingPseudoList() { + pterm.DefaultSection.Println("Installing pseudo programs") + + p, _ := pterm.DefaultProgressbar.WithTotal(len(pseudoProgramList)).WithTitle("Installing stuff").Start() + for i := 0; i < p.Total; i++ { + p.UpdateTitle("Installing " + pseudoProgramList[i]) + if pseudoProgramList[i] == "pseudo-minecraft" { + pterm.Warning.Println("Could not install pseudo-minecraft\nThe company policy forbids games.") + } else { + pterm.Success.Println("Installing " + pseudoProgramList[i]) + p.Increment() + } + time.Sleep(delay / 2) + } + p.Stop() +} + +func listPrinter() { + pterm.NewBulletListFromString(`Good bye + Have a nice day!`, " ").Render() +} + +func fadeText() { + from := pterm.NewRGB(0, 255, 255) // This RGB value is used as the gradients start point. + to := pterm.NewRGB(255, 0, 255) // This RGB value is used as the gradients first point. + + str := "If your terminal has TrueColor support, you can use RGB colors!\nYou can even fade them :)" + strs := strings.Split(str, "") + var fadeInfo string // String which will be used to print info. + // For loop over the range of the string length. + for i := 0; i < len(str); i++ { + // Append faded letter to info string. + fadeInfo += from.Fade(0, float32(len(str)), float32(i), to).Sprint(strs[i]) + } + pterm.Info.Println(fadeInfo) +} + +func installedProgramsSize() { + d := pterm.TableData{{"Program Name", "Status", "Size"}} + for _, s := range pseudoProgramList { + if s != "pseudo-minecraft" { + d = append(d, []string{s, pterm.LightGreen("pass"), "50mb"}) + } else { + d = append(d, []string{pterm.LightRed(s), pterm.LightRed("fail"), "0mb"}) + } + } + pterm.DefaultTable.WithHasHeader().WithData(d).Render() +} + +func pseudoApplicationHeader() *pterm.TextPrinter { + return pterm.DefaultHeader.WithBackgroundStyle(pterm.NewStyle(pterm.BgLightBlue)).WithMargin(10).Println( + "Pseudo Application created with PTerm") +} diff --git a/bulletlist_printer_test.go b/bulletlist_printer_test.go index 520ea34d6..3917c5e4f 100644 --- a/bulletlist_printer_test.go +++ b/bulletlist_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "fmt" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -153,3 +154,12 @@ func TestNewBulletListFromString(t *testing.T) { testza.AssertEqual(t, p, p2) } + +func TestBulletListPrinter_WithWriter(t *testing.T) { + p := pterm.BulletListPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/center_printer_test.go b/center_printer_test.go index dbfb149e8..e9be5a307 100644 --- a/center_printer_test.go +++ b/center_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -151,3 +152,12 @@ func TestCenterPrinter_SprintLineLongerThanTerminalWithCenterEachLineSeparately( testza.AssertContains(t, p2, "a") } + +func TestCenterPrinter_WithWriter(t *testing.T) { + p := pterm.CenterPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/header_printer_test.go b/header_printer_test.go index fd704f6dd..6dffb4ee3 100644 --- a/header_printer_test.go +++ b/header_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -145,3 +146,12 @@ func TestHeaderPrinter_WithTextStyle(t *testing.T) { testza.AssertEqual(t, s, p2.TextStyle) } + +func TestHeaderPrinter_WithWriter(t *testing.T) { + p := pterm.HeaderPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/panel_printer_test.go b/panel_printer_test.go index 85f81aaec..60ccdc074 100644 --- a/panel_printer_test.go +++ b/panel_printer_test.go @@ -2,6 +2,7 @@ package pterm_test import ( "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -150,3 +151,12 @@ func TestPanelPrinter_WithBoxPrinter(t *testing.T) { testza.AssertEqual(t, pterm.DefaultBox, p2.BoxPrinter) testza.AssertZero(t, p.BoxPrinter) } + +func TestPanelPrinter_WithWriter(t *testing.T) { + p := pterm.PanelPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/paragraph_printer_test.go b/paragraph_printer_test.go index 8fa3821cb..d5c4e7491 100644 --- a/paragraph_printer_test.go +++ b/paragraph_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -111,3 +112,12 @@ func TestParagraphPrinter_WithMaxWidth(t *testing.T) { testza.AssertEqual(t, 1337, p2.MaxWidth) } + +func TestParagraphPrinter_WithWriter(t *testing.T) { + p := pterm.ParagraphPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/prefix_printer_test.go b/prefix_printer_test.go index 213e03e4c..a642cd1f1 100644 --- a/prefix_printer_test.go +++ b/prefix_printer_test.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -412,3 +413,15 @@ func TestPrefixPrinter_WithLineNumberOffset(t *testing.T) { }) } } + +func TestPrefixPrinter_WithWriter(t *testing.T) { + for _, p := range prefixPrinters { + t.Run("", func(t *testing.T) { + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) + }) + } +} diff --git a/section_printer_test.go b/section_printer_test.go index 69c47be93..2985c521c 100644 --- a/section_printer_test.go +++ b/section_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "errors" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -135,3 +136,12 @@ func TestSectionPrinter_WithIndentCharacter(t *testing.T) { testza.AssertEqual(t, "#", p2.IndentCharacter) testza.AssertZero(t, p.IndentCharacter) } + +func TestSectionPrinter_WithWriter(t *testing.T) { + p := pterm.SectionPrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/table_printer_test.go b/table_printer_test.go index d5a5a3b88..f3bed887f 100644 --- a/table_printer_test.go +++ b/table_printer_test.go @@ -3,6 +3,7 @@ package pterm_test import ( "encoding/csv" "io" + "os" "testing" "github.com/MarvinJWendt/testza" @@ -175,3 +176,12 @@ func TestTablePrinter_WithRightAlignment(t *testing.T) { testza.AssertEqual(t, s, p2.RightAlignment) } + +func TestTablePrinter_WithWriter(t *testing.T) { + p := pterm.TablePrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +} diff --git a/tree_printer_test.go b/tree_printer_test.go index dc3a2f8d3..326e10899 100644 --- a/tree_printer_test.go +++ b/tree_printer_test.go @@ -1,6 +1,7 @@ package pterm_test import ( + "os" "testing" "github.com/MarvinJWendt/testza" @@ -196,3 +197,12 @@ func TestTreePrinter_WithIndentInvalid(t *testing.T) { testza.AssertEqual(t, 1, p2.Indent) testza.AssertZero(t, p.Indent) } + +func TestTreePrinter_WithWriter(t *testing.T) { + p := pterm.TreePrinter{} + s := os.Stderr + p2 := p.WithWriter(s) + + testza.AssertEqual(t, s, p2.Writer) + testza.AssertZero(t, p.Writer) +}