rutils 1.0.3 → 1.1.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.
@@ -1,396 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $KCODE = 'u'
3
- require 'test/unit'
4
- require File.dirname(__FILE__) + '/../lib/rutils'
5
-
6
-
7
- # Cюда идут наши тесты типографа. Мы содержим их отдельно поскольку набор тестов Типографицы нами не контролируется.
8
- # Когда у рутилей появятся собственные баги под каждый баг следует завести тест
9
- class GilensonOwnTest < Test::Unit::TestCase
10
-
11
- def setup
12
- @gilenson = RuTils::Gilenson::Formatter.new
13
- end
14
-
15
- def test_tag_lift
16
- assert_equal "Вот&#160;такие<tag some='foo>' /> <tagmore></tagmore> дела", "Вот такие<tag some='foo>' /> <tagmore></tagmore> дела".gilensize
17
- end
18
-
19
- def test_byte_pass
20
- assert_equal '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
21
- 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
22
- 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
23
- 'Удачной дороги! </p>',
24
- '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
25
- 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
26
- 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
27
- 'Удачной дороги! </p>'.gilensize
28
- end
29
-
30
- def test_phones
31
- assert_equal '<span class="nobr">3&#8211;12&#8211;30</span>', '3-12-30'.gilensize
32
- assert_equal '<span class="nobr">12&#8211;34&#8211;56</span>', '12-34-56'.gilensize
33
- assert_equal '<span class="nobr">88&#8211;25&#8211;04</span>', '88-25-04'.gilensize
34
- assert_equal '+7 <span class="nobr">(99284)&#160;65&#8211;818</span>', '+7 (99284) 65-818'.gilensize
35
- assert_equal '<span class="nobr">725&#8211;01&#8211;10</span>', '725-01-10'.gilensize
36
- end
37
-
38
- def test_acronyms_with_html_output
39
- assert_equal '<acronym title="Большая советская энциклопедия">БСЭ</acronym>', 'БСЭ(Большая советская энциклопедия)'.gilensize
40
- assert_equal '<acronym title="Advanced Micro Devices">AMD</acronym>',
41
- 'AMD(Advanced Micro Devices)'.gilensize
42
- assert_equal '<acronym title="Расширяемый язык разметки">XML</acronym>',
43
- 'XML(Расширяемый язык разметки)'.gilensize
44
- end
45
-
46
- def test_acronyms_should_escape_entities
47
- @gilenson.configure(:raw_output => false)
48
- assert_equal '<acronym title="Знак &#60;">БВГ</acronym>', 'БВГ(Знак <)'.gilensize
49
- end
50
-
51
- def test_acronyms_with_text_output
52
- @gilenson.configure(:raw_output => true)
53
- thin_space = [8201].pack("U")
54
- assert_equal_cp "так утверждает БСЭ#{thin_space}(Большая советская энциклопедия)",
55
- @gilenson.process('так утверждает БСЭ(Большая советская энциклопедия)')
56
- end
57
-
58
- def test_address
59
- assert_equal 'табл.&#160;2, рис.&#160;2.10', 'табл. 2, рис. 2.10'.gilensize
60
- assert_equal 'офис&#160;415, оф.340, д.5, ул.&#160;Народной Воли, пл. Малышева', 'офис 415, оф.340, д.5, ул. Народной Воли, пл. Малышева'.gilensize
61
- end
62
-
63
- def test_html_entities_replace
64
- assert_equal '&#34; &#38; &#39; &#62; &#60; &#160; &#167; &#169; &#171; &#174; &#176; &#177; &#183; &#187; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8482; &#8722;', '&quot; &amp; &apos; &gt; &lt; &nbsp; &sect; &copy; &laquo; &reg; &deg; &plusmn; &middot; &raquo; &ndash; &mdash; &lsquo; &rsquo; &ldquo; &rdquo; &bdquo; &bull; &hellip; &trade; &minus;'.gilensize
65
- end
66
-
67
- def test_non_displayable_entities_replace1 # not_correct_number
68
- assert_equal '&#8222; &#8230; &#39; &#8220; &#8221; &#8226; &#8211; &#8212; &#8482;', '&#132; &#133; &#146; &#147; &#148; &#149; &#150; &#151; &#153;'.gilensize
69
- end
70
-
71
- def test_non_displayable_entities_replace2 # copy&paste
72
- @gilenson.configure!(:copypaste => true)
73
- assert_equal '&#171; &#160; &#187; &#167; &#169; &#174; &#176; &#177; &#182; &#183; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8470; &#8482; &#8722; &#8201; &#8243;', @gilenson.process('«   » § © ® ° ± ¶ · – — ‘ ’ “ ” „ • … № ™ −   ″')
74
- end
75
-
76
- def test_nbsp_removed_on_anchor_start
77
- assert_equal 'abcd', @gilenson.process(' abcd')
78
- end
79
-
80
- def test_nbsp_removed_on_anchor_end
81
- assert_equal 'abcd', @gilenson.process('abcd ')
82
- end
83
-
84
- def test_specials
85
- assert_equal '&#169; 2002, &#169; 2003, &#169; 2004, &#169; 2005 &#8212; тоже без&#160;пробелов: &#169;2002, &#169;Кукуц. однако: варианты (а) и&#160;(с)', '(с) 2002, (С) 2003, (c) 2004, (C) 2005 -- тоже без пробелов: (с)2002, (c)Кукуц. однако: варианты (а) и (с)'.gilensize
86
- assert_equal '+5&#176;С, +7&#176;C, &#8211;5&#176;F', '+5^С, +17^C, -275^F'.gilensize
87
- assert_equal 'об&#160;этом подробнее &#8212; читай &#167;25', 'об этом подробнее -- читай (p)25'.gilensize
88
- assert_equal 'один же&#160;минус &#8211; краткое тире', 'один же минус - краткое тире'.gilensize
89
- assert_equal 'Sharpdesign&#8482;, Microsoft<sup>&#174;</sup>', 'Sharpdesign(tm), Microsoft(r)'.gilensize
90
- end
91
-
92
- def test_breaking
93
- assert_equal 'скажи, мне, ведь не&#160;даром! Москва, клеймённая пожаром. Французу отдана', 'скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана'.gilensize
94
- assert_equal 'so&#160;be it, my&#160;liege. Tiny dwellers roam thru midnight! Hell raised, the&#160;Balrog is&#160;hiding in&#160;your backyard!', 'so be it ,my liege .Tiny dwellers roam thru midnight !Hell raised, the Balrog is hiding in your backyard!'.gilensize
95
- assert_equal 'при&#160;установке командой строки в&#160;?page=help <span class="nobr">бла-бла-бла-бла</span>', 'при установке командой строки в ?page=help бла-бла-бла-бла'.gilensize
96
- assert_equal 'как&#160;интересно будет переноситься со&#160;строки на&#160;строку <span class="nobr">что-то</span> разделённое дефисом, ведь дефис тот&#160;тоже ведь из&#160;наших. <span class="nobr">Какие-то</span> браузеры думают, что&#160;следует переносить и&#160;его&#8230;', 'как интересно будет переноситься со строки на строку что-то разделённое дефисом, ведь дефис тот тоже ведь из наших. Какие-то браузеры думают, что следует переносить и его...'.gilensize
97
- end
98
-
99
- def test_forced_quotes
100
- assert_equal 'кавычки &#171;расставлены&#187; &#8220;in a&#160;chaotic order&#8221;',
101
- 'кавычки "расставлены" "in a chaotic order"'.gilensize
102
- assert_equal 'кавычки &#8220;расставлены&#8221; &#8220;in a&#160;chaotic order&#8221;',
103
- 'кавычки "расставлены" "in a chaotic order"'.gilensize(:enforce_en_quotes => true)
104
- assert_equal 'кавычки &#171;расставлены&#187; &#171;in a&#160;chaotic order&#187;',
105
- 'кавычки "расставлены" "in a chaotic order"'.gilensize(:enforce_ru_quotes => true)
106
- end
107
-
108
- #def test_quotes_and_inch
109
- # assert_equal "&#171;This one&#160;is&#160;12&#8342;&#187;", '"This one is 12""'.gilensize
110
- #end
111
-
112
- def test_quotes
113
- assert_equal 'english &#8220;quotes&#8221; should be&#160;quite like this', 'english "quotes" should be quite like this'.gilensize
114
- assert_equal 'русские же&#160;&#171;оформляются&#187; подобным образом', 'русские же "оформляются" подобным образом'.gilensize
115
- assert_equal 'кавычки &#171;расставлены&#187; &#8220;in a&#160;chaotic order&#8221;', 'кавычки "расставлены" "in a chaotic order"'.gilensize
116
- assert_equal 'диагональ моего монитора &#8212; 17&#8243;, а&#160;размер пениса &#8212; 1,5&#8243;', 'диагональ моего монитора -- 17", а размер пениса -- 1,5"'.gilensize
117
- assert_equal 'в&#160;толщину, &#171;вложенные &#8220;quotes&#8221; вот&#160;так&#187;, &#8220;or it&#160;&#171;будет вложено&#187; elsewhere&#8221;', 'в толщину, "вложенные "quotes" вот так", "or it "будет вложено" elsewhere"'.gilensize
118
- assert_equal '&#8220;complicated &#171;кавычки&#187;, &#171;странные &#8220;includements&#8221; кавычек&#187;', '"complicated "кавычки", "странные "includements" кавычек"'.gilensize
119
- assert_equal '&#8220;double &#8220;quotes&#8221;', '"double "quotes"'.gilensize
120
- assert_equal '&#171;дважды вложенные &#171;кавычки&#187;', '"дважды вложенные "кавычки"'.gilensize
121
- assert_equal '&#171;01/02/03&#187;, дискеты в&#160;5.25&#8243;', '"01/02/03", дискеты в 5.25"'.gilensize
122
- assert_equal 'после троеточия правая кавычка &#8212; &#171;Вот&#8230;&#187;', 'после троеточия правая кавычка -- "Вот..."'.gilensize
123
- assert_equal 'setlocale(LC_ALL, &#8220;ru_RU.UTF8&#8221;);', 'setlocale(LC_ALL, "ru_RU.UTF8");'.gilensize
124
- assert_equal '&#8220;read, write, delete&#8221; с&#160;флагом &#8220;only_mine&#8221;', '"read, write, delete" с флагом "only_mine"'.gilensize
125
- assert_equal '&#171;Двоеточие:&#187;, &#171;такую умную тему должен писать чувак умеющий скрипты скриптить.&#187;', '"Двоеточие:", "такую умную тему должен писать чувак умеющий скрипты скриптить."'.gilensize
126
- assert_equal '(&#171;Вики != HTML&#187; &#8212; &#171;Вики != HTML&#187; &#8212; (&#171;всякая чушь&#187;))', '("Вики != HTML" -- "Вики != HTML" -- ("всякая чушь"))'.gilensize
127
- assert_equal '&#171;фигня123&#187;, &#8220;fignya123&#8221;', '"фигня123", "fignya123"'.gilensize
128
- # assert_equal '&#171;сбалансированные &#171;кавычки<!--notypo--><!--/notypo--> (четыре в&#160;конце) &#8212; связано с&#160;синтаксисом ваки', '"сбалансированные "кавычки"""" (четыре в конце) -- связано с синтаксисом ваки'.gilensize
129
- assert_equal '&#171;несбалансированные &#171;кавычки&#34;&#34;" (три в&#160;конце) &#8212; связано с&#160;синтаксисом ваки', '"несбалансированные "кавычки""" (три в конце) -- связано с синтаксисом ваки'.gilensize
130
- assert_equal '&#171;разноязыкие quotes&#187;', '"разноязыкие quotes"'.gilensize
131
- assert_equal '&#171;multilanguage кавычки&#187;', '"multilanguage кавычки"'.gilensize
132
- end
133
-
134
- def test_additional_quote_cases
135
- assert_equal "&#171;И это&#160;называется языком?&#187;, &#8212; таков был&#160;его вопрос",
136
- %q{ "И это называется языком?", -- таков был его вопрос }.gilensize
137
-
138
- assert_equal "&#171;Он &#8212; сволочь!&#187;, сказал&#160;я",
139
- %q{ "Он -- сволочь!", сказал я }.gilensize
140
- end
141
-
142
- def test_initials
143
- assert_equal 'Это&#160;нам сказал П.И.&#8201;Петров', 'Это нам сказал П. И. Петров'.gilensize
144
-
145
- assert_equal "А&#160;Ефимов&#8230;",
146
- @gilenson.process("А Ефимов...")
147
-
148
- assert_equal "Обратился за&#160;ПО. К&#160;негодяям.",
149
- @gilenson.process("Обратился за ПО. К негодяям.")
150
-
151
- assert_equal "ГО&#160;Самарской обл.",
152
- @gilenson.process("ГО Самарской обл.")
153
-
154
- assert_equal "ГОР&#160;Самарской обл.",
155
- @gilenson.process("ГОР Самарской обл.")
156
-
157
- assert_equal "КОШМАР Самарской обл.",
158
- @gilenson.process("КОШМАР Самарской обл.")
159
-
160
- assert_equal "УФПС Самарской обл.",
161
- @gilenson.process("УФПС Самарской обл.")
162
-
163
- end
164
-
165
- def test_nbsp_last_letters
166
- assert_equal "сказал&#160;я", "сказал я".gilensize
167
- assert_equal "сказал&#160;я!", "сказал я!".gilensize
168
- assert_equal "сказал&#160;я?", "сказал я?".gilensize
169
- assert_equal "сказал&#160;я&#8230;", "сказал я...".gilensize
170
- assert_equal "сказал&#160;он&#8230;", "сказал он...".gilensize
171
- assert_equal "сказали&#160;мы?..", "сказали мы?..".gilensize
172
- assert_equal "сказали&#160;мы?!", "сказали мы?!".gilensize
173
- assert_equal "сказали мы?!!!", "сказали мы?!!!".gilensize
174
- assert_equal "сказали нам", "сказали нам".gilensize
175
- assert_equal "(сказали&#160;им)", "(сказали им)".gilensize
176
- assert_equal "Справка&#160;09", 'Справка 09'.gilensize
177
- end
178
-
179
- def test_wordglue_combined_with_glyphs # http://pixel-apes.com/typografica/trako/12
180
- assert_equal "&#171;Справка&#160;09&#187;", '"Справка 09"'.gilensize(:wordglue => true)
181
- end
182
-
183
- def test_marker_bypass
184
- assert_equal "<p><span class=\"nobr\">МИЭЛЬ-Недвижимость</span></p>", "<p>МИЭЛЬ-Недвижимость</p>".gilensize
185
- end
186
-
187
- def test_skip_code
188
- @gilenson.configure!(:all => true, :skip_code => true)
189
-
190
- assert_equal "<code>Скип -- скип!</code>",
191
- @gilenson.process("<code>Скип -- скип!</code>")
192
-
193
- assert_equal '<code attr="test -- attr">Скип -- скип!</code>',
194
- @gilenson.process('<code attr="test -- attr">Скип -- скип!</code>')
195
-
196
- assert_equal "<tt>Скип -- скип!</tt> test &#8212; test <tt attr='test -- attr'>Скип -- скип!</tt>",
197
- @gilenson.process("<tt>Скип -- скип!</tt> test -- test <tt attr='test -- attr'>Скип -- скип!</tt>")
198
-
199
- assert_equal "<tt>Скип -- скип!</tt><tt>Скип -- скип!</tt> &#8212; <code attr='test -- attr'>Скип -- скип!</code>",
200
- @gilenson.process("<tt>Скип -- скип!</tt><tt>Скип -- скип!</tt> -- <code attr='test -- attr'>Скип -- скип!</code>")
201
-
202
- assert_equal "<ttt>Скип &#8212; скип!</tt>",
203
- @gilenson.process("<ttt>Скип -- скип!</tt>")
204
-
205
- assert_equal "<tt>Скип &#8212; скип!</ttt>",
206
- @gilenson.process("<tt>Скип -- скип!</ttt>")
207
-
208
- assert_equal "Ах, &#8212; <code>var x = j // -- тест</code>",
209
- @gilenson.process("Ах, -- <code>var x = j // -- тест</code>")
210
-
211
- assert_equal "<![CDATA[ CDATA -- ]]> &#8212; CDATA",
212
- @gilenson.process("<![CDATA[ CDATA -- ]]> -- CDATA")
213
-
214
- assert_equal "<![CDATA[ CDATA -- >] -- CDATA ]]> &#8212; <![CDATA[ CDATA ]> -- CDATA ]]>",
215
- @gilenson.process("<![CDATA[ CDATA -- >] -- CDATA ]]> -- <![CDATA[ CDATA ]> -- CDATA ]]>")
216
-
217
- assert_equal "<![CDATA[ CDATA -- >] -- CDATA ]]> &#8212; <![CDATA[ CDATA ]> -- CDATA ]]> &#8212; CDATA ]]>",
218
- @gilenson.process("<![CDATA[ CDATA -- >] -- CDATA ]]> -- <![CDATA[ CDATA ]> -- CDATA ]]> -- CDATA ]]>")
219
-
220
- @gilenson.configure!(:skip_code => false)
221
-
222
- assert_equal "Ах, &#8212; <code>var x&#160;= j&#160;// &#8212; тест</code>",
223
- @gilenson.process("Ах, -- <code>var x = j // -- тест</code>")
224
- end
225
-
226
- def test_skip_attr
227
- @gilenson.configure!(:skip_attr => true)
228
-
229
- assert_equal "<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just &#8212; test</a>",
230
- @gilenson.process("<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just -- test</a>")
231
-
232
- assert_equal 'мы&#160;напишем title="test &#8212; me" и&#160;alt=\'test &#8212; me\', вот',
233
- @gilenson.process('мы напишем title="test -- me" и alt=\'test -- me\', вот')
234
-
235
- @gilenson.configure!(:skip_attr => false)
236
-
237
- assert_equal "<a href='#' attr='смотри -- смотри' title='test &#8212;&#160;me' alt=\"смотри &#8212; смотри\">just &#8212; test</a>",
238
- @gilenson.process("<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just -- test</a>")
239
-
240
- assert_equal 'мы&#160;напишем title="test &#8212; me" и&#160;alt=\'test &#8212; me\', вот',
241
- @gilenson.process('мы напишем title="test -- me" и alt=\'test -- me\', вот')
242
- end
243
-
244
- def test_escape_html
245
- assert_equal "Используйте &#38; вместо &#38;amp;",
246
- @gilenson.process("Используйте &#38; вместо &#38;amp;")
247
-
248
- @gilenson.configure!(:html => false)
249
-
250
- assert_equal "&#38;#38; &#8212; &#38;amp; &#60;code/&#62; &#60;some_tag&#62;таги не&#160;пройдут!&#60;/some_tag&#62;. Ну&#160;и?..",
251
- @gilenson.process("&#38; -- &amp; <code/> <some_tag>таги не пройдут!</some_tag>. Ну и?..")
252
-
253
- assert_equal "Используйте &#38;#38; вместо &#38;amp;",
254
- @gilenson.process("Используйте &#38; вместо &amp;")
255
-
256
- end
257
-
258
- def test_ampersand_in_urls
259
-
260
- @gilenson.configure!(:html=>false)
261
-
262
- assert_equal "&#60;a href='test?test5=5&#38;#38;test6=6'&#62;test&#38;#38;&#60;/a&#62;",
263
- @gilenson.process("<a href='test?test5=5&#38;test6=6'>test&#38;</a>")
264
-
265
- @gilenson.configure!(:html=>true)
266
-
267
- assert_equal "<a href='test?test7=7&#38;test8=8'>test&#38;</a>",
268
- @gilenson.process("<a href='test?test7=7&#38;test8=8'>test&#38;</a>")
269
-
270
- assert_equal "<a href='test?test9=9&#038;test10=10'>test&#038;</a>",
271
- @gilenson.process("<a href='test?test9=9&#038;test10=10'>test&#038;</a>")
272
-
273
- assert_equal "<a href='test?test11=11&#38;test12=12'>test&</a>",
274
- @gilenson.process("<a href='test?test11=11&test12=12'>test&</a>")
275
-
276
- assert_equal "<a href='test?test12=12&#38;'>test</a>",
277
- @gilenson.process("<a href='test?test12=12&amp;'>test</a>")
278
-
279
- assert_equal "<a href='test?x=1&#38;y=2' title='&#38;-amp, &#8230;-hellip'>test</a>",
280
- @gilenson.process("<a href='test?x=1&y=2' title='&#38;-amp, &#8230;-hellip'>test</a>")
281
-
282
- assert_equal "<a href='test?x=3&#38;#039;y=4'>test</a>",
283
- @gilenson.process("<a href='test?x=3&#039;y=4'>test</a>")
284
-
285
-
286
- @gilenson.glyph[:amp] = '&amp;'
287
-
288
- assert_equal "<a href='test?test11=11&amp;test12=12'>test&</a>",
289
- @gilenson.process("<a href='test?test11=11&test12=12'>test&</a>")
290
-
291
- assert_equal "<a href='test?test13=13&amp;test14=14'>test&</a>",
292
- @gilenson.process("<a href='test?test13=13&amp;test14=14'>test&</a>")
293
-
294
- assert_equal "<a href='test?test15=15&amp;amppp;test16=16'>test&</a>",
295
- @gilenson.process("<a href='test?test15=15&amppp;test16=16'>test&</a>")
296
-
297
- end
298
-
299
- private
300
- # Проверить равны ли строки, и если нет то обьяснить какой кодпойнт отличается.
301
- # Совершенно необходимо для работы с различными пробелами.
302
- def assert_equal_cp(reference, actual, msg = nil)
303
- (assert(true, msg); return) if (reference == actual)
304
-
305
- reference_cp, actual_cp = [reference, actual].map{|t| t.unpack("U*") }
306
- reference_cp.each_with_index do | ref_codepoint, idx |
307
- next unless actual_cp[idx] != ref_codepoint
308
- beg, fin = idx - 2, idx + 2
309
- beg = 0 if (beg < 0)
310
- conflicting_piece = actual_cp[beg..fin].pack("U*")
311
- msg = []
312
- msg << "Expected #{actual.inspect} to be equal to #{reference.inspect}, but they were not, " +
313
- "in fragment '#{beg > 0 ? '...' : ''}#{conflicting_piece}...'"
314
- msg << "Non-matching codepoint #{actual[idx]} at offset #{idx}, " +
315
- "expected codepoint #{ref_codepoint} instead"
316
- flunk msg.join("\n"); return
317
- end
318
- raise "We should never get here"
319
- end
320
- end
321
-
322
-
323
- class GilensonConfigurationTest < Test::Unit::TestCase
324
- def setup
325
- @gilenson = RuTils::Gilenson::Formatter.new
326
- end
327
-
328
- def test_settings_as_tail_arguments
329
-
330
- assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
331
- @gilenson.process("Ну и куда вот -- да туда!")
332
-
333
- assert_equal "Ну и куда вот &#8212; да туда!",
334
- @gilenson.process("Ну и куда вот -- да туда!", :dash => false, :dashglue => false, :wordglue => false)
335
-
336
- assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
337
- @gilenson.process("Ну и куда вот -- да туда!")
338
-
339
- @gilenson.configure!(:dash => false, :dashglue => false, :wordglue => false)
340
-
341
- assert_equal "Ну и куда вот &#8212; да туда!",
342
- @gilenson.process("Ну и куда вот -- да туда!")
343
-
344
- @gilenson.configure!(:all => true)
345
-
346
- assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
347
- @gilenson.process("Ну и куда вот -- да туда!")
348
-
349
- @gilenson.configure!(:all => false)
350
-
351
- assert_equal "Ну и куда вот -- да туда!",
352
- @gilenson.process("Ну и куда вот -- да туда!")
353
- end
354
-
355
- def test_glyph_override
356
- assert_equal 'скажи, мне, ведь не&#160;даром! Москва, клеймённая пожаром. Французу отдана',
357
- @gilenson.process('скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана')
358
-
359
- @gilenson.glyph[:nbsp] = '&nbsp;'
360
- assert_equal 'скажи, мне, ведь не&nbsp;даром! Москва, клеймённая пожаром. Французу отдана',
361
- @gilenson.process('скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана')
362
- end
363
-
364
- def test_raise_on_unknown_setting
365
- assert_raise(RuTils::Gilenson::UnknownSetting) { @gilenson.configure!(:bararara => true) }
366
- end
367
-
368
- def test_raise_on_unknown_setting_via_gilensize
369
- assert_raise(RuTils::Gilenson::UnknownSetting) { "s".gilensize(:bararara => true) }
370
- end
371
-
372
- def test_backslash_does_not_suppress_quote # http://pixel-apes.com/typografica/trako/13, но с латинскими кавычками
373
- assert_equal "&#8220;c:\\www\\sites\\&#8221;", '"c:\www\sites\"'.gilensize
374
- end
375
-
376
- def test_cpp
377
- assert_equal "C++-API", "C++-API".gilensize
378
- end
379
-
380
- def test_raw_utf8_output
381
- @gilenson.configure!(:raw_output=>true)
382
- assert_equal '&#38442; Это просто «кавычки»',
383
- @gilenson.process('&#38442; Это просто "кавычки"')
384
- end
385
-
386
- def test_configure_alternate_names
387
- assert @gilenson.configure(:raw_output=>true)
388
- assert @gilenson.configure!(:raw_output=>true)
389
- end
390
-
391
- def test_explicit_nobr
392
- @gilenson.glyph[:nob_open] = '[NOB]'
393
- @gilenson.glyph[:nob_close] = '[NOBC]'
394
- assert_equal '[NOB]3&#8211;12&#8211;30[NOBC]', @gilenson.process('3-12-30')
395
- end
396
- end