diff options
Diffstat (limited to 'src/util/chars_test.go')
| -rw-r--r-- | src/util/chars_test.go | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/util/chars_test.go b/src/util/chars_test.go index b7983f30..0d3e4f37 100644 --- a/src/util/chars_test.go +++ b/src/util/chars_test.go @@ -1,6 +1,9 @@ package util -import "testing" +import ( + "fmt" + "testing" +) func TestToCharsAscii(t *testing.T) { chars := ToChars([]byte("foobar")) @@ -44,3 +47,37 @@ func TestTrimLength(t *testing.T) { check(" h o ", 5) check(" ", 0) } + +func TestCharsLines(t *testing.T) { + chars := ToChars([]byte("abcdef\n가나다\n\tdef")) + check := func(multiLine bool, maxLines int, wrapCols int, wrapSignWidth int, tabstop int, expectedNumLines int, expectedOverflow bool) { + lines, overflow := chars.Lines(multiLine, maxLines, wrapCols, wrapSignWidth, tabstop) + fmt.Println(lines, overflow) + if len(lines) != expectedNumLines || overflow != expectedOverflow { + t.Errorf("Invalid result: %d %v (expected %d %v)", len(lines), overflow, expectedNumLines, expectedOverflow) + } + } + + // No wrap + check(true, 1, 0, 0, 8, 1, true) + check(true, 2, 0, 0, 8, 2, true) + check(true, 3, 0, 0, 8, 3, false) + + // Wrap (2) + check(true, 4, 2, 0, 8, 4, true) + check(true, 5, 2, 0, 8, 5, true) + check(true, 6, 2, 0, 8, 6, true) + check(true, 7, 2, 0, 8, 7, true) + check(true, 8, 2, 0, 8, 8, true) + check(true, 9, 2, 0, 8, 9, false) + check(true, 9, 2, 0, 1, 8, false) // Smaller tab size + + // With wrap sign (3 + 1) + check(true, 100, 3, 1, 1, 8, false) + + // With wrap sign (3 + 2) + check(true, 100, 3, 2, 1, 12, false) + + // With wrap sign (3 + 2) and no multi-line + check(false, 100, 3, 2, 1, 13, false) +} |
