From 70bf8bc35dfb31eb1963c92fa72e38261fa0056a Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Tue, 25 Jun 2024 17:08:47 +0900 Subject: Add --wrap option and 'toggle-wrap' action (#3887) * `--wrap` * `--wrap-sign` * `toggle-wrap` Close #3619 Close #2236 Close #577 Close #461 --- src/util/chars_test.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'src/util/chars_test.go') 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) +} -- cgit v1.2.3