@@ -71,11 +71,11 @@ describe("strings", function()
71
71
{ args = { " abcde" , 5 , nil , - 1 }, expected = { single = " abcde" , double = " abcde" } },
72
72
{ args = { " abcde" , 4 , nil , - 1 }, expected = { single = " …cde" , double = " …de" } },
73
73
{
74
- args = { " アイウエオ" , 11 , nil , 1 },
74
+ args = { " アイウエオ" , 11 , nil , - 1 },
75
75
expected = { single = " アイウエオ" , double = " アイウエオ" },
76
76
},
77
77
{
78
- args = { " アイウエオ" , 10 , nil , 1 },
78
+ args = { " アイウエオ" , 10 , nil , - 1 },
79
79
expected = { single = " アイウエオ" , double = " アイウエオ" },
80
80
},
81
81
{
@@ -89,11 +89,34 @@ describe("strings", function()
89
89
{ args = { " ├─┤" , 4 , nil , - 1 }, expected = { single = " ├─┤" , double = " …┤" } },
90
90
{ args = { " ├─┤" , 3 , nil , - 1 }, expected = { single = " ├─┤" , double = " …" } },
91
91
{ args = { " ├─┤" , 2 , nil , - 1 }, expected = { single = " …┤" , double = " …" } },
92
+ -- truncations from the middle
93
+ { args = { " abcde" , 6 , nil , 0 }, expected = { single = " abcde" , double = " abcde" } },
94
+ { args = { " abcde" , 5 , nil , 0 }, expected = { single = " abcde" , double = " abcde" } },
95
+ { args = { " abcde" , 4 , nil , 0 }, expected = { single = " a…de" , double = " a…e" } },
96
+ {
97
+ args = { " アイウエオ" , 11 , nil , 0 },
98
+ expected = { single = " アイウエオ" , double = " アイウエオ" },
99
+ },
100
+ {
101
+ args = { " アイウエオ" , 10 , nil , 0 },
102
+ expected = { single = " アイウエオ" , double = " アイウエオ" },
103
+ },
104
+ {
105
+ args = { " アイウエオ" , 9 , nil , 0 },
106
+ expected = { single = " アイ…エオ" , double = " ア…エオ" },
107
+ },
108
+ { args = { " アイウエオ" , 8 , nil , 0 }, expected = { single = " ア…エオ" , double = " ア…エオ" } },
109
+ { args = { " ├─┤" , 7 , nil , 0 }, expected = { single = " ├─┤" , double = " ├─┤" } },
110
+ { args = { " ├─┤" , 6 , nil , 0 }, expected = { single = " ├─┤" , double = " ├─┤" } },
111
+ { args = { " ├─┤" , 5 , nil , 0 }, expected = { single = " ├─┤" , double = " …┤" } },
112
+ { args = { " ├─┤" , 4 , nil , 0 }, expected = { single = " ├─┤" , double = " …┤" } },
113
+ { args = { " ├─┤" , 3 , nil , 0 }, expected = { single = " ├─┤" , double = " …" } },
114
+ { args = { " ├─┤" , 2 , nil , 0 }, expected = { single = " …┤" , double = " …" } },
92
115
} do
93
116
for _ , ambiwidth in ipairs { " single" , " double" } do
94
117
local msg = (" ambiwidth = %s, direction = %s, [%s, %d] -> %s" ):format (
95
118
ambiwidth ,
96
- (case .args [4 ] > 0 ) and " right" or " left" ,
119
+ (case .args [4 ] > 0 ) and " right" or ( case . args [ 4 ] < 0 ) and " left" or " middle " ,
97
120
case .args [1 ],
98
121
case .args [2 ],
99
122
case .expected [ambiwidth ]
0 commit comments