120 lines
1.9 KiB
Go
120 lines
1.9 KiB
Go
package text
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
type T struct {
|
|
inp, exp, pre string
|
|
}
|
|
|
|
var tests = []T{
|
|
{
|
|
"The quick brown fox\njumps over the lazy\ndog.\nBut not quickly.\n",
|
|
"xxxThe quick brown fox\nxxxjumps over the lazy\nxxxdog.\nxxxBut not quickly.\n",
|
|
"xxx",
|
|
},
|
|
{
|
|
"The quick brown fox\njumps over the lazy\ndog.\n\nBut not quickly.",
|
|
"xxxThe quick brown fox\nxxxjumps over the lazy\nxxxdog.\n\nxxxBut not quickly.",
|
|
"xxx",
|
|
},
|
|
}
|
|
|
|
func TestIndent(t *testing.T) {
|
|
for _, test := range tests {
|
|
got := Indent(test.inp, test.pre)
|
|
if got != test.exp {
|
|
t.Errorf("mismatch %q != %q", got, test.exp)
|
|
}
|
|
}
|
|
}
|
|
|
|
type IndentWriterTest struct {
|
|
inp, exp string
|
|
pre []string
|
|
}
|
|
|
|
var ts = []IndentWriterTest{
|
|
{
|
|
`
|
|
The quick brown fox
|
|
jumps over the lazy
|
|
dog.
|
|
But not quickly.
|
|
`[1:],
|
|
`
|
|
xxxThe quick brown fox
|
|
xxxjumps over the lazy
|
|
xxxdog.
|
|
xxxBut not quickly.
|
|
`[1:],
|
|
[]string{"xxx"},
|
|
},
|
|
{
|
|
`
|
|
The quick brown fox
|
|
jumps over the lazy
|
|
dog.
|
|
But not quickly.
|
|
`[1:],
|
|
`
|
|
xxaThe quick brown fox
|
|
xxxjumps over the lazy
|
|
xxxdog.
|
|
xxxBut not quickly.
|
|
`[1:],
|
|
[]string{"xxa", "xxx"},
|
|
},
|
|
{
|
|
`
|
|
The quick brown fox
|
|
jumps over the lazy
|
|
dog.
|
|
But not quickly.
|
|
`[1:],
|
|
`
|
|
xxaThe quick brown fox
|
|
xxbjumps over the lazy
|
|
xxcdog.
|
|
xxxBut not quickly.
|
|
`[1:],
|
|
[]string{"xxa", "xxb", "xxc", "xxx"},
|
|
},
|
|
{
|
|
`
|
|
The quick brown fox
|
|
jumps over the lazy
|
|
dog.
|
|
|
|
But not quickly.`[1:],
|
|
`
|
|
xxaThe quick brown fox
|
|
xxxjumps over the lazy
|
|
xxxdog.
|
|
xxx
|
|
xxxBut not quickly.`[1:],
|
|
[]string{"xxa", "xxx"},
|
|
},
|
|
}
|
|
|
|
func TestIndentWriter(t *testing.T) {
|
|
for _, test := range ts {
|
|
b := new(bytes.Buffer)
|
|
pre := make([][]byte, len(test.pre))
|
|
for i := range test.pre {
|
|
pre[i] = []byte(test.pre[i])
|
|
}
|
|
w := NewIndentWriter(b, pre...)
|
|
if _, err := w.Write([]byte(test.inp)); err != nil {
|
|
t.Error(err)
|
|
}
|
|
if got := b.String(); got != test.exp {
|
|
t.Errorf("mismatch %q != %q", got, test.exp)
|
|
t.Log(got)
|
|
t.Log(test.exp)
|
|
}
|
|
}
|
|
}
|