github.com/kolbycrouch/elvish@v0.14.1-0.20210614162631-215b9ac1c423/pkg/wcwidth/wcwidth_test.go (about) 1 package wcwidth 2 3 import ( 4 "testing" 5 6 "src.elv.sh/pkg/tt" 7 ) 8 9 var Args = tt.Args 10 11 func TestOf(t *testing.T) { 12 tt.Test(t, tt.Fn("Of", Of), tt.Table{ 13 Args("\u0301").Rets(0), // Combining acute accent 14 Args("a").Rets(1), 15 Args("Ω").Rets(1), 16 Args("好").Rets(2), 17 Args("か").Rets(2), 18 19 Args("abc").Rets(3), 20 Args("你好").Rets(4), 21 }) 22 } 23 24 func TestOverride(t *testing.T) { 25 r := '❱' 26 oldw := OfRune(r) 27 w := oldw + 1 28 29 Override(r, w) 30 if OfRune(r) != w { 31 t.Errorf("Wcwidth(%q) != %d after OverrideWcwidth", r, w) 32 } 33 Unoverride(r) 34 if OfRune(r) != oldw { 35 t.Errorf("Wcwidth(%q) != %d after UnoverrideWcwidth", r, oldw) 36 } 37 } 38 39 func TestOverride_NegativeWidthRemovesOverride(t *testing.T) { 40 Override('x', 2) 41 Override('x', -1) 42 if OfRune('x') != 1 { 43 t.Errorf("Override with negative width did not remove override") 44 } 45 } 46 47 func TestConcurrentOverride(t *testing.T) { 48 go Override('x', 2) 49 _ = OfRune('x') 50 } 51 52 func TestTrim(t *testing.T) { 53 tt.Test(t, tt.Fn("Trim", Trim), tt.Table{ 54 Args("abc", 1).Rets("a"), 55 Args("abc", 2).Rets("ab"), 56 Args("abc", 3).Rets("abc"), 57 Args("abc", 4).Rets("abc"), 58 59 Args("你好", 1).Rets(""), 60 Args("你好", 2).Rets("你"), 61 Args("你好", 3).Rets("你"), 62 Args("你好", 4).Rets("你好"), 63 Args("你好", 5).Rets("你好"), 64 }) 65 } 66 67 func TestForce(t *testing.T) { 68 tt.Test(t, tt.Fn("Force", Force), tt.Table{ 69 // Trimming 70 Args("abc", 2).Rets("ab"), 71 Args("你好", 2).Rets("你"), 72 // Padding 73 Args("abc", 4).Rets("abc "), 74 Args("你好", 5).Rets("你好 "), 75 // Trimming and Padding 76 Args("你好", 3).Rets("你 "), 77 }) 78 } 79 80 func TestTrimEachLine(t *testing.T) { 81 tt.Test(t, tt.Fn("TrimEachLine", TrimEachLine), tt.Table{ 82 Args("abcdefg\n你好", 3).Rets("abc\n你"), 83 }) 84 }