diff options
Diffstat (limited to 'jni/ruby/test/rdoc/test_rdoc_context_section.rb')
-rw-r--r-- | jni/ruby/test/rdoc/test_rdoc_context_section.rb | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/jni/ruby/test/rdoc/test_rdoc_context_section.rb b/jni/ruby/test/rdoc/test_rdoc_context_section.rb new file mode 100644 index 0000000..b8f8c7f --- /dev/null +++ b/jni/ruby/test/rdoc/test_rdoc_context_section.rb @@ -0,0 +1,130 @@ +require 'rdoc/test_case' + +class TestRDocContextSection < RDoc::TestCase + + def setup + super + + @top_level = @store.add_file 'file.rb' + + @klass = @top_level.add_class RDoc::NormalClass, 'Object' + + @S = RDoc::Context::Section + @s = @S.new @klass, 'section', comment('# comment', @top_level) + end + + def test_add_comment + file1 = @store.add_file 'file1.rb' + + klass = file1.add_class RDoc::NormalClass, 'Klass' + + c1 = RDoc::Comment.new "# :section: section\n", file1 + c2 = RDoc::Comment.new "# hello\n", file1 + c3 = RDoc::Comment.new "# world\n", file1 + + s = @S.new klass, 'section', c1 + + assert_empty s.comments + + s.add_comment nil + + assert_empty s.comments + + s.add_comment c2 + + assert_equal [c2], s.comments + + s.add_comment c3 + + assert_equal [c2, c3], s.comments + end + + def test_aref + assert_equal 'section', @s.aref + + assert_equal '5Buntitled-5D', @S.new(nil, nil, nil).aref + + assert_equal 'one+two', @S.new(nil, 'one two', nil).aref + end + + def test_extract_comment + assert_equal '', @s.extract_comment(comment('')).text + assert_equal '', @s.extract_comment(comment("# :section: b\n")).text + assert_equal '# c', @s.extract_comment(comment("# :section: b\n# c")).text + assert_equal '# c', + @s.extract_comment(comment("# a\n# :section: b\n# c")).text + end + + def test_marshal_dump + loaded = Marshal.load Marshal.dump @s + + expected = RDoc::Comment.new('comment', @top_level).parse + expected = doc(expected) + + assert_equal 'section', loaded.title + assert_equal expected, loaded.comments + assert_nil loaded.parent, 'parent is set manually' + end + + def test_marshal_dump_no_comment + s = @S.new @klass, 'section', comment('') + + loaded = Marshal.load Marshal.dump s + + assert_equal 'section', loaded.title + assert_empty loaded.comments + assert_nil loaded.parent, 'parent is set manually' + end + + def test_marshal_load_version_0 + loaded = Marshal.load "\x04\bU:\eRDoc::Context::Section" + + "[\bi\x00I\"\fsection\x06:\x06EFo" + + ":\eRDoc::Markup::Document\a:\v@parts" + + "[\x06o;\a\a;\b[\x06o" + + ":\x1CRDoc::Markup::Paragraph\x06;\b" + + "[\x06I\"\fcomment\x06;\x06F:\n@fileI" + + "\"\ffile.rb\x06;\x06F;\n0" + + expected = doc RDoc::Comment.new('comment', @top_level).parse + + assert_equal 'section', loaded.title + assert_equal expected, loaded.comments + assert_nil loaded.parent, 'parent is set manually' + end + + def test_remove_comment_array + other = @store.add_file 'other.rb' + + other_comment = comment('bogus', other) + + @s.add_comment other_comment + + @s.remove_comment comment('bogus', @top_level) + + assert_equal [other_comment], @s.comments + end + + def test_remove_comment_document + other = @store.add_file 'other.rb' + + other_comment = comment('bogus', other) + + @s.add_comment other_comment + + loaded = Marshal.load Marshal.dump @s + + loaded.remove_comment comment('bogus', @top_level) + + assert_equal doc(other_comment.parse), loaded.comments + end + + def test_sequence + _, err = verbose_capture_io do + assert_match(/\ASEC\d{5}\Z/, @s.sequence) + end + + assert_equal "#{@S}#sequence is deprecated, use #aref\n", err + end + +end + |