rutils 0.1.2 → 0.1.3

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/test/t_gilenson.rb CHANGED
@@ -6,37 +6,299 @@ require File.dirname(__FILE__) + '/../lib/rutils'
6
6
  # Cюда идут наши тесты типографа. Мы содержим их отдельно поскольку набор тестов Типографицы нами не контролируется.
7
7
  # Когда у рутилей появятся собственные баги под каждый баг следует завести тест
8
8
  class GilensonOwnTest < Test::Unit::TestCase
9
-
10
- # Проверка изъятия тагов и помещения их На Место©
11
- # характерно что пока мы не рефакторнули все как следует можно проверять
12
- # только конечный результат трансформации - что глючно до безобразия
13
- def test_tag_lift
14
- assert_equal "Вот&nbsp;такие<tag some='foo>' /> <tagmore></tagmore> дела", "Вот такие<tag some='foo>' /> <tagmore></tagmore> дела".gilensize
15
- end
16
-
17
- def test_byte_pass
18
- assert_equal '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
19
- 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
20
- 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
21
- 'Удачной дороги! </p>',
22
- '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
23
- 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
24
- 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
25
- 'Удачной дороги! </p>'.gilensize
26
- end
9
+
10
+ # Проверка изъятия тагов и помещения их На Место©
11
+ # характерно что пока мы не рефакторнули все как следует можно проверять
12
+ # только конечный результат трансформации - что глючно до безобразия
13
+ def test_tag_lift
14
+ assert_equal "Вот&#160;такие<tag some='foo>' /> <tagmore></tagmore> дела", "Вот такие<tag some='foo>' /> <tagmore></tagmore> дела".gilensize
15
+ end
16
+
17
+ def test_byte_pass
18
+ assert_equal '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
19
+ 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
20
+ 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
21
+ 'Удачной дороги! </p>',
22
+ '<p>Теперь добираться до офиса Студии автортранспортом стало удобнее. ' +
23
+ 'Для этого мы разместили в разделе <a href="#">«Контакт»</a> окно вебкамеры, ' +
24
+ 'которая непрерывно транслирует дорожную обстановку на Садовом кольце по адресу Земляной Вал, 23. <br>' +
25
+ 'Удачной дороги! </p>'.gilensize
26
+ end
27
+
28
+ def test_phones
29
+ assert_equal '<nobr>3&#8211;12&#8211;30</nobr>', '3-12-30'.gilensize
30
+ assert_equal '<nobr>12&#8211;34&#8211;56</nobr>', '12-34-56'.gilensize
31
+ assert_equal '<nobr>88&#8211;25&#8211;04</nobr>', '88-25-04'.gilensize
32
+ assert_equal '+7 <nobr>(99284)&#160;65&#8211;818</nobr>', '+7 (99284) 65-818'.gilensize
33
+ assert_equal '<nobr>725&#8211;01&#8211;10</nobr>', '725-01-10'.gilensize
34
+ end
35
+
36
+ def test_address
37
+ assert_equal 'табл.&#160;2, рис.&#160;2.10', 'табл. 2, рис. 2.10'.gilensize
38
+ assert_equal 'офис&#160;415, оф.340, д.5, ул.&#160;Народной Воли, пл. Малышева', 'офис 415, оф.340, д.5, ул. Народной Воли, пл. Малышева'.gilensize
39
+ end
40
+
41
+ def test_html_entities_replace
42
+ 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
43
+ end
44
+
45
+ def test_ugly_entities_replace1 # not_correct_number
46
+ assert_equal '&#8222; &#8230; &#39; &#8220; &#8221; &#8226; &#8211; &#8212; &#8482;', '&#132; &#133; &#146; &#147; &#148; &#149; &#150; &#151; &#153;'.gilensize
47
+ end
48
+
49
+ def test_specials
50
+ 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
51
+ assert_equal '+5&#176;С, +7&#176;C, &#8211;5&#176;F', '+5^С, +17^C, -275^F'.gilensize
52
+ assert_equal 'об&#160;этом подробнее &#8212; читай &#167;25', 'об этом подробнее -- читай (p)25'.gilensize
53
+ assert_equal 'один же&#160;минус &#8211; краткое тире', 'один же минус - краткое тире'.gilensize
54
+ assert_equal 'Sharpdesign&#8482;, Microsoft<sup>&#174;</sup>', 'Sharpdesign(tm), Microsoft(r)'.gilensize
55
+ end
56
+
57
+ def test_breaking
58
+ assert_equal 'скажи, мне, ведь не&#160;даром! Москва, клеймённая пожаром. Французу отдана', 'скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана'.gilensize
59
+ 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
60
+ assert_equal 'при&#160;установке командой строки в&#160;?page=help <nobr>бла-бла-бла-бла</nobr>', 'при установке командой строки в ?page=help бла-бла-бла-бла'.gilensize
61
+ assert_equal 'как&#160;интересно будет переноситься со&#160;строки на&#160;строку <nobr>что-то</nobr> разделённое дефисом, ведь дефис тот&#160;тоже ведь из&#160;наших. <nobr>Какие-то</nobr> браузеры думают, что&#160;следует переносить и&#160;его&#8230;', 'как интересно будет переноситься со строки на строку что-то разделённое дефисом, ведь дефис тот тоже ведь из наших. Какие-то браузеры думают, что следует переносить и его...'.gilensize
62
+ end
63
+
64
+ def test_quotes
65
+ assert_equal 'english &#8220;quotes&#8221; should be&#160;quite like this', 'english "quotes" should be quite like this'.gilensize
66
+ assert_equal 'русские же&#160;&#171;оформляются&#187; подобным образом', 'русские же "оформляются" подобным образом'.gilensize
67
+ assert_equal 'кавычки &#171;расставлены&#187; &#8220;in a&#160;chaotic order&#8221;', 'кавычки "расставлены" "in a chaotic order"'.gilensize
68
+ assert_equal 'диагональ моего монитора &#8212; 17&#8243;, а&#160;размер пениса &#8212; 1,5&#8243;', 'диагональ моего монитора -- 17", а размер пениса -- 1,5"'.gilensize
69
+ assert_equal 'в&#160;толщину, &#171;вложенные &#8220;quotes&#8221; вот&#160;так&#187;, &#8220;or it&#160;&#171;будет вложено&#187; elsewhere&#8221;', 'в толщину, "вложенные "quotes" вот так", "or it "будет вложено" elsewhere"'.gilensize
70
+ assert_equal '&#8220;complicated &#171;кавычки&#187;, &#171;странные &#8220;includements&#8221; кавычек&#187;', '"complicated "кавычки", "странные "includements" кавычек"'.gilensize
71
+ assert_equal '&#8220;double &#8220;quotes&#8221;', '"double "quotes"'.gilensize
72
+ assert_equal '&#171;дважды вложенные &#171;кавычки&#187;', '"дважды вложенные "кавычки"'.gilensize
73
+ assert_equal '&#171;01/02/03&#187;, дискеты в&#160;5.25&#8243;', '"01/02/03", дискеты в 5.25"'.gilensize
74
+ assert_equal 'после троеточия правая кавычка &#8212; &#171;Вот&#8230;&#187;', 'после троеточия правая кавычка -- "Вот..."'.gilensize
75
+ assert_equal 'setlocale(LC_ALL, &#8220;ru_RU.UTF8&#8221;);', 'setlocale(LC_ALL, "ru_RU.UTF8");'.gilensize
76
+ assert_equal '&#8220;read, write, delete&#8221; с&#160;флагом &#8220;only_mine&#8221;', '"read, write, delete" с флагом "only_mine"'.gilensize
77
+ assert_equal '&#171;Двоеточие:&#187;, &#171;такую умную тему должен писать чувак умеющий скрипты скриптить.&#187;', '"Двоеточие:", "такую умную тему должен писать чувак умеющий скрипты скриптить."'.gilensize
78
+ assert_equal '(&#171;Вики != HTML&#187; &#8212; &#171;Вики != HTML&#187; &#8212; (&#171;всякая чушь&#187;))', '("Вики != HTML" -- "Вики != HTML" -- ("всякая чушь"))'.gilensize
79
+ assert_equal '&#171;фигня123&#187;, &#8220;fignya123&#8221;', '"фигня123", "fignya123"'.gilensize
80
+ # assert_equal '&#171;сбалансированные &#171;кавычки<!--notypo--><!--/notypo--> (четыре в&#160;конце) &#8212; связано с&#160;синтаксисом ваки', '"сбалансированные "кавычки"""" (четыре в конце) -- связано с синтаксисом ваки'.gilensize
81
+ assert_equal '&#171;несбалансированные &#171;кавычки&#34;&#34;" (три в&#160;конце) &#8212; связано с&#160;синтаксисом ваки', '"несбалансированные "кавычки""" (три в конце) -- связано с синтаксисом ваки'.gilensize
82
+ assert_equal '&#171;разноязыкие quotes&#187;', '"разноязыкие quotes"'.gilensize
83
+ assert_equal '&#171;multilanguage кавычки&#187;', '"multilanguage кавычки"'.gilensize
84
+ end
85
+
86
+ def test_additional_quote_cases
87
+ assert_equal "&#171;И это&#160;называется языком?&#187;, &#8212; таков был&#160;его вопрос",
88
+ %q{ "И это называется языком?", -- таков был его вопрос }.gilensize
89
+
90
+ assert_equal "&#171;Он &#8212; сволочь!&#187;, сказал&#160;я",
91
+ %q{ "Он -- сволочь!", сказал я }.gilensize
92
+
93
+ end
94
+
95
+ def test_initials
96
+ assert_equal 'Это&#160;нам сказал П.И.&#8201;Петров', 'Это нам сказал П. И. Петров'.gilensize
97
+ end
98
+
99
+ def test_nbsp_last_letters
100
+ assert_equal "сказал&#160;я", "сказал я".gilensize
101
+ assert_equal "сказал&#160;я!", "сказал я!".gilensize
102
+ assert_equal "сказал&#160;я?", "сказал я?".gilensize
103
+ assert_equal "сказал&#160;я&#8230;", "сказал я...".gilensize
104
+ assert_equal "сказал&#160;он&#8230;", "сказал он...".gilensize
105
+ assert_equal "сказали&#160;мы?..", "сказали мы?..".gilensize
106
+ assert_equal "сказали&#160;мы?!", "сказали мы?!".gilensize
107
+ assert_equal "сказали мы?!!!", "сказали мы?!!!".gilensize
108
+ assert_equal "сказали нам", "сказали нам".gilensize
109
+ assert_equal "(сказали&#160;им)", "(сказали им)".gilensize
110
+ end
111
+
112
+ end
113
+
114
+
115
+ class GilensonConfigurationTest < Test::Unit::TestCase
116
+ def setup
117
+ @gilenson = RuTils::Gilenson::Formatter.new
118
+ end
119
+
120
+ def test_settings_as_tail_arguments
121
+
122
+ assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
123
+ @gilenson.process("Ну и куда вот -- да туда!")
124
+
125
+ assert_equal "Ну и куда вот &#8212; да туда!",
126
+ @gilenson.process("Ну и куда вот -- да туда!", :dash => false, :dashglue => false, :wordglue => false)
127
+
128
+ assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
129
+ @gilenson.process("Ну и куда вот -- да туда!")
130
+
131
+ @gilenson.configure!(:dash => false, :dashglue => false, :wordglue => false)
132
+
133
+ assert_equal "Ну и куда вот &#8212; да туда!",
134
+ @gilenson.process("Ну и куда вот -- да туда!")
135
+
136
+ @gilenson.configure!(:all => true)
137
+
138
+ assert_equal "Ну&#160;и куда вот&#160;&#8212; да&#160;туда!",
139
+ @gilenson.process("Ну и куда вот -- да туда!")
140
+
141
+ @gilenson.configure!(:all => false)
142
+
143
+ assert_equal "Ну и куда вот -- да туда!",
144
+ @gilenson.process("Ну и куда вот -- да туда!")
145
+ end
146
+
147
+ def test_glyph_override
148
+ assert_equal 'скажи, мне, ведь не&#160;даром! Москва, клеймённая пожаром. Французу отдана',
149
+ @gilenson.process('скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана')
150
+
151
+ @gilenson.glyph[:nbsp] = '&nbsp;'
152
+ assert_equal 'скажи, мне, ведь не&nbsp;даром! Москва, клеймённая пожаром. Французу отдана',
153
+ @gilenson.process('скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана')
154
+ end
155
+
156
+ def test_ugly_entities_replace2 # copy&paste
157
+ @gilenson.configure!(:copypaste => true)
158
+ assert_equal '&#160; &#171; &#187; &#167; &#169; &#174; &#176; &#177; &#182; &#183; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8470; &#8482; &#8722; &#8201; &#8243;', @gilenson.process('  « » § © ® ° ± ¶ · – — ‘ ’ “ ” „ • … № ™ −   ″')
159
+ end
160
+
161
+ def test_raise_on_unknown_setting
162
+ assert_raise(RuTils::Gilenson::UnknownSetting) { @gilenson.configure!(:bararara => true) }
163
+ end
164
+
165
+ def test_raw_utf8_output
166
+ @gilenson.configure!(:raw_output=>true)
167
+ assert_equal '&#38442; Это просто «кавычки»',
168
+ @gilenson.process('&#38442; Это просто "кавычки"')
169
+ end
170
+
171
+ def test_configure_alternate_names
172
+ assert @gilenson.configure(:raw_output=>true)
173
+ assert @gilenson.configure!(:raw_output=>true)
174
+ end
175
+
176
+ def test_skip_code
177
+ @gilenson.configure!(:all => true)
178
+
179
+ @gilenson.configure!(:skip_code => true)
180
+
181
+ assert_equal "<code>Скип -- скип!</code>",
182
+ @gilenson.process("<code>Скип -- скип!</code>")
183
+
184
+ assert_equal '<code attr="test -- attr">Скип -- скип!</code>',
185
+ @gilenson.process('<code attr="test -- attr">Скип -- скип!</code>')
186
+
187
+ assert_equal "<tt>Скип -- скип!</tt> test &#8212; test <tt attr='test -- attr'>Скип -- скип!</tt>",
188
+ @gilenson.process("<tt>Скип -- скип!</tt> test -- test <tt attr='test -- attr'>Скип -- скип!</tt>")
189
+
190
+ assert_equal "<TT>Скип -- скип!</TT><TT>Скип -- скип!</TT> &#8212; <CoDe attr='test -- attr'>Скип -- скип!</cOdE>",
191
+ @gilenson.process("<TT>Скип -- скип!</TT><TT>Скип -- скип!</TT> -- <CoDe attr='test -- attr'>Скип -- скип!</cOdE>")
192
+
193
+ assert_equal "<ttt>Скип &#8212; скип!</tt>",
194
+ @gilenson.process("<ttt>Скип -- скип!</tt>")
195
+
196
+ assert_equal "<tt>Скип &#8212; скип!</ttt>",
197
+ @gilenson.process("<tt>Скип -- скип!</ttt>")
198
+
199
+ assert_equal "Ах, &#8212; <code>var x = j // -- тест</code>",
200
+ @gilenson.process("Ах, -- <code>var x = j // -- тест</code>")
201
+
202
+ assert_equal "<![CDATA[ CDATA -- ]]> &#8212; CDATA",
203
+ @gilenson.process("<![CDATA[ CDATA -- ]]> -- CDATA")
204
+
205
+ assert_equal "<![CDATA[ CDATA -- >] -- CDATA ]]> &#8212; <![CDATA[ CDATA ]> -- CDATA ]]>",
206
+ @gilenson.process("<![CDATA[ CDATA -- >] -- CDATA ]]> -- <![CDATA[ CDATA ]> -- CDATA ]]>")
207
+
208
+ assert_equal "<![CDATA[ CDATA -- >] -- CDATA ]]> &#8212; <![CDATA[ CDATA ]> -- CDATA ]]> &#8212; CDATA ]]>",
209
+ @gilenson.process("<![CDATA[ CDATA -- >] -- CDATA ]]> -- <![CDATA[ CDATA ]> -- CDATA ]]> -- CDATA ]]>")
210
+
211
+ @gilenson.configure!(:skip_code => false)
212
+
213
+ assert_equal "Ах, &#8212; <code>var x&#160;= j&#160;// &#8212; тест</code>",
214
+ @gilenson.process("Ах, -- <code>var x = j // -- тест</code>")
215
+ end
216
+
217
+ def test_skip_attr
218
+ @gilenson.configure!(:skip_attr => true)
219
+
220
+ assert_equal "<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just &#8212; test</a>",
221
+ @gilenson.process("<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just -- test</a>")
222
+
223
+ assert_equal 'мы&#160;напишем title="test &#8212; me" и&#160;alt=\'test &#8212; me\', вот',
224
+ @gilenson.process('мы напишем title="test -- me" и alt=\'test -- me\', вот')
225
+
226
+ @gilenson.configure!(:skip_attr => false)
227
+
228
+ assert_equal "<a href='#' attr='смотри -- смотри' title='test &#8212;&#160;me' alt=\"смотри &#8212; смотри\">just &#8212; test</a>",
229
+ @gilenson.process("<a href='#' attr='смотри -- смотри' title='test -- me' alt=\"смотри -- смотри\">just -- test</a>")
230
+
231
+ assert_equal 'мы&#160;напишем title="test &#8212; me" и&#160;alt=\'test &#8212; me\', вот',
232
+ @gilenson.process('мы напишем title="test -- me" и alt=\'test -- me\', вот')
233
+ end
234
+
235
+ def test_escape_html
236
+ assert_equal "Используйте &#38; вместо &#38;amp;",
237
+ @gilenson.process("Используйте &#38; вместо &#38;amp;")
238
+
239
+ @gilenson.configure!(:html => false)
240
+
241
+ assert_equal "&#38;#38; &#8212; &#38;amp; &#60;code/&#62; &#60;some_tag&#62;таги не&#160;пройдут!&#60;/some_tag&#62;. Ну&#160;и?..",
242
+ @gilenson.process("&#38; -- &amp; <code/> <some_tag>таги не пройдут!</some_tag>. Ну и?..")
243
+
244
+ assert_equal "Используйте &#38;#38; вместо &#38;amp;",
245
+ @gilenson.process("Используйте &#38; вместо &amp;")
246
+
247
+ end
248
+
249
+ def test_ampersand_in_urls
250
+
251
+ @gilenson.configure!(:html=>false)
252
+
253
+ assert_equal "&#60;a href='test?test5=5&#38;#38;test6=6'&#62;test&#38;#38;&#60;/a&#62;",
254
+ @gilenson.process("<a href='test?test5=5&#38;test6=6'>test&#38;</a>")
255
+
256
+ @gilenson.configure!(:html=>true)
257
+
258
+ assert_equal "<a href='test?test7=7&#38;test8=8'>test&#38;</a>",
259
+ @gilenson.process("<a href='test?test7=7&#38;test8=8'>test&#38;</a>")
260
+
261
+ assert_equal "<a href='test?test9=9&#038;test10=10'>test&#038;</a>",
262
+ @gilenson.process("<a href='test?test9=9&#038;test10=10'>test&#038;</a>")
263
+
264
+ assert_equal "<a href='test?test11=11&#38;test12=12'>test&</a>",
265
+ @gilenson.process("<a href='test?test11=11&test12=12'>test&</a>")
266
+
267
+ assert_equal "<a href='test?test12=12&#38;'>test</a>",
268
+ @gilenson.process("<a href='test?test12=12&amp;'>test</a>")
269
+
270
+ assert_equal "<a href='test?x=1&#38;y=2' title='&#38;-amp, &#8230;-hellip'>test</a>",
271
+ @gilenson.process("<a href='test?x=1&y=2' title='&#38;-amp, &#8230;-hellip'>test</a>")
272
+
273
+ assert_equal "<a href='test?x=3&#38;#039;y=4'>test</a>",
274
+ @gilenson.process("<a href='test?x=3&#039;y=4'>test</a>")
275
+
276
+
277
+ @gilenson.glyph[:amp] = '&amp;'
278
+
279
+ assert_equal "<a href='test?test11=11&amp;test12=12'>test&</a>",
280
+ @gilenson.process("<a href='test?test11=11&test12=12'>test&</a>")
281
+
282
+ assert_equal "<a href='test?test13=13&amp;test14=14'>test&</a>",
283
+ @gilenson.process("<a href='test?test13=13&amp;test14=14'>test&</a>")
284
+
285
+ assert_equal "<a href='test?test15=15&amp;amppp;test16=16'>test&</a>",
286
+ @gilenson.process("<a href='test?test15=15&amppp;test16=16'>test&</a>")
287
+
288
+ end
27
289
 
28
290
  end
29
291
 
30
292
  # class TypograficaTrakoEntries < Test::Unit::TestCase
31
- # def test_cpp
32
- # assert_equal "C++-API", "C++-API".gilensize
33
- # end
34
- #
35
- # def test_symmetricity # http://pixel-apes.com/typografica/trako/12
36
- # assert_equal "&laquo;Справка&nbsp;09&raquo;", '"Справка 09"'.gilensize
37
- # end
38
- #
39
- # def test_paths # http://pixel-apes.com/typografica/trako/13
40
- # assert_equal "&laquo;c:\www\sites\&raquo;", '"c:\www\sites\"'.gilensize
41
- # end
293
+ # def test_cpp
294
+ # assert_equal "C++-API", "C++-API".gilensize
295
+ # end
296
+ #
297
+ # def test_symmetricity # http://pixel-apes.com/typografica/trako/12
298
+ # assert_equal "&#171;Справка&#160;09&#187;", '"Справка 09"'.gilensize
299
+ # end
300
+ #
301
+ # def test_paths # http://pixel-apes.com/typografica/trako/13
302
+ # assert_equal '&#171;c:\www\sites\&#187;', '"c:\www\sites\"'.gilensize
303
+ # end
42
304
  # end
@@ -25,48 +25,48 @@ end
25
25
  # Интеграция с RedCloth - Textile.
26
26
  # Нужно иметь в виду что Textile осуществляет свою обработку типографики, которую мы подменяем!
27
27
  class TextileIntegrationTest < Test::Unit::TestCase
28
- def test_integration_textile
29
- RuTils::overrides = true
30
- assert RuTils.overrides_enabled?
31
- assert_equal "<p>И&nbsp;вот &laquo;они пошли туда&raquo;, и&nbsp;шли шли&nbsp;шли</p>",
32
- RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
28
+ def test_integration_textile
29
+ RuTils::overrides = true
30
+ assert RuTils.overrides_enabled?
31
+ assert_equal "<p>И&#160;вот &#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
32
+ RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
33
33
 
34
- RuTils::overrides = false
35
- assert !RuTils.overrides_enabled?
36
- assert_equal "<p>И вот &#8220;они пошли туда&#8221;, и шли шли шли</p>",
37
- RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
38
- end
34
+ RuTils::overrides = false
35
+ assert !RuTils.overrides_enabled?
36
+ assert_equal "<p>И вот &#8220;они пошли туда&#8221;, и шли шли шли</p>",
37
+ RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
38
+ end
39
39
  end
40
40
 
41
41
  # Интеграция с BlueCloth - Markdown
42
42
  # Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
43
43
  class MarkdownIntegrationTest < Test::Unit::TestCase
44
- def test_integration_markdown
45
- RuTils::overrides = true
46
- assert RuTils.overrides_enabled?
47
- assert_equal "<p>И вот&nbsp;&laquo;они пошли туда&raquo;, и&nbsp;шли шли&nbsp;шли</p>",
48
- BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
49
-
50
- RuTils::overrides = false
51
- assert !RuTils.overrides_enabled?
52
- assert_equal "<p>И вот \"они пошли туда\", и шли шли шли</p>",
53
- BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
54
- end
44
+ def test_integration_markdown
45
+ RuTils::overrides = true
46
+ assert RuTils.overrides_enabled?
47
+ assert_equal "<p>И вот&#160;&#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
48
+ BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
49
+
50
+ RuTils::overrides = false
51
+ assert !RuTils.overrides_enabled?
52
+ assert_equal "<p>И вот \"они пошли туда\", и шли шли шли</p>",
53
+ BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
54
+ end
55
55
  end
56
56
 
57
57
  # Перегрузка helper'ов Rails
58
58
  class RailsHelpersOverrideTest < Test::Unit::TestCase
59
- def test_distance_of_time_in_words
60
- eval 'class Foo
61
- include ActionView::Helpers::DateHelper
62
- def get_dst
63
- distance_of_time_in_words(Time.now - 20.minutes, Time.now)
64
- end
65
- end'
66
-
67
- RuTils::overrides = true
68
- foo = Foo.new
69
- assert_equal "20 минут", foo.get_dst
70
- end
59
+ def test_distance_of_time_in_words
60
+ eval 'class Foo
61
+ include ActionView::Helpers::DateHelper
62
+ def get_dst
63
+ distance_of_time_in_words(Time.now - 20.minutes, Time.now)
64
+ end
65
+ end'
66
+
67
+ RuTils::overrides = true
68
+ foo = Foo.new
69
+ assert_equal "20 минут", foo.get_dst
70
+ end
71
71
  end
72
72
 
data/test/t_pluralize.rb CHANGED
@@ -4,59 +4,66 @@ require File.dirname(__FILE__) + '/../lib/rutils'
4
4
 
5
5
 
6
6
  class PropisjuTestCase < Test::Unit::TestCase
7
- def test_ints
8
- assert_equal "пятьсот двадцать три", 523.propisju
9
- assert_equal "шесть тысяч семьсот двадцать семь", 6727.propisju
10
- assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju
11
- assert_equal "восемь миллионов шестьсот пятьдесят две", 8000652.propisju(2)
12
- assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju(3)
13
- assert_equal "сорок пять", 45.propisju
14
- assert_equal "пять", 5.propisju
15
- assert_equal "шестьсот двенадцать", 612.propisju
16
- assert_equal "двадцать пять колес", 25.propisju_items(3, "колесо", "колеса", "колес")
17
- assert_equal "двадцать одна подстава", 21.propisju_items(2, "подстава", "подставы", "подстав")
18
- end
7
+ def test_ints
8
+ assert_equal "пятьсот двадцать три", 523.propisju
9
+ assert_equal "шесть тысяч семьсот двадцать семь", 6727.propisju
10
+ assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju
11
+ assert_equal "восемь миллионов шестьсот пятьдесят две", 8000652.propisju(2)
12
+ assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju(3)
13
+ assert_equal "сорок пять", 45.propisju
14
+ assert_equal "пять", 5.propisju
15
+ assert_equal "шестьсот двенадцать", 612.propisju
16
+ assert_equal "двадцать пять колес", 25.propisju_items(3, "колесо", "колеса", "колес")
17
+ assert_equal "двадцать одна подстава", 21.propisju_items(2, "подстава", "подставы", "подстав")
18
+ end
19
19
 
20
- def test_floats
21
- assert_equal "шесть целых пять десятых", (6.50).propisju
22
- assert_equal "триста сорок одна целая девять десятых", (341.9).propisju
23
- assert_equal "триста сорок одна целая двести сорок пять тысячных", (341.245).propisju
24
- assert_equal "двести три целых сорок одна сотая", (203.41).propisju
25
- assert_equal "четыреста сорок две целых пять десятых", (442.50000).propisju
26
- assert_equal "двести двенадцать целых четыре десятых сволочи", (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей")
27
- assert_equal "двести двенадцать сволочей", (212.00).propisju_items(2, "сволочь", "сволочи", "сволочей")
28
- end
29
-
30
- def test_items
31
- assert_equal "чемодана", 523.items("чемодан", "чемодана", "чемоданов")
32
- assert_equal "партий", 6727.items("партия", "партии", "партий")
33
- assert_equal "козлов", 45.items("козел", "козла", "козлов")
34
- assert_equal "колес", 260.items("колесо", "колеса", "колес")
35
- end
20
+ def test_floats
21
+ assert_equal "шесть целых пять десятых", (6.50).propisju
22
+ assert_equal "триста сорок одна целая девять десятых", (341.9).propisju
23
+ assert_equal "триста сорок одна целая двести сорок пять тысячных", (341.245).propisju
24
+ assert_equal "двести три целых сорок одна сотая", (203.41).propisju
25
+ assert_equal "четыреста сорок две целых пять десятых", (442.50000).propisju
26
+ assert_equal "двести двенадцать целых четыре десятых сволочи", (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей")
27
+ assert_equal "двести двенадцать сволочей", (212.00).propisju_items(2, "сволочь", "сволочи", "сволочей")
28
+ end
29
+
30
+ def test_items
31
+ assert_equal "чемодана", 523.items("чемодан", "чемодана", "чемоданов")
32
+ assert_equal "партий", 6727.items("партия", "партии", "партий")
33
+ assert_equal "козлов", 45.items("козел", "козла", "козлов")
34
+ assert_equal "колес", 260.items("колесо", "колеса", "колес")
35
+ end
36
+
37
+ def test_money
38
+ assert_equal "сто двадцать три рубля", 123.rublej
39
+ assert_equal "триста сорок три рубля двадцать копеек", (343.20).rublej
40
+ assert_equal "сорок две копейки", (0.4187).rublej
41
+ assert_equal "триста тридцать два рубля", (331.995).rublej
42
+ end
36
43
  end
37
44
 
38
45
  #class PluralizeTestCase < Test::Unit::TestCase
39
46
  #
40
- # def test_males
41
- # assert_equal "гада", "гад".ru_pluralize(3)
42
- # assert_equal "враг", "враг".ru_pluralize(1)
43
- # assert_equal "сцепа", "сцеп".ru_pluralize(2)
44
- # assert_equal "огня", "огонь".ru_pluralize(2)
45
- # assert_equal "огней", "огонь".ru_pluralize(6)
46
- # end
47
+ # def test_males
48
+ # assert_equal "гада", "гад".ru_pluralize(3)
49
+ # assert_equal "враг", "враг".ru_pluralize(1)
50
+ # assert_equal "сцепа", "сцеп".ru_pluralize(2)
51
+ # assert_equal "огня", "огонь".ru_pluralize(2)
52
+ # assert_equal "огней", "огонь".ru_pluralize(6)
53
+ # end
47
54
  #
48
- # def test_females
49
- # assert_equal "сволочей", "сволочь".ru_pluralize(6)
50
- # assert_equal "весны", "весна".ru_pluralize(3)
51
- # assert_equal "чета", "четы".ru_pluralize(2)
52
- # assert_equal "чета", "чет".ru_pluralize(5)
53
- # assert_equal "вони", "вонь".ru_pluralize(3)
54
- # assert_equal "воней", "вонь".ru_pluralize(6)
55
- # end
56
- #
57
- # def test_middles
58
- # assert_equal "окна", "окно".ru_pluralize(2)
59
- # assert_equal "колес", "колесо".ru_pluralize(15)
60
- # assert_equal "насилий", "насилие".ru_pluralize(5)
61
- # end
55
+ # def test_females
56
+ # assert_equal "сволочей", "сволочь".ru_pluralize(6)
57
+ # assert_equal "весны", "весна".ru_pluralize(3)
58
+ # assert_equal "чета", "четы".ru_pluralize(2)
59
+ # assert_equal "чета", "чет".ru_pluralize(5)
60
+ # assert_equal "вони", "вонь".ru_pluralize(3)
61
+ # assert_equal "воней", "вонь".ru_pluralize(6)
62
+ # end
63
+ #
64
+ # def test_middles
65
+ # assert_equal "окна", "окно".ru_pluralize(2)
66
+ # assert_equal "колес", "колесо".ru_pluralize(15)
67
+ # assert_equal "насилий", "насилие".ru_pluralize(5)
68
+ # end
62
69
  #end