rutils 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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