diff options
-rw-r--r-- | cmd/rescribe/gui_test.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/cmd/rescribe/gui_test.go b/cmd/rescribe/gui_test.go new file mode 100644 index 0000000..3c90000 --- /dev/null +++ b/cmd/rescribe/gui_test.go @@ -0,0 +1,76 @@ +// Copyright 2022 Nick White. +// Use of this source code is governed by the GPLv3 +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "strings" + "testing" + "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/widget" +) + +func TestFormatProgressBar(t *testing.T) { + cases := []struct { + val float64 + str string + }{ + {0.0, ""}, + {0.01, "Processing"}, + {0.11, "Downloading"}, + {0.12, "Processing PDF"}, + {0.2, "Preprocessing"}, + {0.5, "OCRing"}, + {0.55, "OCRing"}, + {0.89, "OCRing"}, + {0.9, "Analysing"}, + {1.0, "Done"}, + {1.1, "Processing"}, + } + + _ = app.New() // shouldn't be needed for test but we get a panic without it + bar := widget.NewProgressBar() + + for _, c := range cases { + t.Run(fmt.Sprintf("%s_%.1f", c.str, c.val), func(t *testing.T) { + bar.Value = c.val + got := formatProgressBar(bar)() + if got != c.str { + t.Fatalf("Expected %s, got %s", c.str, got) + } + }) + } +} + +func TestUpdateProgress(t *testing.T) { + cases := []struct { + log string + val float64 + }{ + {"Downloading", 0.11}, + {"Preprocessing", 0.2}, + {"Preprocessing\nOCRing", 0.5}, + {"Preprocessing\nOCRing...", 0.53}, + {"OCRing........................................", 0.89}, + {"OCRing..\nAnalysing", 0.9}, + {"Done", 1.0}, + {"Weirdness", 0.0}, + } + + _ = app.New() // shouldn't be needed for test but we get a panic without it + bar := widget.NewProgressBar() + + for _, c := range cases { + t.Run(c.log, func(t *testing.T) { + l := strings.ReplaceAll(" "+c.log, "\n", "\n ") + bar.Value = 0.0 + updateProgress(l, bar) + got := bar.Value + if got != c.val { + t.Fatalf("Expected %f, got %f", c.val, got) + } + }) + } +} |