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