text_alignment 0.2.9 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,322 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe TextAlignment::LCSAlignment do
4
- context 'for exception handling' do
5
- it 'should raise error for passing of nil strings' do
6
- expect {TextAlignment::LCSAlignment.new('abc', nil)}.to raise_error
7
- expect {TextAlignment::LCSAlignment.new(nil, 'abc')}.to raise_error
8
- expect {TextAlignment::LCSAlignment.new(nil, nil)}.to raise_error
9
- end
10
- end
11
-
12
- context 'in the middle of a string' do
13
- it 'should detect a deletion' do
14
- #0123456 0123
15
- sa = TextAlignment::LCSAlignment.new('abxyzcd', 'abcd')
16
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
17
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
18
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
19
- expect(sa.mapped_elements).to eq([])
20
- end
21
-
22
- it 'should detect an addition' do
23
- #0123 0123456
24
- sa = TextAlignment::LCSAlignment.new('abcd', 'abxyzcd')
25
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>6, 4=>7})
26
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>6, 4=>7})
27
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
28
- expect(sa.mapped_elements).to eq([])
29
- end
30
-
31
- it 'should detect a variation' do
32
- #0123456 012345
33
- sa = TextAlignment::LCSAlignment.new('abijkcd', 'abxycd')
34
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
35
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
36
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
37
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
38
- end
39
- end
40
-
41
- # context 'in the beginning of a string' do
42
- # it 'should detect a deletion' do
43
- # #012345 012
44
- # sa = TextAlignment::LCSAlignment.new('xyzabc', 'abc')
45
- # expect(sa.position_map_begin).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
46
- # expect(sa.position_map_end).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
47
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
48
- # expect(sa.mapped_elements).to eq([])
49
- # expect(sa.front_overflow).to eq 3
50
- # expect(sa.rear_overflow).to eq 0
51
- # end
52
-
53
- # it 'should detect an addition' do
54
- # #012 012345
55
- # sa = TextAlignment::LCSAlignment.new('abc', 'xyzabc')
56
- # expect(sa.position_map_begin).to eq({0=>3, 1=>4, 2=>5, 3=>6})
57
- # expect(sa.position_map_end).to eq({0=>3, 1=>4, 2=>5, 3=>6})
58
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
59
- # expect(sa.mapped_elements).to eq([])
60
- # expect(sa.front_overflow).to eq -3
61
- # expect(sa.rear_overflow).to eq 0
62
- # end
63
-
64
- # it 'should detect a variation' do
65
- # #012345 01234
66
- # sa = TextAlignment::LCSAlignment.new('ijkabc', 'xyabc')
67
- # expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
68
- # expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
69
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
70
- # expect(sa.mapped_elements).to eq([['ijk', 'xy']])
71
- # expect(sa.front_overflow).to eq 1
72
- # expect(sa.rear_overflow).to eq 0
73
- # end
74
- # end
75
-
76
- # context 'in the end of a string' do
77
- # it 'should detect a deletion' do
78
- # #012345 012
79
- # sa = TextAlignment::LCSAlignment.new('abcxyz', 'abc')
80
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
81
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
82
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
83
- # expect(sa.mapped_elements).to eq([])
84
- # expect(sa.front_overflow).to eq 0
85
- # expect(sa.rear_overflow).to eq 3
86
- # end
87
-
88
- # it 'should detect an addition' do
89
- # #012 012345
90
- # sa = TextAlignment::LCSAlignment.new('abc', 'abcxyz')
91
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3})
92
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3})
93
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
94
- # expect(sa.mapped_elements).to eq([])
95
- # expect(sa.front_overflow).to eq 0
96
- # expect(sa.rear_overflow).to eq -3
97
- # end
98
-
99
- # it 'should detect a variation' do
100
- # #012345 01234
101
- # sa = TextAlignment::LCSAlignment.new('abcijk', 'abcxy')
102
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
103
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
104
- # expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
105
- # expect(sa.mapped_elements).to eq([['ijk', 'xy']])
106
- # expect(sa.front_overflow).to eq 0
107
- # expect(sa.rear_overflow).to eq 1
108
- # end
109
- # end
110
-
111
- # context ', with a dictionary with the first entry, ' do
112
- # before(:all) do
113
- # @dictionary = [["β", "beta"]]
114
- # end
115
- # it 'should handle consecutive unicode spellouts in the middle of a string' do
116
- # #0123 01234567890
117
- # sa = TextAlignment::LCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
118
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
119
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
120
- # expect(sa.common_elements).to eq([['-', '-'], ['β', 'beta'], ['-', '-']])
121
- # expect(sa.mapped_elements).to eq([['κ', 'kappa']])
122
- # expect(sa.front_overflow).to eq 0
123
- # expect(sa.rear_overflow).to eq 0
124
- # end
125
-
126
- # it 'should handle consecutive unicode spellouts in the end of a string' do
127
- # #012 0123456789
128
- # sa = TextAlignment::LCSAlignment.new('-βκ', '-betakappa', @dictionary)
129
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
130
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10})
131
- # expect(sa.common_elements).to eq([['-', '-'], ['β', 'beta']])
132
- # expect(sa.mapped_elements).to eq([['κ', 'kappa']])
133
- # expect(sa.front_overflow).to eq 0
134
- # expect(sa.rear_overflow).to eq -4
135
- # end
136
-
137
- # it 'should handle consecutive unicode spellouts in the beginning of a string' do
138
- # #012 0123456789
139
- # sa = TextAlignment::LCSAlignment.new('βκ-', 'betakappa-', @dictionary)
140
- # expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
141
- # expect(sa.position_map_end).to eq({0=>0, 1=>4, 2=>9, 3=>10})
142
- # expect(sa.common_elements).to eq([['β', 'beta'], ['-', '-']])
143
- # expect(sa.mapped_elements).to eq([['κ', 'kappa']])
144
- # expect(sa.front_overflow).to eq 0
145
- # expect(sa.rear_overflow).to eq 0
146
- # end
147
-
148
- # it 'should handle consecutive unicode restorations in the middle of a string' do
149
- # #01234567890 0123
150
- # sa = TextAlignment::LCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
151
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
152
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
153
- # expect(sa.common_elements).to eq([['-', '-'], ['beta', 'β'], ['-', '-']])
154
- # expect(sa.mapped_elements).to eq([['kappa', 'κ']])
155
- # end
156
-
157
- # it 'should handle consecutive unicode restorations in the beginning of a string' do
158
- # #0123456789 012
159
- # sa = TextAlignment::LCSAlignment.new('betakappa-', 'βκ-', @dictionary)
160
- # expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
161
- # expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
162
- # expect(sa.common_elements).to eq([['beta', 'β'], ['-', '-']])
163
- # expect(sa.mapped_elements).to eq([['kappa', 'κ']])
164
- # end
165
-
166
- # it 'should handle consecutive unicode restorations in the end of a string' do
167
- # #0123456789 012
168
- # sa = TextAlignment::LCSAlignment.new('-betakappa', '-βκ', @dictionary)
169
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
170
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
171
- # expect(sa.common_elements).to eq([['-', '-'], ['beta', 'β']])
172
- # expect(sa.mapped_elements).to eq([['kappa', 'κ']])
173
- # end
174
- # end
175
-
176
- # context ', with a dictionary with the second entry, ' do
177
- # before(:all) do
178
- # @dictionary = [["κ", "kappa"]]
179
- # end
180
- # it 'should handle consecutive unicode spellouts in the middle of a string' do
181
- # #0123 01234567890
182
- # sa = TextAlignment::LCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
183
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
184
- # end
185
-
186
- # it 'should handle consecutive unicode spellouts in the end of a string' do
187
- # #012 0123456789
188
- # sa = TextAlignment::LCSAlignment.new('-βκ', '-betakappa', @dictionary)
189
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
190
- # end
191
-
192
- # it 'should handle consecutive unicode spellouts in the beginning of a string' do
193
- # #012 0123456789
194
- # sa = TextAlignment::LCSAlignment.new('βκ-', 'betakappa-', @dictionary)
195
- # expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
196
- # end
197
-
198
- # it 'should handle consecutive unicode restorations in the middle of a string' do
199
- # #01234567890 0123
200
- # sa = TextAlignment::LCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
201
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
202
- # end
203
-
204
- # it 'should handle consecutive unicode restorations in the beginning of a string' do
205
- # #0123456789 012
206
- # sa = TextAlignment::LCSAlignment.new('betakappa-', 'βκ-', @dictionary)
207
- # expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
208
- # end
209
-
210
- # it 'should handle consecutive unicode restorations in the end of a string' do
211
- # #0123456789 012
212
- # sa = TextAlignment::LCSAlignment.new('-betakappa', '-βκ', @dictionary)
213
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
214
- # end
215
- # end
216
-
217
- # context ', with a dictionary with both entries, ' do
218
- # before(:all) do
219
- # @dictionary = [["β", "beta"], ["κ", "kappa"]]
220
- # end
221
- # it 'should handle consecutive unicode spellouts in the middle of a string' do
222
- # #0123 01234567890
223
- # sa = TextAlignment::LCSAlignment.new('-βκ-', '-betakappa-', @dictionary)
224
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
225
- # end
226
-
227
- # it 'should handle consecutive unicode spellouts in the end of a string' do
228
- # #012 0123456789
229
- # sa = TextAlignment::LCSAlignment.new('-βκ', '-betakappa', @dictionary)
230
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
231
- # end
232
-
233
- # it 'should handle consecutive unicode spellouts in the beginning of a string' do
234
- # #012 0123456789
235
- # sa = TextAlignment::LCSAlignment.new('βκ-', 'betakappa-', @dictionary)
236
- # expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
237
- # end
238
-
239
- # it 'should handle consecutive unicode restorations in the middle of a string' do
240
- # #01234567890 0123
241
- # sa = TextAlignment::LCSAlignment.new('-betakappa-', '-βκ-', @dictionary)
242
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
243
- # end
244
-
245
- # it 'should handle consecutive unicode restorations in the beginning of a string' do
246
- # #0123456789 012
247
- # sa = TextAlignment::LCSAlignment.new('betakappa-', 'βκ-', @dictionary)
248
- # expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
249
- # end
250
-
251
- # it 'should handle consecutive unicode restorations in the end of a string' do
252
- # #0123456789 012
253
- # sa = TextAlignment::LCSAlignment.new('-betakappa', '-βκ', @dictionary)
254
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
255
- # end
256
- # end
257
-
258
- # context ', with a dictionary, ' do
259
- # before(:all) do
260
- # @dictionary = [["β", "beta"], ["κ", "kappa"]]
261
- # end
262
-
263
- # it 'should handle a unicode spellout followed by addition' do
264
- # #012 012345678
265
- # sa = TextAlignment::LCSAlignment.new("-β-", "-beta***-", @dictionary)
266
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>8, 3=>9})
267
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>9})
268
- # end
269
-
270
- # it 'should handle a unicode retoration followed by addition' do
271
- # #012345 012345
272
- # sa = TextAlignment::LCSAlignment.new("-beta-", "-β***-", @dictionary)
273
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
274
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>6})
275
- # end
276
-
277
- # it 'should handle a unicode spellout followed by deletion' do
278
- # #012345 012345
279
- # sa = TextAlignment::LCSAlignment.new("-β***-", "-beta-", @dictionary)
280
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>5, 4=>5, 5=>5, 6=>6})
281
- # end
282
-
283
- # it 'should handle a unicode retoration followed by deletion' do
284
- # #012345678 0123
285
- # sa = TextAlignment::LCSAlignment.new("-beta***-", "-β-", @dictionary)
286
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>2, 7=>2, 8=>2, 9=>3})
287
- # end
288
-
289
- # it 'should handle a unicode spellout following addition' do
290
- # #012 012345678
291
- # sa = TextAlignment::LCSAlignment.new("-β-", "-***beta-", @dictionary)
292
- # expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>8, 3=>9})
293
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>8, 3=>9})
294
- # end
295
-
296
- # it 'should handle a unicode retoration following addition' do
297
- # #012345 012345
298
- # sa = TextAlignment::LCSAlignment.new("-beta-", "-***β-", @dictionary)
299
- # expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
300
- # expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
301
- # end
302
-
303
- # it 'should handle a unicode spellout following deletion' do
304
- # #012345 012345
305
- # sa = TextAlignment::LCSAlignment.new("-***β-", "-beta-", @dictionary)
306
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>5, 6=>6})
307
- # end
308
-
309
- # it 'should handle a unicode retoration following deletion' do
310
- # #012345678 012
311
- # sa = TextAlignment::LCSAlignment.new("-***beta-", "-β-", @dictionary)
312
- # expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>2, 9=>3})
313
- # end
314
-
315
- # end
316
-
317
- # from_text = "-beta***-"
318
- # to_text = "-##β-"
319
-
320
- # from_text = "TGF-beta-induced"
321
- # to_text = "TGF-β–induced"
322
- end
@@ -1,302 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe TextAlignment::TextAlignment do
4
- context 'for exception handling' do
5
- it 'should raise error for passing of nil strings' do
6
- expect {TextAlignment::TextAlignment.new('abc', nil)}.to raise_error
7
- expect {TextAlignment::TextAlignment.new(nil, 'abc')}.to raise_error
8
- expect {TextAlignment::TextAlignment.new(nil, nil)}.to raise_error
9
- end
10
-
11
- it 'should raise error for passing of nil dictionary' do
12
- expect {TextAlignment::TextAlignment.new('abc', 'abc', nil)}.to raise_error
13
- end
14
- end
15
-
16
- context 'in the beginning of a string' do
17
- it 'should detect a deletion' do
18
- #012345 012
19
- sa = TextAlignment::TextAlignment.new('xyzabc', 'abc')
20
- expect(sa.position_map_begin).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
21
- expect(sa.position_map_end).to eq({0=>0, 1=>0, 2=>0, 3=>0, 4=>1, 5=>2, 6=>3})
22
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
23
- expect(sa.mapped_elements).to eq([])
24
- end
25
-
26
- it 'should detect an addition' do
27
- #012 012345
28
- sa = TextAlignment::TextAlignment.new('abc', 'xyzabc')
29
- expect(sa.position_map_begin).to eq({0=>3, 1=>4, 2=>5, 3=>6})
30
- expect(sa.position_map_end).to eq({0=>3, 1=>4, 2=>5, 3=>6})
31
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
32
- expect(sa.mapped_elements).to eq([])
33
- end
34
-
35
- it 'should detect a variation' do
36
- #012345 01234
37
- sa = TextAlignment::TextAlignment.new('ijkabc', 'xyabc')
38
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
39
- expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>2, 4=>3, 5=>4, 6=>5})
40
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
41
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
42
- end
43
- end
44
-
45
- context 'in the end of a string' do
46
- it 'should detect a deletion' do
47
- #012345 012
48
- sa = TextAlignment::TextAlignment.new('abcxyz', 'abc')
49
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
50
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>3, 5=>3, 6=>3})
51
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
52
- expect(sa.mapped_elements).to eq([])
53
- end
54
-
55
- it 'should detect an addition' do
56
- #012 012345
57
- sa = TextAlignment::TextAlignment.new('abc', 'abcxyz')
58
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>6})
59
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3})
60
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
61
- expect(sa.mapped_elements).to eq([])
62
- end
63
-
64
- it 'should detect a variation' do
65
- #012345 01234
66
- sa = TextAlignment::TextAlignment.new('abcijk', 'abcxy')
67
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
68
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>3, 4=>nil, 5=>nil, 6=>5})
69
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c']])
70
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
71
- end
72
- end
73
-
74
- context 'in the middle of a string' do
75
- it 'should detect a deletion' do
76
- #0123456 0123
77
- sa = TextAlignment::TextAlignment.new('abxyzcd', 'abcd')
78
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
79
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>2, 4=>2, 5=>2, 6=>3, 7=>4})
80
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
81
- expect(sa.mapped_elements).to eq([])
82
- end
83
-
84
- it 'should detect an addition' do
85
- #0123 0123456
86
- sa = TextAlignment::TextAlignment.new('abcd', 'abxyzcd')
87
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>6, 4=>7})
88
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>6, 4=>7})
89
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
90
- expect(sa.mapped_elements).to eq([])
91
- end
92
-
93
- it 'should detect a variation' do
94
- #0123456 012345
95
- sa = TextAlignment::TextAlignment.new('abijkcd', 'abxycd')
96
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
97
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>2, 3=>nil, 4=>nil, 5=>4, 6=>5, 7=>6})
98
- expect(sa.common_elements).to eq([['a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']])
99
- expect(sa.mapped_elements).to eq([['ijk', 'xy']])
100
- end
101
- end
102
-
103
- context ', with a dictionary with the first entry, ' do
104
- before(:all) do
105
- @dictionary = [["β", "beta"]]
106
- end
107
- it 'should handle consecutive unicode spellouts in the middle of a string' do
108
- #0123 01234567890
109
- sa = TextAlignment::TextAlignment.new('-βκ-', '-betakappa-', @dictionary)
110
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
111
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
112
- expect(sa.common_elements).to match_array([['-', '-'], ['β', 'beta'], ['-', '-']])
113
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
114
- end
115
-
116
- it 'should handle consecutive unicode spellouts in the end of a string' do
117
- #012 0123456789
118
- sa = TextAlignment::TextAlignment.new('-βκ', '-betakappa', @dictionary)
119
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
120
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>10})
121
- expect(sa.common_elements).to match_array([['-', '-'], ['β', 'beta']])
122
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
123
- end
124
-
125
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
126
- #012 0123456789
127
- sa = TextAlignment::TextAlignment.new('βκ-', 'betakappa-', @dictionary)
128
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
129
- expect(sa.position_map_end).to eq({0=>0, 1=>4, 2=>9, 3=>10})
130
- expect(sa.common_elements).to match_array([['β', 'beta'], ['-', '-']])
131
- expect(sa.mapped_elements).to eq([['κ', 'kappa']])
132
- end
133
-
134
- it 'should handle consecutive unicode restorations in the middle of a string' do
135
- #01234567890 0123
136
- sa = TextAlignment::TextAlignment.new('-betakappa-', '-βκ-', @dictionary)
137
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
138
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
139
- end
140
-
141
- it 'should handle consecutive unicode restorations in the beginning of a string' do
142
- #0123456789 012
143
- sa = TextAlignment::TextAlignment.new('betakappa-', 'βκ-', @dictionary)
144
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
145
- expect(sa.position_map_end).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
146
- end
147
-
148
- it 'should handle consecutive unicode restorations in the end of a string' do
149
- #0123456789 012
150
- sa = TextAlignment::TextAlignment.new('-betakappa', '-βκ', @dictionary)
151
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
152
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
153
- end
154
- end
155
-
156
- context ', with a dictionary with the second entry, ' do
157
- before(:all) do
158
- @dictionary = [["κ", "kappa"]]
159
- end
160
- it 'should handle consecutive unicode spellouts in the middle of a string' do
161
- #0123 01234567890
162
- sa = TextAlignment::TextAlignment.new('-βκ-', '-betakappa-', @dictionary)
163
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
164
- end
165
-
166
- it 'should handle consecutive unicode spellouts in the end of a string' do
167
- #012 0123456789
168
- sa = TextAlignment::TextAlignment.new('-βκ', '-betakappa', @dictionary)
169
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
170
- end
171
-
172
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
173
- #012 0123456789
174
- sa = TextAlignment::TextAlignment.new('βκ-', 'betakappa-', @dictionary)
175
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
176
- end
177
-
178
- it 'should handle consecutive unicode restorations in the middle of a string' do
179
- #01234567890 0123
180
- sa = TextAlignment::TextAlignment.new('-betakappa-', '-βκ-', @dictionary)
181
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
182
- end
183
-
184
- it 'should handle consecutive unicode restorations in the beginning of a string' do
185
- #0123456789 012
186
- sa = TextAlignment::TextAlignment.new('betakappa-', 'βκ-', @dictionary)
187
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
188
- end
189
-
190
- it 'should handle consecutive unicode restorations in the end of a string' do
191
- #0123456789 012
192
- sa = TextAlignment::TextAlignment.new('-betakappa', '-βκ', @dictionary)
193
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
194
- end
195
- end
196
-
197
- context ', with a dictionary with both entries, ' do
198
- before(:all) do
199
- @dictionary = [["β", "beta"], ["κ", "kappa"]]
200
- end
201
- it 'should handle consecutive unicode spellouts in the middle of a string' do
202
- #0123 01234567890
203
- sa = TextAlignment::TextAlignment.new('-βκ-', '-betakappa-', @dictionary)
204
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10, 4=>11})
205
- end
206
-
207
- it 'should handle consecutive unicode spellouts in the end of a string' do
208
- #012 0123456789
209
- sa = TextAlignment::TextAlignment.new('-βκ', '-betakappa', @dictionary)
210
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>10})
211
- end
212
-
213
- it 'should handle consecutive unicode spellouts in the beginning of a string' do
214
- #012 0123456789
215
- sa = TextAlignment::TextAlignment.new('βκ-', 'betakappa-', @dictionary)
216
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>9, 3=>10})
217
- end
218
-
219
- it 'should handle consecutive unicode restorations in the middle of a string' do
220
- #01234567890 0123
221
- sa = TextAlignment::TextAlignment.new('-betakappa-', '-βκ-', @dictionary)
222
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3, 11=>4})
223
- end
224
-
225
- it 'should handle consecutive unicode restorations in the beginning of a string' do
226
- #0123456789 012
227
- sa = TextAlignment::TextAlignment.new('betakappa-', 'βκ-', @dictionary)
228
- expect(sa.position_map_begin).to eq({0=>0, 1=>nil, 2=>nil, 3=>nil, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>nil, 9=>2, 10=>3})
229
- end
230
-
231
- it 'should handle consecutive unicode restorations in the end of a string' do
232
- #0123456789 012
233
- sa = TextAlignment::TextAlignment.new('-betakappa', '-βκ', @dictionary)
234
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>nil, 7=>nil, 8=>nil, 9=>nil, 10=>3})
235
- end
236
- end
237
-
238
- context ', with a dictionary, ' do
239
- before(:all) do
240
- @dictionary = [["β", "beta"], ["κ", "kappa"]]
241
- end
242
-
243
- it 'should handle a unicode spellout followed by addition' do
244
- #012 012345678
245
- sa = TextAlignment::TextAlignment.new("-β-", "-beta***-", @dictionary)
246
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>8, 3=>9})
247
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>5, 3=>9})
248
- end
249
-
250
- it 'should handle a unicode retoration followed by addition' do
251
- #012345 012345
252
- sa = TextAlignment::TextAlignment.new("-beta-", "-β***-", @dictionary)
253
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
254
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>6})
255
- end
256
-
257
- it 'should handle a unicode spellout followed by deletion' do
258
- #012345 012345
259
- sa = TextAlignment::TextAlignment.new("-β***-", "-beta-", @dictionary)
260
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>5, 3=>5, 4=>5, 5=>5, 6=>6})
261
- end
262
-
263
- it 'should handle a unicode retoration followed by deletion' do
264
- #012345678 0123
265
- sa = TextAlignment::TextAlignment.new("-beta***-", "-β-", @dictionary)
266
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>2, 6=>2, 7=>2, 8=>2, 9=>3})
267
- end
268
-
269
- it 'should handle a unicode spellout following addition' do
270
- #012 012345678
271
- sa = TextAlignment::TextAlignment.new("-β-", "-***beta-", @dictionary)
272
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>8, 3=>9})
273
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>8, 3=>9})
274
- end
275
-
276
- it 'should handle a unicode retoration following addition' do
277
- #012345 012345
278
- sa = TextAlignment::TextAlignment.new("-beta-", "-***β-", @dictionary)
279
- expect(sa.position_map_begin).to eq({0=>0, 1=>4, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
280
- expect(sa.position_map_end).to eq({0=>0, 1=>1, 2=>nil, 3=>nil, 4=>nil, 5=>5, 6=>6})
281
- end
282
-
283
- it 'should handle a unicode spellout following deletion' do
284
- #012345 012345
285
- sa = TextAlignment::TextAlignment.new("-***β-", "-beta-", @dictionary)
286
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>5, 6=>6})
287
- end
288
-
289
- it 'should handle a unicode retoration following deletion' do
290
- #012345678 012
291
- sa = TextAlignment::TextAlignment.new("-***beta-", "-β-", @dictionary)
292
- expect(sa.position_map_begin).to eq({0=>0, 1=>1, 2=>1, 3=>1, 4=>1, 5=>nil, 6=>nil, 7=>nil, 8=>2, 9=>3})
293
- end
294
-
295
- end
296
-
297
- from_text = "-beta***-"
298
- to_text = "-##β-"
299
-
300
- from_text = "TGF-beta-induced"
301
- to_text = "TGF-β–induced"
302
- end