# encoding: utf-8 require "test_helper" require "sup/util" describe "Sup's String extension" do describe "#display_length" do let :data do [ ['some words', 10,], ['δΈ­ζ–‡', 4,], ['Γ€', 1,], ['😱', 2], #['πŸ³οΈβ€πŸŒˆ', 2], # Emoji ZWJ sequence not yet supported (see PR #563) ] end it "calculates display length of a string" do data.each do |(str, length)| assert_equal length, str.display_length end end end describe "#slice_by_display_length(len)" do let :data do [ ['some words', 6, 'some w'], ['δΈ­ζ–‡', 2, 'δΈ­'], ['Γ€lpha', 3, 'Γ€lp'], ['😱😱', 2, '😱'], #['πŸ³οΈβ€πŸŒˆ', 2, 'πŸ³οΈβ€πŸŒˆ'], # Emoji ZWJ sequence not yet supported (see PR #563) ] end it "slices string by display length" do data.each do |(str, length, sliced)| assert_equal sliced, str.slice_by_display_length(length) end end end describe "#wrap" do let :data do [ ['some words', 6, ['some', 'words']], ['some words', 80, ['some words']], ['δΈ­ζ–‡', 2, ['δΈ­', 'ζ–‡']], ['δΈ­ζ–‡', 5, ['δΈ­ζ–‡']], ['Γ€lpha', 3, ['Γ€lp', 'ha']], ['😱😱', 2, ['😱', '😱']], #['πŸ³οΈβ€πŸŒˆπŸ³οΈβ€πŸŒˆ', 2, ['πŸ³οΈβ€πŸŒˆ', 'πŸ³οΈβ€πŸŒˆ']], # Emoji ZWJ sequence not yet supported (see PR #563) ] end it "wraps string by display length" do data.each do |(str, length, wrapped)| assert_equal wrapped, str.wrap(length) end end end end