summaryrefslogtreecommitdiff
path: root/trunk/test/rdoc/test_rdoc_markup.rb
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
commit0dc342de848a642ecce8db697b8fecd83a63e117 (patch)
tree2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/test/rdoc/test_rdoc_markup.rb
parentef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff)
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/rdoc/test_rdoc_markup.rb')
-rw-r--r--trunk/test/rdoc/test_rdoc_markup.rb613
1 files changed, 613 insertions, 0 deletions
diff --git a/trunk/test/rdoc/test_rdoc_markup.rb b/trunk/test/rdoc/test_rdoc_markup.rb
new file mode 100644
index 0000000000..d88743858a
--- /dev/null
+++ b/trunk/test/rdoc/test_rdoc_markup.rb
@@ -0,0 +1,613 @@
+require 'test/unit'
+require 'rdoc/markup'
+require 'rdoc/markup/to_test'
+
+class TestRDocMarkup < Test::Unit::TestCase
+
+ def basic_conv(str)
+ sm = RDoc::Markup.new
+ mock = RDoc::Markup::ToTest.new
+ sm.convert(str, mock)
+ sm.content
+ end
+
+ def line_groups(str, expected)
+ m = RDoc::Markup.new
+ mock = RDoc::Markup::ToTest.new
+
+ block = m.convert(str, mock)
+
+ if block != expected
+ rows = (0...([expected.size, block.size].max)).collect{|i|
+ [expected[i]||"nil", block[i]||"nil"]
+ }
+ printf "\n\n%35s %35s\n", "Expected", "Got"
+ rows.each {|e,g| printf "%35s %35s\n", e.dump, g.dump }
+ end
+
+ assert_equal(expected, block)
+ end
+
+ def line_types(str, expected)
+ m = RDoc::Markup.new
+ mock = RDoc::Markup::ToTest.new
+ m.convert(str, mock)
+ assert_equal(expected, m.get_line_types.map{|type| type.to_s[0,1]}.join(''))
+ end
+
+ def test_groups
+ str = "now is the time"
+ line_groups(str, ["L0: Paragraph\nnow is the time"] )
+
+ str = "now is the time\nfor all good men"
+ line_groups(str, ["L0: Paragraph\nnow is the time for all good men"] )
+
+ str = %{\
+ now is the time
+ code _line_ here
+ for all good men}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is the time",
+ "L0: Verbatim\n code _line_ here\n",
+ "L0: Paragraph\nfor all good men"
+ ] )
+
+ str = "now is the time\n code\n more code\nfor all good men"
+ line_groups(str,
+ [ "L0: Paragraph\nnow is the time",
+ "L0: Verbatim\n code\n more code\n",
+ "L0: Paragraph\nfor all good men"
+ ] )
+
+ str = %{\
+ now is
+ * l1
+ * l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl1",
+ "L1: BULLET ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+ str = %{\
+ now is
+ * l1
+ l1+
+ * l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl1 l1+",
+ "L1: BULLET ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+ str = %{\
+ now is
+ * l1
+ * l1.1
+ * l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl1",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\nl1.1",
+ "L2: ListEnd\n",
+ "L1: BULLET ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ * l1
+ * l1.1
+ text
+ code
+ code
+
+ text
+ * l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl1",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\nl1.1 text",
+ "L2: Verbatim\n code\n code\n",
+ "L2: Paragraph\ntext",
+ "L2: ListEnd\n",
+ "L1: BULLET ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ 1. l1
+ * l1.1
+ 2. l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: NUMBER ListItem\nl1",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\nl1.1",
+ "L2: ListEnd\n",
+ "L1: NUMBER ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+ str = %{\
+ now is
+ [cat] l1
+ * l1.1
+ [dog] l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: LABELED ListItem\ncat: l1",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\nl1.1",
+ "L2: ListEnd\n",
+ "L1: LABELED ListItem\ndog: l2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+ str = %{\
+ now is
+ [cat] l1
+ continuation
+ [dog] l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: LABELED ListItem\ncat: l1 continuation",
+ "L1: LABELED ListItem\ndog: l2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+ end
+
+ def test_headings
+ str = "= heading one"
+ line_groups(str,
+ [ "L0: Heading\nheading one"
+ ])
+
+ str = "=== heading three"
+ line_groups(str,
+ [ "L0: Heading\nheading three"
+ ])
+
+ str = "text\n === heading three"
+ line_groups(str,
+ [ "L0: Paragraph\ntext",
+ "L0: Verbatim\n === heading three\n"
+ ])
+
+ str = "text\n code\n === heading three"
+ line_groups(str,
+ [ "L0: Paragraph\ntext",
+ "L0: Verbatim\n code\n === heading three\n"
+ ])
+
+ str = "text\n code\n=== heading three"
+ line_groups(str,
+ [ "L0: Paragraph\ntext",
+ "L0: Verbatim\n code\n",
+ "L0: Heading\nheading three"
+ ])
+
+ end
+
+ def test_list_alpha
+ str = "a. alpha\nb. baker\nB. ALPHA\nA. BAKER"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: LOWERALPHA ListItem\nalpha",
+ "L1: LOWERALPHA ListItem\nbaker",
+ "L1: ListEnd\n",
+ "L1: ListStart\n",
+ "L1: UPPERALPHA ListItem\nALPHA",
+ "L1: UPPERALPHA ListItem\nBAKER",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_bullet_dash
+ str = "- one\n- two\n"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: BULLET ListItem\none",
+ "L1: BULLET ListItem\ntwo",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_bullet_star
+ str = "* one\n* two\n"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: BULLET ListItem\none",
+ "L1: BULLET ListItem\ntwo",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_labeled_bracket
+ str = "[one] item one\n[two] item two"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: LABELED ListItem\none: item one",
+ "L1: LABELED ListItem\ntwo: item two",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_labeled_bracket_continued
+ str = "[one]\n item one\n[two]\n item two"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: LABELED ListItem\none: item one",
+ "L1: LABELED ListItem\ntwo: item two",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_labeled_colon
+ str = "one:: item one\ntwo:: item two"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: NOTE ListItem\none:: item one",
+ "L1: NOTE ListItem\ntwo:: item two",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_labeled_colon_continued
+ str = "one::\n item one\ntwo::\n item two"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: NOTE ListItem\none:: item one",
+ "L1: NOTE ListItem\ntwo:: item two",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_nested_bullet_bullet
+ str = "* one\n* two\n * cat\n * dog"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: BULLET ListItem\none",
+ "L1: BULLET ListItem\ntwo",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\ncat",
+ "L2: BULLET ListItem\ndog",
+ "L2: ListEnd\n",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_nested_labeled_bullet
+ str = "[one]\n * cat\n * dog"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: LABELED ListItem\none: ",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\ncat",
+ "L2: BULLET ListItem\ndog",
+ "L2: ListEnd\n",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_nested_labeled_bullet_bullet
+ str = "[one]\n * cat\n * dog"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: LABELED ListItem\none: ",
+ "L2: ListStart\n",
+ "L2: BULLET ListItem\ncat",
+ "L3: ListStart\n",
+ "L3: BULLET ListItem\ndog",
+ "L3: ListEnd\n",
+ "L2: ListEnd\n",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_nested_number_number
+ str = "1. one\n1. two\n 1. cat\n 1. dog"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: NUMBER ListItem\none",
+ "L1: NUMBER ListItem\ntwo",
+ "L2: ListStart\n",
+ "L2: NUMBER ListItem\ncat",
+ "L2: NUMBER ListItem\ndog",
+ "L2: ListEnd\n",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_number
+ str = "1. one\n2. two\n1. three"
+
+ line_groups(str,
+ [ "L1: ListStart\n",
+ "L1: NUMBER ListItem\none",
+ "L1: NUMBER ListItem\ntwo",
+ "L1: NUMBER ListItem\nthree",
+ "L1: ListEnd\n" ])
+ end
+
+ def test_list_split
+ str = %{\
+ now is
+ * l1
+ 1. n1
+ 2. n2
+ * l2
+ the time}
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl1",
+ "L1: ListEnd\n",
+ "L1: ListStart\n",
+ "L1: NUMBER ListItem\nn1",
+ "L1: NUMBER ListItem\nn2",
+ "L1: ListEnd\n",
+ "L1: ListStart\n",
+ "L1: BULLET ListItem\nl2",
+ "L1: ListEnd\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+ end
+
+ def test_paragraph
+ str = "paragraph\n\n*bold* paragraph\n"
+
+ line_groups str, [
+ "L0: Paragraph\nparagraph",
+ "L0: BlankLine\n",
+ "L0: Paragraph\n*bold* paragraph"
+ ]
+ end
+
+ def test_tabs
+ str = "hello\n dave"
+ assert_equal(str, basic_conv(str))
+ str = "hello\n\tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = "hello\n \tdave"
+ assert_equal("hello\n dave", basic_conv(str))
+ str = ".\t\t."
+ assert_equal(". .", basic_conv(str))
+ end
+
+ def test_types
+ str = "now is the time"
+ line_types(str, 'P')
+
+ str = "now is the time\nfor all good men"
+ line_types(str, 'PP')
+
+ str = "now is the time\n code\nfor all good men"
+ line_types(str, 'PVP')
+
+ str = "now is the time\n code\n more code\nfor all good men"
+ line_types(str, 'PVVP')
+
+ str = "now is\n---\nthe time"
+ line_types(str, 'PRP')
+
+ str = %{\
+ now is
+ * l1
+ * l2
+ the time}
+ line_types(str, 'PLLP')
+
+ str = %{\
+ now is
+ * l1
+ l1+
+ * l2
+ the time}
+ line_types(str, 'PLPLP')
+
+ str = %{\
+ now is
+ * l1
+ * l1.1
+ * l2
+ the time}
+ line_types(str, 'PLLLP')
+
+ str = %{\
+ now is
+ * l1
+ * l1.1
+ text
+ code
+ code
+
+ text
+ * l2
+ the time}
+ line_types(str, 'PLLPVVBPLP')
+
+ str = %{\
+ now is
+ 1. l1
+ * l1.1
+ 2. l2
+ the time}
+ line_types(str, 'PLLLP')
+
+ str = %{\
+ now is
+ [cat] l1
+ * l1.1
+ [dog] l2
+ the time}
+ line_types(str, 'PLLLP')
+
+ str = %{\
+ now is
+ [cat] l1
+ continuation
+ [dog] l2
+ the time}
+ line_types(str, 'PLPLP')
+ end
+
+ def test_verbatim
+ str = "paragraph\n *bold* verbatim\n"
+
+ line_groups str, [
+ "L0: Paragraph\nparagraph",
+ "L0: Verbatim\n *bold* verbatim\n"
+ ]
+ end
+
+ def test_verbatim_merge
+ str = %{\
+ now is
+ code
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ code
+ code1
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n code1\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ code
+
+ code1
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n\n code1\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ code
+
+ code1
+
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n\n code1\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ str = %{\
+ now is
+ code
+
+ code1
+
+ code2
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n\n code1\n\n code2\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ # Folds multiple blank lines
+ str = %{\
+ now is
+ code
+
+
+ code1
+
+ the time}
+
+ line_groups(str,
+ [ "L0: Paragraph\nnow is",
+ "L0: Verbatim\n code\n\n code1\n",
+ "L0: Paragraph\nthe time"
+ ])
+
+
+ end
+
+ def test_whitespace
+ assert_equal("hello", basic_conv("hello"))
+ assert_equal("hello", basic_conv(" hello "))
+ assert_equal("hello", basic_conv(" \t \t hello\t\t"))
+
+ assert_equal("1\n 2\n 3", basic_conv("1\n 2\n 3"))
+ assert_equal("1\n 2\n 3", basic_conv(" 1\n 2\n 3"))
+
+ assert_equal("1\n 2\n 3\n1\n 2", basic_conv("1\n 2\n 3\n1\n 2"))
+ assert_equal("1\n 2\n 3\n1\n 2", basic_conv(" 1\n 2\n 3\n 1\n 2"))
+
+ assert_equal("1\n 2\n\n 3", basic_conv(" 1\n 2\n\n 3"))
+ end
+
+end
+