diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2024-10-08 13:17:03 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2024-10-08 13:17:03 -0400 |
| commit | 13c771c84e6b86cebe6df14d0e92001f940581ba (patch) | |
| tree | 4b76f90de9c783dc3cb5da633bfc8434964e039d /util/util_test.go | |
| parent | 3b0e5c790ff51756c1317f4af83a2f0b0e66efd9 (diff) | |
Move ansi stripper to util package
Diffstat (limited to 'util/util_test.go')
| -rw-r--r-- | util/util_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/util/util_test.go b/util/util_test.go new file mode 100644 index 0000000..1c4ae39 --- /dev/null +++ b/util/util_test.go @@ -0,0 +1,50 @@ +package util_test; + +import ( + "io" + "nonsense-time/util" + "strings" + "testing" +) + +type stringReadCloser struct { + *strings.Reader +} + +func newStringReadCloser(s string) stringReadCloser { + rc := stringReadCloser{} + rc.Reader = strings.NewReader(s) + + return rc +} + +func (stringReadCloser) Close() error { + return nil +} + +func testAnsiStripper(t *testing.T, input string, expected string) { + reader := newStringReadCloser(input) + cleanReader := util.NewAnsiStripper(reader) + defer cleanReader.Close() + + buf := new(strings.Builder) + n, err := io.Copy(buf, cleanReader) + if err != nil { + t.Fatal("Error while copying cleaned text to output", err) + } + + result := buf.String() + + if n != int64(len(expected)) { + t.Errorf("Expected to write %d characters but wrote %d\n", 3, n) + } + + if result != expected { + t.Errorf("Expected string `%s` but wrote `%s`", "abc", result) + } +} + +func TestStripAnsiColors(t *testing.T) { + testAnsiStripper(t, "a\x1b[31mbc", "abc") + testAnsiStripper(t, "[\x1b[32minfo\x1b[39m]", "[info]") +} |
