mirror of
https://github.com/junegunn/fzf.git
synced 2026-04-26 09:26:00 +08:00
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package tui
|
|
|
|
import "testing"
|
|
|
|
func TestWrapLine(t *testing.T) {
|
|
// Basic wrapping
|
|
lines := WrapLine("hello world", 0, 7, 8, 2)
|
|
if len(lines) != 2 || lines[0].Text != "hello w" || lines[1].Text != "orld" {
|
|
t.Errorf("Basic wrap: %v", lines)
|
|
}
|
|
|
|
// Exact fit - no wrapping needed
|
|
lines = WrapLine("hello", 0, 5, 8, 2)
|
|
if len(lines) != 1 || lines[0].Text != "hello" || lines[0].DisplayWidth != 5 {
|
|
t.Errorf("Exact fit: %v", lines)
|
|
}
|
|
|
|
// With prefix length
|
|
lines = WrapLine("hello", 3, 5, 8, 2)
|
|
if len(lines) != 2 || lines[0].Text != "he" || lines[1].Text != "llo" {
|
|
t.Errorf("Prefix length: %v", lines)
|
|
}
|
|
|
|
// Empty string
|
|
lines = WrapLine("", 0, 10, 8, 2)
|
|
if len(lines) != 1 || lines[0].Text != "" || lines[0].DisplayWidth != 0 {
|
|
t.Errorf("Empty string: %v", lines)
|
|
}
|
|
|
|
// Continuation lines account for wrapSignWidth
|
|
lines = WrapLine("abcdefghij", 0, 5, 8, 2)
|
|
// First line: "abcde" (5 chars fit in width 5)
|
|
// Continuation max: 5-2=3, so "fgh" then "ij"
|
|
if len(lines) != 3 || lines[0].Text != "abcde" || lines[1].Text != "fgh" || lines[2].Text != "ij" {
|
|
t.Errorf("Continuation: %v", lines)
|
|
}
|
|
|
|
// Tab expansion
|
|
lines = WrapLine("\there", 0, 10, 4, 2)
|
|
if len(lines) != 1 || lines[0].DisplayWidth != 8 {
|
|
t.Errorf("Tab: %v", lines)
|
|
}
|
|
}
|
|
|
|
func TestHexToColor(t *testing.T) {
|
|
assert := func(expr string, r, g, b int) {
|
|
color := HexToColor(expr)
|
|
if !color.is24() ||
|
|
int((color>>16)&0xff) != r ||
|
|
int((color>>8)&0xff) != g ||
|
|
int((color)&0xff) != b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
assert("#ff0000", 255, 0, 0)
|
|
assert("#010203", 1, 2, 3)
|
|
assert("#102030", 16, 32, 48)
|
|
assert("#ffffff", 255, 255, 255)
|
|
}
|