summaryrefslogtreecommitdiff
path: root/src/util/chars_test.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-06-25 17:08:47 +0900
committerGitHub <noreply@github.com>2024-06-25 17:08:47 +0900
commit70bf8bc35dfb31eb1963c92fa72e38261fa0056a (patch)
tree02d7481e3f208bc41923dc776ca6278882ed66e8 /src/util/chars_test.go
parent724f8a1d450e4929554cd882a0d25f05e336ba63 (diff)
downloadfzf-70bf8bc35dfb31eb1963c92fa72e38261fa0056a.tar.gz
Add --wrap option and 'toggle-wrap' action (#3887)
* `--wrap` * `--wrap-sign` * `toggle-wrap` Close #3619 Close #2236 Close #577 Close #461
Diffstat (limited to 'src/util/chars_test.go')
-rw-r--r--src/util/chars_test.go39
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)
+}