aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/util/util_test.go
diff options
context:
space:
mode:
authorJP Appel <jeanpierre.appel01@gmail.com>2024-10-08 13:17:03 -0400
committerJP Appel <jeanpierre.appel01@gmail.com>2024-10-08 13:17:03 -0400
commit13c771c84e6b86cebe6df14d0e92001f940581ba (patch)
tree4b76f90de9c783dc3cb5da633bfc8434964e039d /util/util_test.go
parent3b0e5c790ff51756c1317f4af83a2f0b0e66efd9 (diff)
Move ansi stripper to util package
Diffstat (limited to 'util/util_test.go')
-rw-r--r--util/util_test.go50
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]")
+}