@@ -71,11 +71,11 @@ describe("strings", function()
7171 { args = { " abcde" , 5 , nil , - 1 }, expected = { single = " abcde" , double = " abcde" } },
7272 { args = { " abcde" , 4 , nil , - 1 }, expected = { single = " …cde" , double = " …de" } },
7373 {
74- args = { " アイウエオ" , 11 , nil , 1 },
74+ args = { " アイウエオ" , 11 , nil , - 1 },
7575 expected = { single = " アイウエオ" , double = " アイウエオ" },
7676 },
7777 {
78- args = { " アイウエオ" , 10 , nil , 1 },
78+ args = { " アイウエオ" , 10 , nil , - 1 },
7979 expected = { single = " アイウエオ" , double = " アイウエオ" },
8080 },
8181 {
@@ -89,11 +89,34 @@ describe("strings", function()
8989 { args = { " ├─┤" , 4 , nil , - 1 }, expected = { single = " ├─┤" , double = " …┤" } },
9090 { args = { " ├─┤" , 3 , nil , - 1 }, expected = { single = " ├─┤" , double = " …" } },
9191 { 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 = " …" } },
92115 } do
93116 for _ , ambiwidth in ipairs { " single" , " double" } do
94117 local msg = (" ambiwidth = %s, direction = %s, [%s, %d] -> %s" ):format (
95118 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 " ,
97120 case .args [1 ],
98121 case .args [2 ],
99122 case .expected [ambiwidth ]
0 commit comments