kyanite 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/0 start all Tests.bat +23 -0
- data/History.txt +4 -0
- data/License.txt +21 -0
- data/Manifest.txt +88 -0
- data/PostInstall.txt +4 -0
- data/README.txt +48 -0
- data/Rakefile.rb +79 -0
- data/init.rb +2 -0
- data/lib/kyanite.rb +39 -0
- data/lib/kyanite/array.rb +5 -0
- data/lib/kyanite/array/array.rb +172 -0
- data/lib/kyanite/array/array2.rb +140 -0
- data/lib/kyanite/array/matrix2.rb +120 -0
- data/lib/kyanite/array_of_enumerables.rb +2 -0
- data/lib/kyanite/array_of_numerics.rb +2 -0
- data/lib/kyanite/array_of_strings.rb +2 -0
- data/lib/kyanite/basics.rb +60 -0
- data/lib/kyanite/dictionary.rb +116 -0
- data/lib/kyanite/enumerable.rb +7 -0
- data/lib/kyanite/enumerable/enumerable_enumerables.rb +70 -0
- data/lib/kyanite/enumerable/enumerable_numerics.rb +171 -0
- data/lib/kyanite/enumerable/enumerable_strings.rb +58 -0
- data/lib/kyanite/enumerable/structure.rb +170 -0
- data/lib/kyanite/general.rb +8 -0
- data/lib/kyanite/general/callerutils.rb +128 -0
- data/lib/kyanite/general/classutils.rb +246 -0
- data/lib/kyanite/general/kernel.rb +105 -0
- data/lib/kyanite/general/nil.rb +64 -0
- data/lib/kyanite/general/object.rb +86 -0
- data/lib/kyanite/general/true_false.rb +65 -0
- data/lib/kyanite/general/undoable.rb +24 -0
- data/lib/kyanite/hash.rb +170 -0
- data/lib/kyanite/matrix2.rb +2 -0
- data/lib/kyanite/nil.rb +3 -0
- data/lib/kyanite/numeric.rb +4 -0
- data/lib/kyanite/numeric/float.rb +26 -0
- data/lib/kyanite/numeric/integer.rb +34 -0
- data/lib/kyanite/numeric/numeric.rb +45 -0
- data/lib/kyanite/operation.rb +5 -0
- data/lib/kyanite/operation/call_tracker.rb +69 -0
- data/lib/kyanite/operation/rake.rb +101 -0
- data/lib/kyanite/operation/regexp.rb +23 -0
- data/lib/kyanite/operation/unit_test.rb +53 -0
- data/lib/kyanite/optimizer.rb +119 -0
- data/lib/kyanite/rake.rb +2 -0
- data/lib/kyanite/range.rb +54 -0
- data/lib/kyanite/set.rb +219 -0
- data/lib/kyanite/smart_load_path.rb +2 -0
- data/lib/kyanite/string.rb +13 -0
- data/lib/kyanite/string/cast.rb +104 -0
- data/lib/kyanite/string/chars.rb +184 -0
- data/lib/kyanite/string/chars_const.rb +190 -0
- data/lib/kyanite/string/diff.rb +78 -0
- data/lib/kyanite/string/div.rb +19 -0
- data/lib/kyanite/string/include.rb +43 -0
- data/lib/kyanite/string/list.rb +84 -0
- data/lib/kyanite/string/mgsub.rb +35 -0
- data/lib/kyanite/string/nested.rb +253 -0
- data/lib/kyanite/string/random.rb +69 -0
- data/lib/kyanite/string/split.rb +136 -0
- data/lib/kyanite/symbol.rb +19 -0
- data/lib/kyanite/tree.rb +99 -0
- data/lib/kyanite/undoable.rb +2 -0
- data/lib/kyanite/unit_test.rb +2 -0
- data/test/_start_all.rb +17 -0
- data/test/array/test_array.rb +106 -0
- data/test/array/test_matrix2.rb +162 -0
- data/test/enumerable/test_enumerable_enumerables.rb +46 -0
- data/test/enumerable/test_enumerable_numerics.rb +93 -0
- data/test/enumerable/test_enumerable_strings.rb +22 -0
- data/test/enumerable/test_structure.rb +220 -0
- data/test/general/test_classutils.rb +45 -0
- data/test/general/test_nil.rb +44 -0
- data/test/general/test_object.rb +49 -0
- data/test/general/test_true_false.rb +28 -0
- data/test/numeric/test_numeric_integer.rb +28 -0
- data/test/string/test_cast.rb +108 -0
- data/test/string/test_chars.rb +255 -0
- data/test/string/test_diff.rb +95 -0
- data/test/string/test_list.rb +141 -0
- data/test/string/test_nested.rb +361 -0
- data/test/string/test_split.rb +187 -0
- data/test/test_dictionary.rb +128 -0
- data/test/test_hash.rb +59 -0
- data/test/test_optimizer.rb +150 -0
- data/test/test_range.rb +41 -0
- data/test/test_set.rb +210 -0
- data/test/test_tree.rb +94 -0
- metadata +217 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/general/true_false'
|
7
|
+
require 'kyanite/general/nil'
|
8
|
+
|
9
|
+
class TestKyaniteTrueFalse < UnitTest
|
10
|
+
|
11
|
+
def test_0_und_1
|
12
|
+
assert_equal 1, true.to_i
|
13
|
+
assert_equal 0, false.to_i
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
def test_raumschiff_operator
|
20
|
+
assert_equal 0, true <=> true
|
21
|
+
assert_equal 0, false <=> false
|
22
|
+
assert_equal -1, false <=> true
|
23
|
+
assert_equal 1, true <=> false
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
end # class
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/numeric'
|
7
|
+
|
8
|
+
class TestKyaniteNumeric < UnitTest
|
9
|
+
|
10
|
+
# ---------------------------------------------------------------------------------------------------------------------------------
|
11
|
+
# :section: Integer
|
12
|
+
#
|
13
|
+
|
14
|
+
def test_integer_triviales
|
15
|
+
a = 1
|
16
|
+
assert_equal Fixnum, a.class
|
17
|
+
assert_equal 1, a.to_integer
|
18
|
+
assert_equal 1, a.to_integer_optional
|
19
|
+
assert_equal 1, a.dup
|
20
|
+
|
21
|
+
a = 11111111111111111111111111111111111
|
22
|
+
assert_equal Bignum, a.class
|
23
|
+
assert_equal 11111111111111111111111111111111111, a.to_integer
|
24
|
+
assert_equal 11111111111111111111111111111111111, a.to_integer_optional
|
25
|
+
assert_equal 11111111111111111111111111111111111, a.dup
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class
|
@@ -0,0 +1,108 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/string/cast'
|
7
|
+
|
8
|
+
class TestKyaniteStringCast < UnitTest
|
9
|
+
|
10
|
+
def test_to_nil
|
11
|
+
assert_equal 'e', 'e'.to_nil
|
12
|
+
assert_equal nil, ''.to_nil
|
13
|
+
assert_equal nil, nil.to_nil
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def test_to_integer
|
18
|
+
assert_equal nil, "Hallo".to_integer
|
19
|
+
assert_equal 0, "Hallo0".to_integer
|
20
|
+
assert_equal 0, "0Hallo".to_integer
|
21
|
+
assert_equal nil, "".to_integer
|
22
|
+
assert_equal nil, nil.to_integer
|
23
|
+
assert_equal 23, 23.to_integer
|
24
|
+
|
25
|
+
# macht alles noch die alte Funktion to_i
|
26
|
+
assert_equal 123, "123Hallo2".to_integer
|
27
|
+
assert_equal 123, "123 Hallo2".to_integer
|
28
|
+
assert_equal 123, " 123 Hällo2".to_integer
|
29
|
+
assert_equal -123, " -123 Hallo2".to_integer
|
30
|
+
assert_equal -1, " -1,23 Hallo2".to_integer
|
31
|
+
|
32
|
+
# jetzt kommt die neue Funktionalität zum Zuge
|
33
|
+
assert_equal 42, "Hallo42".to_integer
|
34
|
+
assert_equal 42, "Hallo42JoJo".to_integer
|
35
|
+
assert_equal 42, " Hällo-42".to_integer
|
36
|
+
assert_equal 42, "Hallo42.1".to_integer
|
37
|
+
assert_equal 42, "Hallo42,1".to_integer
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
def test_to_integer_optional
|
43
|
+
assert_equal "Hallo", "Hallo".to_integer_optional
|
44
|
+
assert_equal "Hallo0", "Hallo0".to_integer_optional
|
45
|
+
assert_equal 0, "0Hallo".to_integer_optional
|
46
|
+
assert_equal nil, "".to_integer_optional
|
47
|
+
assert_equal nil, nil.to_integer_optional
|
48
|
+
assert_equal 23, 23.to_integer_optional
|
49
|
+
|
50
|
+
assert_equal 123, "123Hallo2".to_integer_optional
|
51
|
+
assert_equal 123, "123 Hallo2".to_integer_optional
|
52
|
+
assert_equal " 123 Hällo2", " 123 Hällo2".to_integer_optional # Spaces am Anfang sind nicht erlaubt
|
53
|
+
assert_equal -123, "-123 Hallo2".to_integer_optional
|
54
|
+
assert_equal -1, "-1,23 Hallo2".to_integer_optional
|
55
|
+
assert_equal "Hallo42", "Hallo42".to_integer_optional
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
def test_to_identifier
|
61
|
+
assert_equal 1, '1'.to_identifier
|
62
|
+
assert_equal 2, ' 2'.to_identifier
|
63
|
+
assert_equal 3, ' 3 '.to_identifier
|
64
|
+
assert_equal 4, '4 '.to_identifier
|
65
|
+
assert_equal 'a', 'a '.to_identifier
|
66
|
+
assert_equal 'b', ' b '.to_identifier
|
67
|
+
assert_equal 'c', ' c'.to_identifier
|
68
|
+
assert_equal 'hallo123', ' hallo123 '.to_identifier
|
69
|
+
assert_equal 123, ' 123hallo '.to_identifier
|
70
|
+
assert_equal 123, ' 123hallo456 '.to_identifier
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
end # class
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
@@ -0,0 +1,255 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/string/chars'
|
7
|
+
|
8
|
+
|
9
|
+
class TestKyaniteStringChars < UnitTest
|
10
|
+
|
11
|
+
# ---------------------------------------------------------------------------------------------------------------------------------
|
12
|
+
# :section: clear / format text
|
13
|
+
#
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
def test_reduce94_a
|
18
|
+
full = 'àáâăäãāåạąæảấầắằÀÁÂĂÄÃĀÅẠĄÆẢẤẦẮẰ'
|
19
|
+
reduced = 'aaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAA'
|
20
|
+
assert_equal reduced, full.reduce94
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_reduce94_b
|
24
|
+
full = 'ćĉčçċĆĈČÇĊďðđĎÐĐèéêěĕëēėęếÈÉÊĚĔËĒĖĘẾ'
|
25
|
+
reduced = 'cccccCCCCCdddDDDeeeeeeeeeeEEEEEEEEEE'
|
26
|
+
assert_equal reduced, full.reduce94
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_reduce94_c
|
30
|
+
full = 'ĝğġģĜĞĠĢĥħĤĦìíîĭïĩīıįijÌÍÎĬÏĨĪİĮIJĵĴķĸĶĺľłļŀĹĽŁĻĿ'
|
31
|
+
reduced = 'ggggGGGGhhHHiiiiiiiiiiIIIIIIIIIIjJkkKlllllLLLLL'
|
32
|
+
assert_equal reduced, full.reduce94
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_reduce94_e
|
36
|
+
full = 'ńňñņʼnŋŃŇÑŅŊòóôŏöõōøőơœÒÓÔŎÖÕŌØŐƠŒ'
|
37
|
+
reduced = 'nnnnnnNNNNNoooooooooooOOOOOOOOOOO'
|
38
|
+
assert_equal reduced, full.reduce94
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_reduce94_f
|
42
|
+
full = 'ŕřŗŔŘŖśŝšßşŚŜŠŞţťŧþŢŤŦÞùúûŭüũūůűųưÙÚÛŬÜŨŪŮŰŲƯŵŴýŷÿÝŶŸźżžŹŻŽ'
|
43
|
+
reduced = 'rrrRRRsssssSSSSttttTTTTuuuuuuuuuuuUUUUUUUUUUUwWyyyYYYzzzZZZ'
|
44
|
+
assert_equal reduced, full.reduce94
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
def test_reduce94_full
|
51
|
+
full = <<ENDOFSTRING
|
52
|
+
àáâăäãāåạąæảấầắằÀÁÂĂÄÃĀÅẠĄÆẢẤẦẮẰćĉčçċĆĈČÇĊďðđĎÐĐèéêěĕëēėęếÈÉÊĚĔËĒĖĘẾĝğġģĜĞĠĢĥħĤĦìíîĭïĩīıįijÌÍÎĬÏĨĪİĮIJĵĴķĶĺľłļŀĹĽŁĻĿńňñņʼnŋŃŇÑŅŊòóôŏöõōøőơœÒÓÔŎÖÕŌØŐƠŒŕřŗŔŘŖśŝšßşŚŜŠŞţťŧþŢŤŦÞùúûŭüũūůűųưÙÚÛŬÜŨŪŮŰŲƯŵŴýŷÿÝŶŸźżžŹŻŽ
|
53
|
+
ENDOFSTRING
|
54
|
+
|
55
|
+
reduced = <<ENDOFSTRING
|
56
|
+
aaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAcccccCCCCCdddDDDeeeeeeeeeeEEEEEEEEEEggggGGGGhhHHiiiiiiiiiiIIIIIIIIIIjJkKlllllLLLLLnnnnnnNNNNNoooooooooooOOOOOOOOOOOrrrRRRsssssSSSSttttTTTTuuuuuuuuuuuUUUUUUUUUUUwWyyyYYYzzzZZZ
|
57
|
+
ENDOFSTRING
|
58
|
+
|
59
|
+
full = full.chomp
|
60
|
+
reduced = reduced.chomp
|
61
|
+
|
62
|
+
assert_equal reduced, full.reduce94
|
63
|
+
|
64
|
+
# require 'perception'
|
65
|
+
# rawlog "\n----------------------------------------------------------\n\n"
|
66
|
+
# rawlog 'full= '
|
67
|
+
# rawlog full
|
68
|
+
# rawlog "\n"
|
69
|
+
# rawlog 'reduced= '
|
70
|
+
# rawlog reduced
|
71
|
+
# rawlog "\n"
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def test_reduce53_a
|
76
|
+
full = ' ŕřŗŔŘŖśŝšßşŚŜ ŠŞţťŧþŢŤŦÞùúûŭ üũūůűųưÙÚÛ ÜŨŪŮŰŲƯŵ ŴýŷÿÝŶŸźżžŹŻŽ '
|
77
|
+
reduced = 'rrrrrrsssssss-ssttttttttuuuu-uuuuuuuuuu-uuuuuuuw-wyyyyyyzzzzzz'
|
78
|
+
assert_equal reduced, full.reduce53
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_reduce53_b
|
82
|
+
full = " h A-- $%$%--llo §-$\n$^° "
|
83
|
+
reduced = 'H-A-LLO'
|
84
|
+
assert_equal reduced, full.reduce53
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_reduce53_c
|
88
|
+
full = " h A-- $%Ѥ%--llo\n §-$\n$^° "
|
89
|
+
reduced = 'H-A-LLO'
|
90
|
+
assert_equal reduced, full.reduce53
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_reduce53_d
|
94
|
+
full = " h Ä-- $%Ѥ%--llo\n §-$\n$^° "
|
95
|
+
reduced = 'H-a-LLO'
|
96
|
+
assert_equal reduced, full.reduce53
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_reduce53_e
|
100
|
+
full = " h ä-- $%Ѥ%--llo\n §-$\n$^° "
|
101
|
+
reduced = 'H-a-LLO'
|
102
|
+
assert_equal reduced, full.reduce53
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
def test_german_sz
|
107
|
+
assert_equal 'SCHEIßE', 'Scheiße'.upcase2
|
108
|
+
assert_equal 'SCHEIßE', 'scheiße'.upcase2
|
109
|
+
assert_equal 'scheiße', 'Scheiße'.downcase2
|
110
|
+
assert_equal 'scheiße', 'SCHEIßE'.downcase2
|
111
|
+
assert_equal 'Scheise', 'Scheiße'.reduce94
|
112
|
+
assert_equal 'SCHEIsE', 'Scheiße'.reduce53
|
113
|
+
assert_equal 'SCHEIzE', 'Scheiße'.reduce53(:german_sz => 'z')
|
114
|
+
assert_equal 'SCHEIZE', 'Scheiße'.reduce53(:german_sz => 'Z')
|
115
|
+
assert_equal 'SCHEISSE', 'Scheiße'.reduce53(:german_sz => 'SS')
|
116
|
+
|
117
|
+
# geht vielleicht in Ruby 1.9
|
118
|
+
# assert_equal 'Scheize', 'Scheiße'.reduce94(:german_sz => 'z')
|
119
|
+
# assert_equal 'ScheiZe', 'Scheiße'.reduce94(:german_sz => 'Z')
|
120
|
+
# assert_equal 'Scheisse', 'Scheiße'.reduce94(:german_sz => 'ss')
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
def test_camelcase
|
125
|
+
assert_equal 'TUKTUK', 'TukTuk'.reduce53
|
126
|
+
assert_equal 'TUKTUK', 'TukTuk'.reduce53(:camelcase => false)
|
127
|
+
assert_equal 'TUK-TUK', 'TukTuk'.reduce53(:camelcase => true)
|
128
|
+
assert_equal 'TUK-TUK', 'tukTuk'.reduce53(:camelcase => true)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
def test_mysqlize
|
134
|
+
test0 = 'aaoouuß'
|
135
|
+
test1 = 'aäoöuüss'
|
136
|
+
test2 = 'AÄOÖUÜSS'
|
137
|
+
test3 = 'AAOOUUß'
|
138
|
+
|
139
|
+
assert_equal test0, test0.mysqlize
|
140
|
+
assert_equal test0, test1.mysqlize
|
141
|
+
assert_equal test0, test2.mysqlize
|
142
|
+
assert_equal test0, test3.mysqlize
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
# ---------------------------------------------------------------------------------------------------------------------------------
|
150
|
+
# :section: Groß- und Kleinschreibung
|
151
|
+
#
|
152
|
+
|
153
|
+
|
154
|
+
def test_downcase_upcase
|
155
|
+
test_down = 'àáâăäãāåạąæảấầắằабćĉčçċцчďðđдèéêěĕëēėęếеэфĝğġģгĥħхìíîĭïĩīıįijийĵюяķкĺľłļŀлмńňñņŋнòóôŏöõōøőơœопŕřŗрśŝšşсшщţťŧþтùúûŭüũūůűųưувŵýŷÿźżžжз'
|
156
|
+
test_up = 'ÀÁÂĂÄÃĀÅẠĄÆẢẤẦẮẰАБĆĈČÇĊЦЧĎÐĐДÈÉÊĚĔËĒĖĘẾЕЭФĜĞĠĢГĤĦХÌÍÎĬÏĨĪİĮIJИЙĴЮЯĶКĹĽŁĻĿЛМŃŇÑŅŊНÒÓÔŎÖÕŌØŐƠŒОПŔŘŖРŚŜŠŞСШЩŢŤŦÞТÙÚÛŬÜŨŪŮŰŲƯУВŴÝŶŸŹŻŽЖЗ'
|
157
|
+
|
158
|
+
# Bescheid sagen, sobald Ruby oder ActiveSupport von sich aus funktionieren
|
159
|
+
assert_not_equal test_down, test_up.downcase
|
160
|
+
assert_not_equal test_down, test_up.mb_chars.downcase
|
161
|
+
|
162
|
+
assert_equal test_down, test_up.downcase2
|
163
|
+
assert_equal test_down, test_up.upcase2.downcase2
|
164
|
+
assert_equal test_down, test_up.upcase2.downcase2.upcase2.downcase2
|
165
|
+
|
166
|
+
assert_equal test_up, test_down.upcase2
|
167
|
+
assert_equal test_up, test_down.downcase2.upcase2
|
168
|
+
assert_equal test_up, test_down.downcase2.upcase2.downcase2.upcase2
|
169
|
+
|
170
|
+
teststrings = ['ÄÖÜ', 'äöü','ÄÖÜß', 'äöüß',]
|
171
|
+
teststrings.each do |t|
|
172
|
+
assert_equal t.upcase2, t.downcase2.upcase2
|
173
|
+
assert_equal t.downcase2, t.upcase2.downcase2
|
174
|
+
end
|
175
|
+
|
176
|
+
assert_equal 'ÄÖÜ', 'äöü'.upcase2
|
177
|
+
assert_equal 'ÄÖÜ', 'äöü'.upcase2.upcase2
|
178
|
+
assert_equal 'ÄÖÜß', 'äöüß'.upcase2.upcase2
|
179
|
+
assert_equal 'äöü', 'ÄÖÜ'.downcase2
|
180
|
+
assert_equal 'äöü', 'ÄÖÜ'.downcase2.downcase2
|
181
|
+
assert_equal 'äöüß', 'ÄÖÜß'.downcase2.downcase2
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
def test_capitalized?
|
186
|
+
assert !'hallo'.capitalized?
|
187
|
+
assert !'ħAllo'.capitalized?
|
188
|
+
assert !'ĥÅllo'.capitalized?
|
189
|
+
assert !'ätsch'.capitalized?
|
190
|
+
|
191
|
+
assert 'Hallo'.capitalized?
|
192
|
+
assert 'ĤAllo'.capitalized?
|
193
|
+
assert 'ĦAllo'.capitalized?
|
194
|
+
assert 'Ætsch Ruby scheißt auf Unicode'.capitalized?
|
195
|
+
assert 'Ūbel'.capitalized?
|
196
|
+
assert 'Øzi ist moderner'.capitalized?
|
197
|
+
end
|
198
|
+
|
199
|
+
|
200
|
+
def test_capitalize
|
201
|
+
test_down = 'äaoöuü'
|
202
|
+
test_up = 'ÄAOÖUÜ'
|
203
|
+
|
204
|
+
assert_equal 'Äaoöuü', 'äaoöuü'.mb_chars.capitalize
|
205
|
+
assert_equal 'Àaoöuü', 'àaoöuü'.mb_chars.capitalize
|
206
|
+
assert_equal 'Ăăaoöuü', 'ăăaoöuü'.mb_chars.capitalize
|
207
|
+
assert_equal 'Öaoöuü', 'Öaoöuü'.mb_chars.capitalize
|
208
|
+
end
|
209
|
+
|
210
|
+
|
211
|
+
def test_utf8_size
|
212
|
+
assert_equal 3, 'Özi'.mb_chars.size #erfordert $KCODE = 'UTF8'
|
213
|
+
end
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
end # class
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
|
@@ -0,0 +1,95 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'kyanite/smart_load_path'; smart_load_path
|
4
|
+
require 'perception' if $0 == __FILE__
|
5
|
+
|
6
|
+
require 'kyanite/string/diff'
|
7
|
+
|
8
|
+
class TestKyaniteStringDiff < UnitTest
|
9
|
+
|
10
|
+
def test_overlap
|
11
|
+
assert_equal "Hallo", "Hallo".overlap("Hallo Welt")
|
12
|
+
assert_equal "Hallo", "Hallo Welt".overlap("Hallo")
|
13
|
+
assert_equal "Hallo ", "Hallo Du".overlap("Hallo Welt")
|
14
|
+
assert_equal "Hällo ", "Hällo Du".overlap("Hällo Welt")
|
15
|
+
assert_equal "", "qH1allo Du".overlap("Hallo Welt")
|
16
|
+
assert_equal "q", "q# Dum Dum".overlap("q- Dam Dam")
|
17
|
+
assert_equal "", "GoBiLoooo".overlap(nil)
|
18
|
+
assert_equal "", "Hoa!".overlap('')
|
19
|
+
assert_equal "", "".overlap(nil)
|
20
|
+
assert_equal "", "".overlap('')
|
21
|
+
# assert_equal "", nil.overlap('')
|
22
|
+
# assert_equal "", nil.overlap('Ho')
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
def test_diff
|
28
|
+
assert_equal " Welt", "Hallo".diff("Hallo Welt")
|
29
|
+
assert_equal " Welt", "Hallo Welt".diff("Hallo")
|
30
|
+
assert_equal "Welt", "Hallo Du".diff("Hallo Welt")
|
31
|
+
assert_equal "Welt", "Hällo Du".diff("Hällo Welt")
|
32
|
+
assert_equal "qH1allo Du", "qH1allo Du".diff("Hallo Welt")
|
33
|
+
assert_equal "# Dum Dum", "q# Dum Dum".diff("q- Dam Dam")
|
34
|
+
assert_equal "GoBuuuoooo", "GoBuuuoooo".diff(nil)
|
35
|
+
assert_equal "Hoa!", "Hoa!".diff('')
|
36
|
+
assert_equal "", "".diff(nil)
|
37
|
+
assert_equal "", "".diff('')
|
38
|
+
assert_equal "", nil.diff('')
|
39
|
+
assert_equal "Ho", nil.diff('Ho')
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def test_overlapdiff
|
44
|
+
a, b = "Hallo".overlapdiff("Hallo Welt"); assert_equal "Hallo Welt", a + b
|
45
|
+
a, b = "Hallo Welt".overlapdiff("Hallo"); assert_equal "Hallo Welt", a + b
|
46
|
+
a, b = "Hallo Du".overlapdiff("Hallo Welt"); assert_equal "Hallo Welt", a + b
|
47
|
+
a, b = "Hällo Du".overlapdiff("Hällo Welt"); assert_equal "Hällo Welt", a + b
|
48
|
+
a, b = "qH1allo Du".overlapdiff("Hallo Welt"); assert_equal "qH1allo Du", a + b
|
49
|
+
a, b = "q# Dum Dum".overlapdiff("q- Dam Dam"); assert_equal "q# Dum Dum", a + b
|
50
|
+
a, b = "GoBuuuoooo".overlapdiff(nil); assert_equal "GoBuuuoooo", a + b
|
51
|
+
a, b = "".overlapdiff(nil); assert_equal "", a + b
|
52
|
+
a, b = "".overlapdiff(''); assert_equal "", a + b
|
53
|
+
a, b = nil.overlapdiff(''); assert_equal "", a + b
|
54
|
+
a, b = nil.overlapdiff('Ho'); assert_equal "Ho", a + b
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
end # class
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|