PageRenderTime 27ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/projects/jruby-1.7.3/lib/ruby/1.9/rdoc/markup/formatter_test_case.rb

https://gitlab.com/essere.lab.public/qualitas.class-corpus
Ruby | 699 lines | 321 code | 228 blank | 150 comment | 0 complexity | 68f62b9650716fcefd70ccb193475a62 MD5 | raw file
  1. require 'minitest/unit'
  2. require 'rdoc/markup/formatter'
  3. ##
  4. # Test case for creating new RDoc::Markup formatters. See
  5. # test/test_rdoc_markup_to_*.rb for examples.
  6. #
  7. # This test case adds a variety of tests to your subclass when
  8. # #add_visitor_tests is called. Most tests set up a scenario then call a
  9. # method you will provide to perform the assertion on the output.
  10. #
  11. # Your subclass must instantiate a visitor and assign it to <tt>@to</tt>.
  12. #
  13. # For example, test_accept_blank_line sets up a RDoc::Markup::BlockLine then
  14. # calls accept_blank_line on your visitor. You are responsible for asserting
  15. # that the output is correct.
  16. #
  17. # Example:
  18. #
  19. # class TestRDocMarkupToNewFormat < RDoc::Markup::FormatterTestCase
  20. #
  21. # add_visitor_tests
  22. #
  23. # def setup
  24. # super
  25. #
  26. # @to = RDoc::Markup::ToNewFormat.new
  27. # end
  28. #
  29. # def accept_blank_line
  30. # assert_equal :junk, @to.res.join
  31. # end
  32. #
  33. # # ...
  34. #
  35. # end
  36. class RDoc::Markup::FormatterTestCase < MiniTest::Unit::TestCase
  37. ##
  38. # Call #setup when inheriting from this test case.
  39. #
  40. # Provides the following instance variables:
  41. #
  42. # +@m+:: RDoc::Markup.new
  43. # +@RM+:: RDoc::Markup # to reduce typing
  44. # +@bullet_list+:: @RM::List.new :BULLET, # ...
  45. # +@label_list+:: @RM::List.new :LABEL, # ...
  46. # +@lalpha_list+:: @RM::List.new :LALPHA, # ...
  47. # +@note_list+:: @RM::List.new :NOTE, # ...
  48. # +@number_list+:: @RM::List.new :NUMBER, # ...
  49. # +@ualpha_list+:: @RM::List.new :UALPHA, # ...
  50. def setup
  51. super
  52. @m = RDoc::Markup.new
  53. @RM = RDoc::Markup
  54. @bullet_list = @RM::List.new(:BULLET,
  55. @RM::ListItem.new(nil, @RM::Paragraph.new('l1')),
  56. @RM::ListItem.new(nil, @RM::Paragraph.new('l2')))
  57. @label_list = @RM::List.new(:LABEL,
  58. @RM::ListItem.new('cat', @RM::Paragraph.new('cats are cool')),
  59. @RM::ListItem.new('dog', @RM::Paragraph.new('dogs are cool too')))
  60. @lalpha_list = @RM::List.new(:LALPHA,
  61. @RM::ListItem.new(nil, @RM::Paragraph.new('l1')),
  62. @RM::ListItem.new(nil, @RM::Paragraph.new('l2')))
  63. @note_list = @RM::List.new(:NOTE,
  64. @RM::ListItem.new('cat', @RM::Paragraph.new('cats are cool')),
  65. @RM::ListItem.new('dog', @RM::Paragraph.new('dogs are cool too')))
  66. @number_list = @RM::List.new(:NUMBER,
  67. @RM::ListItem.new(nil, @RM::Paragraph.new('l1')),
  68. @RM::ListItem.new(nil, @RM::Paragraph.new('l2')))
  69. @ualpha_list = @RM::List.new(:UALPHA,
  70. @RM::ListItem.new(nil, @RM::Paragraph.new('l1')),
  71. @RM::ListItem.new(nil, @RM::Paragraph.new('l2')))
  72. end
  73. ##
  74. # Call to add the visitor tests to your test case
  75. def self.add_visitor_tests
  76. self.class_eval do
  77. ##
  78. # Calls start_accepting which needs to verify startup state
  79. def test_start_accepting
  80. @to.start_accepting
  81. start_accepting
  82. end
  83. ##
  84. # Calls end_accepting on your test case which needs to call
  85. # <tt>@to.end_accepting</tt> and verify document generation
  86. def test_end_accepting
  87. @to.start_accepting
  88. @to.res << 'hi'
  89. end_accepting
  90. end
  91. ##
  92. # Calls accept_blank_line
  93. def test_accept_blank_line
  94. @to.start_accepting
  95. @to.accept_blank_line @RM::BlankLine.new
  96. accept_blank_line
  97. end
  98. ##
  99. # Test case that calls <tt>@to.accept_document</tt>
  100. def test_accept_document
  101. @to.start_accepting
  102. @to.accept_document @RM::Document.new @RM::Paragraph.new 'hello'
  103. accept_document
  104. end
  105. ##
  106. # Calls accept_heading with a level 5 RDoc::Markup::Heading
  107. def test_accept_heading
  108. @to.start_accepting
  109. @to.accept_heading @RM::Heading.new(5, 'Hello')
  110. accept_heading
  111. end
  112. ##
  113. # Calls accept_heading_1 with a level 1 RDoc::Markup::Heading
  114. def test_accept_heading_1
  115. @to.start_accepting
  116. @to.accept_heading @RM::Heading.new(1, 'Hello')
  117. accept_heading_1
  118. end
  119. ##
  120. # Calls accept_heading_2 with a level 2 RDoc::Markup::Heading
  121. def test_accept_heading_2
  122. @to.start_accepting
  123. @to.accept_heading @RM::Heading.new(2, 'Hello')
  124. accept_heading_2
  125. end
  126. ##
  127. # Calls accept_heading_3 with a level 3 RDoc::Markup::Heading
  128. def test_accept_heading_3
  129. # HACK this doesn't belong here
  130. skip "No String#chars, upgrade your ruby" unless ''.respond_to? :chars
  131. @to.start_accepting
  132. @to.accept_heading @RM::Heading.new(3, 'Hello')
  133. accept_heading_3
  134. end
  135. ##
  136. # Calls accept_heading_4 with a level 4 RDoc::Markup::Heading
  137. def test_accept_heading_4
  138. @to.start_accepting
  139. @to.accept_heading @RM::Heading.new(4, 'Hello')
  140. accept_heading_4
  141. end
  142. ##
  143. # Calls accept_heading_b with a bold level 1 RDoc::Markup::Heading
  144. def test_accept_heading_b
  145. @to.start_accepting
  146. @to.accept_heading @RM::Heading.new(1, '*Hello*')
  147. accept_heading_b
  148. end
  149. ##
  150. # Calls accept_heading_suppressed_crossref with a level 1
  151. # RDoc::Markup::Heading containing a suppressed crossref
  152. def test_accept_heading_suppressed_crossref # HACK to_html_crossref test
  153. @to.start_accepting
  154. @to.accept_heading @RM::Heading.new(1, '\\Hello')
  155. accept_heading_suppressed_crossref
  156. end
  157. ##
  158. # Calls accept_paragraph
  159. def test_accept_paragraph
  160. @to.start_accepting
  161. @to.accept_paragraph @RM::Paragraph.new('hi')
  162. accept_paragraph
  163. end
  164. ##
  165. # Calls accept_paragraph_b with a RDoc::Markup::Paragraph containing
  166. # bold words
  167. def test_accept_paragraph_b
  168. @to.start_accepting
  169. @to.accept_paragraph @RM::Paragraph.new('reg <b>bold words</b> reg')
  170. accept_paragraph_b
  171. end
  172. ##
  173. # Calls accept_paragraph_i with a RDoc::Markup::Paragraph containing
  174. # emphasized words
  175. def test_accept_paragraph_i
  176. @to.start_accepting
  177. @to.accept_paragraph @RM::Paragraph.new('reg <em>italic words</em> reg')
  178. accept_paragraph_i
  179. end
  180. ##
  181. # Calls accept_paragraph_plus with a RDoc::Markup::Paragraph containing
  182. # teletype words
  183. def test_accept_paragraph_plus
  184. @to.start_accepting
  185. @to.accept_paragraph @RM::Paragraph.new('reg +teletype+ reg')
  186. accept_paragraph_plus
  187. end
  188. ##
  189. # Calls accept_paragraph_star with a RDoc::Markup::Paragraph containing
  190. # bold words
  191. def test_accept_paragraph_star
  192. @to.start_accepting
  193. @to.accept_paragraph @RM::Paragraph.new('reg *bold* reg')
  194. accept_paragraph_star
  195. end
  196. ##
  197. # Calls accept_paragraph_underscore with a RDoc::Markup::Paragraph
  198. # containing emphasized words
  199. def test_accept_paragraph_underscore
  200. @to.start_accepting
  201. @to.accept_paragraph @RM::Paragraph.new('reg _italic_ reg')
  202. accept_paragraph_underscore
  203. end
  204. ##
  205. # Calls accept_verbatim with a RDoc::Markup::Verbatim
  206. def test_accept_verbatim
  207. @to.start_accepting
  208. @to.accept_verbatim @RM::Verbatim.new("hi\n", " world\n")
  209. accept_verbatim
  210. end
  211. ##
  212. # Calls accept_raw with a RDoc::Markup::Raw
  213. def test_accept_raw
  214. @to.start_accepting
  215. @to.accept_raw @RM::Raw.new("<table>",
  216. "<tr><th>Name<th>Count",
  217. "<tr><td>a<td>1",
  218. "<tr><td>b<td>2",
  219. "</table>")
  220. accept_raw
  221. end
  222. ##
  223. # Calls accept_rule with a RDoc::Markup::Rule
  224. def test_accept_rule
  225. @to.start_accepting
  226. @to.accept_rule @RM::Rule.new(4)
  227. accept_rule
  228. end
  229. ##
  230. # Calls accept_list_item_start_bullet
  231. def test_accept_list_item_start_bullet
  232. @to.start_accepting
  233. @to.accept_list_start @bullet_list
  234. @to.accept_list_item_start @bullet_list.items.first
  235. accept_list_item_start_bullet
  236. end
  237. ##
  238. # Calls accept_list_item_start_label
  239. def test_accept_list_item_start_label
  240. @to.start_accepting
  241. @to.accept_list_start @label_list
  242. @to.accept_list_item_start @label_list.items.first
  243. accept_list_item_start_label
  244. end
  245. ##
  246. # Calls accept_list_item_start_lalpha
  247. def test_accept_list_item_start_lalpha
  248. @to.start_accepting
  249. @to.accept_list_start @lalpha_list
  250. @to.accept_list_item_start @lalpha_list.items.first
  251. accept_list_item_start_lalpha
  252. end
  253. ##
  254. # Calls accept_list_item_start_note
  255. def test_accept_list_item_start_note
  256. @to.start_accepting
  257. @to.accept_list_start @note_list
  258. @to.accept_list_item_start @note_list.items.first
  259. accept_list_item_start_note
  260. end
  261. ##
  262. # Calls accept_list_item_start_note_2
  263. def test_accept_list_item_start_note_2
  264. list = @RM::List.new(:NOTE,
  265. @RM::ListItem.new('<tt>teletype</tt>',
  266. @RM::Paragraph.new('teletype description')))
  267. @to.start_accepting
  268. list.accept @to
  269. @to.end_accepting
  270. accept_list_item_start_note_2
  271. end
  272. ##
  273. # Calls accept_list_item_start_number
  274. def test_accept_list_item_start_number
  275. @to.start_accepting
  276. @to.accept_list_start @number_list
  277. @to.accept_list_item_start @number_list.items.first
  278. accept_list_item_start_number
  279. end
  280. ##
  281. # Calls accept_list_item_start_ualpha
  282. def test_accept_list_item_start_ualpha
  283. @to.start_accepting
  284. @to.accept_list_start @ualpha_list
  285. @to.accept_list_item_start @ualpha_list.items.first
  286. accept_list_item_start_ualpha
  287. end
  288. ##
  289. # Calls accept_list_item_end_bullet
  290. def test_accept_list_item_end_bullet
  291. @to.start_accepting
  292. @to.accept_list_start @bullet_list
  293. @to.accept_list_item_start @bullet_list.items.first
  294. @to.accept_list_item_end @bullet_list.items.first
  295. accept_list_item_end_bullet
  296. end
  297. ##
  298. # Calls accept_list_item_end_label
  299. def test_accept_list_item_end_label
  300. @to.start_accepting
  301. @to.accept_list_start @label_list
  302. @to.accept_list_item_start @label_list.items.first
  303. @to.accept_list_item_end @label_list.items.first
  304. accept_list_item_end_label
  305. end
  306. ##
  307. # Calls accept_list_item_end_lalpha
  308. def test_accept_list_item_end_lalpha
  309. @to.start_accepting
  310. @to.accept_list_start @lalpha_list
  311. @to.accept_list_item_start @lalpha_list.items.first
  312. @to.accept_list_item_end @lalpha_list.items.first
  313. accept_list_item_end_lalpha
  314. end
  315. ##
  316. # Calls accept_list_item_end_note
  317. def test_accept_list_item_end_note
  318. @to.start_accepting
  319. @to.accept_list_start @note_list
  320. @to.accept_list_item_start @note_list.items.first
  321. @to.accept_list_item_end @note_list.items.first
  322. accept_list_item_end_note
  323. end
  324. ##
  325. # Calls accept_list_item_end_number
  326. def test_accept_list_item_end_number
  327. @to.start_accepting
  328. @to.accept_list_start @number_list
  329. @to.accept_list_item_start @number_list.items.first
  330. @to.accept_list_item_end @number_list.items.first
  331. accept_list_item_end_number
  332. end
  333. ##
  334. # Calls accept_list_item_end_ualpha
  335. def test_accept_list_item_end_ualpha
  336. @to.start_accepting
  337. @to.accept_list_start @ualpha_list
  338. @to.accept_list_item_start @ualpha_list.items.first
  339. @to.accept_list_item_end @ualpha_list.items.first
  340. accept_list_item_end_ualpha
  341. end
  342. ##
  343. # Calls accept_list_start_bullet
  344. def test_accept_list_start_bullet
  345. @to.start_accepting
  346. @to.accept_list_start @bullet_list
  347. accept_list_start_bullet
  348. end
  349. ##
  350. # Calls accept_list_start_label
  351. def test_accept_list_start_label
  352. @to.start_accepting
  353. @to.accept_list_start @label_list
  354. accept_list_start_label
  355. end
  356. ##
  357. # Calls accept_list_start_lalpha
  358. def test_accept_list_start_lalpha
  359. @to.start_accepting
  360. @to.accept_list_start @lalpha_list
  361. accept_list_start_lalpha
  362. end
  363. ##
  364. # Calls accept_list_start_note
  365. def test_accept_list_start_note
  366. @to.start_accepting
  367. @to.accept_list_start @note_list
  368. accept_list_start_note
  369. end
  370. ##
  371. # Calls accept_list_start_number
  372. def test_accept_list_start_number
  373. @to.start_accepting
  374. @to.accept_list_start @number_list
  375. accept_list_start_number
  376. end
  377. ##
  378. # Calls accept_list_start_ualpha
  379. def test_accept_list_start_ualpha
  380. @to.start_accepting
  381. @to.accept_list_start @ualpha_list
  382. accept_list_start_ualpha
  383. end
  384. ##
  385. # Calls accept_list_end_bullet
  386. def test_accept_list_end_bullet
  387. @to.start_accepting
  388. @to.accept_list_start @bullet_list
  389. @to.accept_list_end @bullet_list
  390. accept_list_end_bullet
  391. end
  392. ##
  393. # Calls accept_list_end_label
  394. def test_accept_list_end_label
  395. @to.start_accepting
  396. @to.accept_list_start @label_list
  397. @to.accept_list_end @label_list
  398. accept_list_end_label
  399. end
  400. ##
  401. # Calls accept_list_end_lalpha
  402. def test_accept_list_end_lalpha
  403. @to.start_accepting
  404. @to.accept_list_start @lalpha_list
  405. @to.accept_list_end @lalpha_list
  406. accept_list_end_lalpha
  407. end
  408. ##
  409. # Calls accept_list_end_number
  410. def test_accept_list_end_number
  411. @to.start_accepting
  412. @to.accept_list_start @number_list
  413. @to.accept_list_end @number_list
  414. accept_list_end_number
  415. end
  416. ##
  417. # Calls accept_list_end_note
  418. def test_accept_list_end_note
  419. @to.start_accepting
  420. @to.accept_list_start @note_list
  421. @to.accept_list_end @note_list
  422. accept_list_end_note
  423. end
  424. ##
  425. # Calls accept_list_end_ulpha
  426. def test_accept_list_end_ualpha
  427. @to.start_accepting
  428. @to.accept_list_start @ualpha_list
  429. @to.accept_list_end @ualpha_list
  430. accept_list_end_ualpha
  431. end
  432. ##
  433. # Calls list_nested with a two-level list
  434. def test_list_nested
  435. doc = @RM::Document.new(
  436. @RM::List.new(:BULLET,
  437. @RM::ListItem.new(nil,
  438. @RM::Paragraph.new('l1'),
  439. @RM::List.new(:BULLET,
  440. @RM::ListItem.new(nil,
  441. @RM::Paragraph.new('l1.1')))),
  442. @RM::ListItem.new(nil,
  443. @RM::Paragraph.new('l2'))))
  444. doc.accept @to
  445. list_nested
  446. end
  447. ##
  448. # Calls list_verbatim with a list containing a verbatim block
  449. def test_list_verbatim # HACK overblown
  450. doc = @RM::Document.new(
  451. @RM::List.new(:BULLET,
  452. @RM::ListItem.new(nil,
  453. @RM::Paragraph.new('list', 'stuff'),
  454. @RM::BlankLine.new,
  455. @RM::Verbatim.new("* list\n",
  456. " with\n",
  457. "\n",
  458. " second\n",
  459. "\n",
  460. " 1. indented\n",
  461. " 2. numbered\n",
  462. "\n",
  463. " third\n",
  464. "\n",
  465. "* second\n"))))
  466. doc.accept @to
  467. list_verbatim
  468. end
  469. end
  470. end
  471. end