|
221 | 221 | end
|
222 | 222 |
|
223 | 223 | describe '(special emoji / emoji sequences)' do
|
224 |
| - it 'works with singleton skin tone modifiers: width 2' do |
225 |
| - expect( "🏿".display_width(emoji: :all) ).to eq 2 |
226 |
| - end |
227 |
| - |
228 | 224 | it 'works with flags: width 2' do
|
229 | 225 | expect( "🇵🇹".display_width(emoji: :all) ).to eq 2
|
230 | 226 | end
|
|
239 | 235 | end
|
240 | 236 |
|
241 | 237 | describe '(modifiers and zwj sequences)' do
|
| 238 | + it 'applies simple skin tone modifiers' do |
| 239 | + expect( "👏🏽".display_width(emoji: :rgi) ).to eq 2 |
| 240 | + end |
| 241 | + |
242 | 242 | it 'counts RGI Emoji ZWJ sequence as width 2' do
|
243 |
| - expect( "🤾🏽♀️".display_width(1, emoji: :rgi) ).to eq 2 |
| 243 | + expect( "🤾🏽♀️".display_width(emoji: :rgi) ).to eq 2 |
244 | 244 | end
|
245 | 245 |
|
246 | 246 | it 'works for emoji involving characters which are east asian ambiguous' do
|
|
253 | 253 | it 'does no Emoji adjustments when emoji suport is disabled' do
|
254 | 254 | expect( "🤾🏽♀️".display_width(emoji: false) ).to eq 5
|
255 | 255 | expect( "❣️".display_width(emoji: :none) ).to eq 1
|
| 256 | + expect( "👏🏽".display_width(emoji: :none) ).to eq 4 |
256 | 257 | end
|
257 | 258 | end
|
258 | 259 |
|
|
277 | 278 | expect( "🤾🏽♀️".display_width(emoji: :rgi) ).to eq 2 # FQE
|
278 | 279 | expect( "🤾🏽♀".display_width(emoji: :rgi) ).to eq 2 # MQE
|
279 | 280 | expect( "❤🩹".display_width(emoji: :rgi) ).to eq 2 # UQE
|
| 281 | + expect( "👏🏽".display_width(emoji: :rgi) ).to eq 2 # Modifier |
| 282 | + expect( "J🏽".display_width(emoji: :rgi) ).to eq 3 # Modifier with invalid base |
280 | 283 | expect( "🤠🤢".display_width(emoji: :rgi) ).to eq 4 # Non-RGI/well-formed
|
281 | 284 | expect( "🚄🏾▶️".display_width(emoji: :rgi) ).to eq 6 # Invalid/non-Emoji sequence
|
282 | 285 | end
|
|
308 | 311 | expect( "🤾🏽♀️".display_width(emoji: :possible) ).to eq 2 # FQE
|
309 | 312 | expect( "🤾🏽♀".display_width(emoji: :possible) ).to eq 2 # MQE
|
310 | 313 | expect( "❤🩹".display_width(emoji: :possible) ).to eq 2 # UQE
|
| 314 | + expect( "👏🏽".display_width(emoji: :possible) ).to eq 2 # Modifier |
| 315 | + expect( "J🏽".display_width(emoji: :possible) ).to eq 3 # Modifier with invalid base |
311 | 316 | expect( "🤠🤢".display_width(emoji: :possible) ).to eq 2 # Non-RGI/well-formed
|
312 | 317 | expect( "🚄🏾▶️".display_width(emoji: :possible) ).to eq 6 # Invalid/non-Emoji sequence
|
313 | 318 | end
|
|
322 | 327 | expect( "🤾🏽♀️".display_width(emoji: :all) ).to eq 2 # FQE
|
323 | 328 | expect( "🤾🏽♀".display_width(emoji: :all) ).to eq 2 # MQE
|
324 | 329 | expect( "❤🩹".display_width(emoji: :all) ).to eq 2 # UQE
|
| 330 | + expect( "👏🏽".display_width(emoji: :all) ).to eq 2 # Modifier |
| 331 | + expect( "👏🏽".display_width(emoji: :all) ).to eq 2 # Modifier |
| 332 | + expect( "J🏽".display_width(emoji: :all) ).to eq 2 # Modifier with invalid base |
325 | 333 | expect( "🤠🤢".display_width(emoji: :all) ).to eq 2 # Non-RGI/well-formed
|
326 | 334 | expect( "🚄🏾▶️".display_width(emoji: :all) ).to eq 2 # Invalid/non-Emoji sequence
|
327 | 335 | end
|
|
336 | 344 | expect( "🤾🏽♀️".display_width(emoji: :all_no_vs16) ).to eq 2 # FQE
|
337 | 345 | expect( "🤾🏽♀".display_width(emoji: :all_no_vs16) ).to eq 2 # MQE
|
338 | 346 | expect( "❤🩹".display_width(emoji: :all_no_vs16) ).to eq 2 # UQE
|
| 347 | + expect( "👏🏽".display_width(emoji: :all_no_vs16) ).to eq 2 # Modifier |
| 348 | + expect( "J🏽".display_width(emoji: :all_no_vs16) ).to eq 2 # Modifier with wrong base |
339 | 349 | expect( "🤠🤢".display_width(emoji: :all_no_vs16) ).to eq 2 # Non-RGI/well-formed
|
340 | 350 | expect( "🚄🏾▶️".display_width(emoji: :all_no_vs16) ).to eq 2 # Invalid/non-Emoji sequence
|
341 | 351 | end
|
|
0 commit comments