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.
Files changed (89) hide show
  1. data/0 start all Tests.bat +23 -0
  2. data/History.txt +4 -0
  3. data/License.txt +21 -0
  4. data/Manifest.txt +88 -0
  5. data/PostInstall.txt +4 -0
  6. data/README.txt +48 -0
  7. data/Rakefile.rb +79 -0
  8. data/init.rb +2 -0
  9. data/lib/kyanite.rb +39 -0
  10. data/lib/kyanite/array.rb +5 -0
  11. data/lib/kyanite/array/array.rb +172 -0
  12. data/lib/kyanite/array/array2.rb +140 -0
  13. data/lib/kyanite/array/matrix2.rb +120 -0
  14. data/lib/kyanite/array_of_enumerables.rb +2 -0
  15. data/lib/kyanite/array_of_numerics.rb +2 -0
  16. data/lib/kyanite/array_of_strings.rb +2 -0
  17. data/lib/kyanite/basics.rb +60 -0
  18. data/lib/kyanite/dictionary.rb +116 -0
  19. data/lib/kyanite/enumerable.rb +7 -0
  20. data/lib/kyanite/enumerable/enumerable_enumerables.rb +70 -0
  21. data/lib/kyanite/enumerable/enumerable_numerics.rb +171 -0
  22. data/lib/kyanite/enumerable/enumerable_strings.rb +58 -0
  23. data/lib/kyanite/enumerable/structure.rb +170 -0
  24. data/lib/kyanite/general.rb +8 -0
  25. data/lib/kyanite/general/callerutils.rb +128 -0
  26. data/lib/kyanite/general/classutils.rb +246 -0
  27. data/lib/kyanite/general/kernel.rb +105 -0
  28. data/lib/kyanite/general/nil.rb +64 -0
  29. data/lib/kyanite/general/object.rb +86 -0
  30. data/lib/kyanite/general/true_false.rb +65 -0
  31. data/lib/kyanite/general/undoable.rb +24 -0
  32. data/lib/kyanite/hash.rb +170 -0
  33. data/lib/kyanite/matrix2.rb +2 -0
  34. data/lib/kyanite/nil.rb +3 -0
  35. data/lib/kyanite/numeric.rb +4 -0
  36. data/lib/kyanite/numeric/float.rb +26 -0
  37. data/lib/kyanite/numeric/integer.rb +34 -0
  38. data/lib/kyanite/numeric/numeric.rb +45 -0
  39. data/lib/kyanite/operation.rb +5 -0
  40. data/lib/kyanite/operation/call_tracker.rb +69 -0
  41. data/lib/kyanite/operation/rake.rb +101 -0
  42. data/lib/kyanite/operation/regexp.rb +23 -0
  43. data/lib/kyanite/operation/unit_test.rb +53 -0
  44. data/lib/kyanite/optimizer.rb +119 -0
  45. data/lib/kyanite/rake.rb +2 -0
  46. data/lib/kyanite/range.rb +54 -0
  47. data/lib/kyanite/set.rb +219 -0
  48. data/lib/kyanite/smart_load_path.rb +2 -0
  49. data/lib/kyanite/string.rb +13 -0
  50. data/lib/kyanite/string/cast.rb +104 -0
  51. data/lib/kyanite/string/chars.rb +184 -0
  52. data/lib/kyanite/string/chars_const.rb +190 -0
  53. data/lib/kyanite/string/diff.rb +78 -0
  54. data/lib/kyanite/string/div.rb +19 -0
  55. data/lib/kyanite/string/include.rb +43 -0
  56. data/lib/kyanite/string/list.rb +84 -0
  57. data/lib/kyanite/string/mgsub.rb +35 -0
  58. data/lib/kyanite/string/nested.rb +253 -0
  59. data/lib/kyanite/string/random.rb +69 -0
  60. data/lib/kyanite/string/split.rb +136 -0
  61. data/lib/kyanite/symbol.rb +19 -0
  62. data/lib/kyanite/tree.rb +99 -0
  63. data/lib/kyanite/undoable.rb +2 -0
  64. data/lib/kyanite/unit_test.rb +2 -0
  65. data/test/_start_all.rb +17 -0
  66. data/test/array/test_array.rb +106 -0
  67. data/test/array/test_matrix2.rb +162 -0
  68. data/test/enumerable/test_enumerable_enumerables.rb +46 -0
  69. data/test/enumerable/test_enumerable_numerics.rb +93 -0
  70. data/test/enumerable/test_enumerable_strings.rb +22 -0
  71. data/test/enumerable/test_structure.rb +220 -0
  72. data/test/general/test_classutils.rb +45 -0
  73. data/test/general/test_nil.rb +44 -0
  74. data/test/general/test_object.rb +49 -0
  75. data/test/general/test_true_false.rb +28 -0
  76. data/test/numeric/test_numeric_integer.rb +28 -0
  77. data/test/string/test_cast.rb +108 -0
  78. data/test/string/test_chars.rb +255 -0
  79. data/test/string/test_diff.rb +95 -0
  80. data/test/string/test_list.rb +141 -0
  81. data/test/string/test_nested.rb +361 -0
  82. data/test/string/test_split.rb +187 -0
  83. data/test/test_dictionary.rb +128 -0
  84. data/test/test_hash.rb +59 -0
  85. data/test/test_optimizer.rb +150 -0
  86. data/test/test_range.rb +41 -0
  87. data/test/test_set.rb +210 -0
  88. data/test/test_tree.rb +94 -0
  89. 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
+