1
0
textedit/indent_test.go

124 lines
3.1 KiB
Go

package textedit_test
import (
"bytes"
"code.squareroundforest.org/arpio/textedit"
"testing"
)
func TestIndent(t *testing.T) {
t.Run("no indent no wrap", func(t *testing.T) {
t.Run("empty", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", ""))
w.Write(nil)
w.Flush()
if b.String() != "" {
t.Fatal(b.String())
}
})
t.Run("new line", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", ""))
w.Write([]byte("\n"))
w.Flush()
if b.String() != "\n" {
t.Fatal(b.String())
}
})
t.Run("basic", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", ""))
w.Write([]byte("foo bar\n baz\nqux quux"))
w.Flush()
if b.String() != "foo bar\n baz\nqux quux" {
t.Fatal(b.String())
}
})
t.Run("closing new line", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", ""))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "foo bar\n baz\nqux quux\n" {
t.Fatal(b.String())
}
})
t.Run("word mid line", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", ""))
w.Write([]byte("foo bar bar foo\n baz\nqux quux\n"))
w.Flush()
if b.String() != "foo bar bar foo\n baz\nqux quux\n" {
t.Fatal(b.String())
}
})
})
t.Run("indent no wrap", func(t *testing.T) {
t.Run("first and rest same", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("xx", "xx"))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "xxfoo bar\nxx baz\nxxqux quux\n" {
t.Fatal(b.String())
}
})
t.Run("indent last word", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("xxxx", "xxxx"))
w.Write([]byte("foo bar bar foo\n baz\nqux quux\nfoo"))
w.Flush()
if b.String() != "xxxxfoo bar bar foo\nxxxx baz\nxxxxqux quux\nxxxxfoo" {
t.Fatal(b.String())
}
})
t.Run("first out", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("", "xx"))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "foo bar\nxx baz\nxxqux quux\n" {
t.Fatal(b.String())
}
})
t.Run("first in", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("xx", ""))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "xxfoo bar\n baz\nqux quux\n" {
t.Fatal(b.String())
}
})
t.Run("first out offset", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("xx", "xxxx"))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "xxfoo bar\nxxxx baz\nxxxxqux quux\n" {
t.Fatal(b.String())
}
})
t.Run("first in offset", func(t *testing.T) {
var b bytes.Buffer
w := textedit.New(&b, textedit.Indent("xxxx", "xx"))
w.Write([]byte("foo bar\n baz\nqux quux\n"))
w.Flush()
if b.String() != "xxxxfoo bar\nxx baz\nxxqux quux\n" {
t.Fatal(b.String())
}
})
})
}