sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/

test/unit/util/test_string.rb (1633B) - raw

      1 # encoding: utf-8
      2 
      3 require "test_helper"
      4 
      5 require "sup/util"
      6 
      7 describe "Sup's String extension" do
      8   describe "#display_length" do
      9     let :data do
     10       [
     11         ['some words', 10,],
     12         ['δΈ­ζ–‡', 4,],
     13         ['Γ€', 1,],
     14         ['😱', 2],
     15         #['πŸ³οΈβ€πŸŒˆ', 2],  # Emoji ZWJ sequence not yet supported (see PR #563)
     16       ]
     17     end
     18 
     19     it "calculates display length of a string" do
     20       data.each do |(str, length)|
     21         assert_equal length, str.dup.display_length
     22       end
     23     end
     24   end
     25 
     26   describe "#slice_by_display_length(len)" do
     27     let :data do
     28       [
     29         ['some words', 6, 'some w'],
     30         ['δΈ­ζ–‡', 2, 'δΈ­'],
     31         ['Γ€lpha', 3, 'Γ€lp'],
     32         ['😱😱', 2, '😱'],
     33         #['πŸ³οΈβ€πŸŒˆ', 2, 'πŸ³οΈβ€πŸŒˆ'],  # Emoji ZWJ sequence not yet supported (see PR #563)
     34       ]
     35     end
     36 
     37     it "slices string by display length" do
     38       data.each do |(str, length, sliced)|
     39         assert_equal sliced, str.dup.slice_by_display_length(length)
     40       end
     41     end
     42   end
     43 
     44   describe "#wrap" do
     45     let :data do
     46       [
     47         ['some words', 6, ['some', 'words']],
     48         ['some words', 80, ['some words']],
     49         ['δΈ­ζ–‡', 2, ['δΈ­', 'ζ–‡']],
     50         ['δΈ­ζ–‡', 5, ['δΈ­ζ–‡']],
     51         ['Γ€lpha', 3, ['Γ€lp', 'ha']],
     52         ['😱😱', 2, ['😱', '😱']],
     53         #['πŸ³οΈβ€πŸŒˆπŸ³οΈβ€πŸŒˆ', 2, ['πŸ³οΈβ€πŸŒˆ', 'πŸ³οΈβ€πŸŒˆ']],  # Emoji ZWJ sequence not yet supported (see PR #563)
     54       ]
     55     end
     56 
     57     it "wraps string by display length" do
     58       data.each do |(str, length, wrapped)|
     59         assert_equal wrapped, str.dup.wrap(length)
     60       end
     61     end
     62   end
     63 end