mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 ec6cacf00a
			
		
	
	
		ec6cacf00a
		
	
	
	
	
		
			
			top links to headings. * lib/rdoc/generator/template/darkfish/rdoc.css: ditto * test/rdoc/test_rdoc_generator_markup.rb: Test for above * test/rdoc/test_rdoc_markup_to_html.rb: ditto * test/rdoc/test_rdoc_comment.rb: Removed trailing whitespace. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			504 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			504 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # coding: us-ascii
 | |
| 
 | |
| require 'rdoc/test_case'
 | |
| 
 | |
| class TestRDocComment < RDoc::TestCase
 | |
| 
 | |
|   def setup
 | |
|     super
 | |
| 
 | |
|     @top_level = @store.add_file 'file.rb'
 | |
|     @comment = RDoc::Comment.new
 | |
|     @comment.location = @top_level
 | |
|     @comment.text = 'this is a comment'
 | |
|   end
 | |
| 
 | |
|   def test_empty_eh
 | |
|     refute_empty @comment
 | |
| 
 | |
|     @comment = ''
 | |
| 
 | |
|     assert_empty @comment
 | |
|   end
 | |
| 
 | |
|   def test_equals2
 | |
|     assert_equal @comment, @comment.dup
 | |
| 
 | |
|     c2 = @comment.dup
 | |
|     c2.text = nil
 | |
| 
 | |
|     refute_equal @comment, c2
 | |
| 
 | |
|     c3 = @comment.dup
 | |
|     c3.location = nil
 | |
| 
 | |
|     refute_equal @comment, c3
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq
 | |
|     m = RDoc::AnyMethod.new nil, 'm'
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-COMMENT, @top_level
 | |
| call-seq:
 | |
|   bla => true or false
 | |
| 
 | |
| moar comment
 | |
|     COMMENT
 | |
| 
 | |
|     comment.extract_call_seq m
 | |
| 
 | |
|     assert_equal "bla => true or false\n", m.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_blank
 | |
|     m = RDoc::AnyMethod.new nil, 'm'
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-COMMENT, @top_level
 | |
| call-seq:
 | |
|   bla => true or false
 | |
| 
 | |
|     COMMENT
 | |
| 
 | |
|     comment.extract_call_seq m
 | |
| 
 | |
|     assert_equal "bla => true or false\n", m.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_commented
 | |
|     m = RDoc::AnyMethod.new nil, 'm'
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-COMMENT, @top_level
 | |
| # call-seq:
 | |
| #   bla => true or false
 | |
| #
 | |
| # moar comment
 | |
|     COMMENT
 | |
| 
 | |
|     comment.extract_call_seq m
 | |
| 
 | |
|     assert_equal nil, m.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_no_blank
 | |
|     m = RDoc::AnyMethod.new nil, 'm'
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-COMMENT, @top_level
 | |
| call-seq:
 | |
|   bla => true or false
 | |
|     COMMENT
 | |
| 
 | |
|     comment.extract_call_seq m
 | |
| 
 | |
|     assert_equal "bla => true or false\n", m.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_undent
 | |
|     m = RDoc::AnyMethod.new nil, 'm'
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-COMMENT, @top_level
 | |
| call-seq:
 | |
|   bla => true or false
 | |
| moar comment
 | |
|     COMMENT
 | |
| 
 | |
|     comment.extract_call_seq m
 | |
| 
 | |
|     assert_equal "bla => true or false\nmoar comment\n", m.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_c
 | |
|     comment = RDoc::Comment.new <<-COMMENT
 | |
| call-seq:
 | |
|   commercial() -> Date <br />
 | |
|   commercial(cwyear, cweek=41, cwday=5, sg=nil) -> Date [ruby 1.8] <br />
 | |
|   commercial(cwyear, cweek=1, cwday=1, sg=nil) -> Date [ruby 1.9]
 | |
| 
 | |
| If no arguments are given:
 | |
| * ruby 1.8: returns a +Date+ for 1582-10-15 (the Day of Calendar Reform in
 | |
|   Italy)
 | |
| * ruby 1.9: returns a +Date+ for julian day 0
 | |
| 
 | |
| Otherwise, returns a +Date+ for the commercial week year, commercial week,
 | |
| and commercial week day given. Ignores the 4th argument.
 | |
|     COMMENT
 | |
| 
 | |
|     method_obj = RDoc::AnyMethod.new nil, 'blah'
 | |
| 
 | |
|     comment.extract_call_seq method_obj
 | |
| 
 | |
|     expected = <<-CALL_SEQ.chomp
 | |
| commercial() -> Date <br />
 | |
| commercial(cwyear, cweek=41, cwday=5, sg=nil) -> Date [ruby 1.8] <br />
 | |
| commercial(cwyear, cweek=1, cwday=1, sg=nil) -> Date [ruby 1.9]
 | |
| 
 | |
|     CALL_SEQ
 | |
| 
 | |
|     assert_equal expected, method_obj.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_c_no_blank
 | |
|     comment = RDoc::Comment.new <<-COMMENT
 | |
| call-seq:
 | |
|   commercial() -> Date <br />
 | |
|   commercial(cwyear, cweek=41, cwday=5, sg=nil) -> Date [ruby 1.8] <br />
 | |
|   commercial(cwyear, cweek=1, cwday=1, sg=nil) -> Date [ruby 1.9]
 | |
|     COMMENT
 | |
| 
 | |
|     method_obj = RDoc::AnyMethod.new nil, 'blah'
 | |
| 
 | |
|     comment.extract_call_seq method_obj
 | |
| 
 | |
|     expected = <<-CALL_SEQ.chomp
 | |
| commercial() -> Date <br />
 | |
| commercial(cwyear, cweek=41, cwday=5, sg=nil) -> Date [ruby 1.8] <br />
 | |
| commercial(cwyear, cweek=1, cwday=1, sg=nil) -> Date [ruby 1.9]
 | |
| 
 | |
|     CALL_SEQ
 | |
| 
 | |
|     assert_equal expected, method_obj.call_seq
 | |
|   end
 | |
| 
 | |
|   def test_extract_call_seq_c_separator
 | |
|     comment = RDoc::Comment.new <<-'COMMENT'
 | |
| call-seq:
 | |
|    ARGF.readlines(sep=$/)     -> array
 | |
|    ARGF.readlines(limit)      -> array
 | |
|    ARGF.readlines(sep, limit) -> array
 | |
| 
 | |
|    ARGF.to_a(sep=$/)     -> array
 | |
|    ARGF.to_a(limit)      -> array
 | |
|    ARGF.to_a(sep, limit) -> array
 | |
| 
 | |
| Reads +ARGF+'s current file in its entirety, returning an +Array+ of its
 | |
| lines, one line per element. Lines are assumed to be separated by _sep_.
 | |
| 
 | |
|    lines = ARGF.readlines
 | |
|    lines[0]                #=> "This is line one\n"
 | |
| 
 | |
|     COMMENT
 | |
| 
 | |
|     method_obj = RDoc::AnyMethod.new nil, 'blah'
 | |
| 
 | |
|     comment.extract_call_seq method_obj
 | |
| 
 | |
|     expected = <<-CALL_SEQ
 | |
| ARGF.readlines(sep=$/)     -> array
 | |
| ARGF.readlines(limit)      -> array
 | |
| ARGF.readlines(sep, limit) -> array
 | |
| ARGF.to_a(sep=$/)     -> array
 | |
| ARGF.to_a(limit)      -> array
 | |
| ARGF.to_a(sep, limit) -> array
 | |
|     CALL_SEQ
 | |
| 
 | |
|     assert_equal expected, method_obj.call_seq
 | |
| 
 | |
|     expected = <<-'COMMENT'
 | |
| 
 | |
| Reads +ARGF+'s current file in its entirety, returning an +Array+ of its
 | |
| lines, one line per element. Lines are assumed to be separated by _sep_.
 | |
| 
 | |
|    lines = ARGF.readlines
 | |
|    lines[0]                #=> "This is line one\n"
 | |
| 
 | |
|     COMMENT
 | |
| 
 | |
|     assert_equal expected, comment.text
 | |
|   end
 | |
| 
 | |
|   def test_force_encoding
 | |
|     skip "Encoding not implemented" unless Object.const_defined? :Encoding
 | |
| 
 | |
|     @comment.force_encoding Encoding::UTF_8
 | |
| 
 | |
|     assert_equal Encoding::UTF_8, @comment.text.encoding
 | |
|   end
 | |
| 
 | |
|   def test_format
 | |
|     assert_equal 'rdoc', @comment.format
 | |
|   end
 | |
| 
 | |
|   def test_format_equals
 | |
|     c = comment 'content'
 | |
|     document = c.parse
 | |
| 
 | |
|     c.format = RDoc::RD
 | |
| 
 | |
|     assert_equal RDoc::RD, c.format
 | |
|     refute_same document, c.parse
 | |
|   end
 | |
| 
 | |
|   def test_initialize_copy
 | |
|     copy = @comment.dup
 | |
| 
 | |
|     refute_same @comment.text, copy.text
 | |
|     assert_same @comment.location, copy.location
 | |
|   end
 | |
| 
 | |
|   def test_location
 | |
|     assert_equal @top_level, @comment.location
 | |
|   end
 | |
| 
 | |
|   def test_normalize
 | |
|     @comment.text = <<-TEXT
 | |
|   # comment
 | |
|     TEXT
 | |
| 
 | |
|     assert_same @comment, @comment.normalize
 | |
| 
 | |
|     assert_equal 'comment', @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_normalize_twice
 | |
|     @comment.text = <<-TEXT
 | |
|   # comment
 | |
|     TEXT
 | |
| 
 | |
|     @comment.normalize
 | |
| 
 | |
|     text = @comment.text
 | |
| 
 | |
|     @comment.normalize
 | |
| 
 | |
|     assert_same text, @comment.text, 'normalize not cached'
 | |
|   end
 | |
| 
 | |
|   def test_normalize_document
 | |
|     @comment.text = nil
 | |
|     @comment.document = @RM::Document.new
 | |
| 
 | |
|     assert_same @comment, @comment.normalize
 | |
| 
 | |
|     assert_nil @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_normalize_eh
 | |
|     refute @comment.normalized?
 | |
| 
 | |
|     @comment.normalize
 | |
| 
 | |
|     assert @comment.normalized?
 | |
|   end
 | |
| 
 | |
|   def test_text
 | |
|     assert_equal 'this is a comment', @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_text_equals
 | |
|     @comment.text = 'other'
 | |
| 
 | |
|     assert_equal 'other', @comment.text
 | |
|     refute @comment.normalized?
 | |
|   end
 | |
| 
 | |
|   def test_text_equals_no_text
 | |
|     c = RDoc::Comment.new nil, @top_level
 | |
|     c.document = @RM::Document.new
 | |
| 
 | |
|     e = assert_raises RDoc::Error do
 | |
|       c.text = 'other'
 | |
|     end
 | |
| 
 | |
|     assert_equal 'replacing document-only comment is not allowed', e.message
 | |
|   end
 | |
| 
 | |
|   def test_text_equals_parsed
 | |
|     document = @comment.parse
 | |
| 
 | |
|     @comment.text = 'other'
 | |
| 
 | |
|     refute_equal document, @comment.parse
 | |
|   end
 | |
| 
 | |
|   def test_tomdoc_eh
 | |
|     refute @comment.tomdoc?
 | |
| 
 | |
|     @comment.format = 'tomdoc'
 | |
| 
 | |
|     assert @comment.tomdoc?
 | |
|   end
 | |
| 
 | |
|   def test_parse
 | |
|     parsed = @comment.parse
 | |
| 
 | |
|     expected = @RM::Document.new(
 | |
|       @RM::Paragraph.new('this is a comment'))
 | |
| 
 | |
|     expected.file = @top_level
 | |
| 
 | |
|     assert_equal expected, parsed
 | |
|     assert_same  parsed, @comment.parse
 | |
|   end
 | |
| 
 | |
|   def test_parse_rd
 | |
|     c = comment 'it ((*works*))'
 | |
|     c.format = 'rd'
 | |
| 
 | |
|     expected =
 | |
|       @RM::Document.new(
 | |
|         @RM::Paragraph.new('it <em>works</em>'))
 | |
|     expected.file = @top_level
 | |
| 
 | |
|     assert_equal expected, c.parse
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_encoding
 | |
|     skip "Encoding not implemented" unless Object.const_defined? :Encoding
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
| #--
 | |
| # this is private
 | |
|     EOS
 | |
| 
 | |
|     comment.force_encoding Encoding::IBM437
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal Encoding::IBM437, comment.text.encoding
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_hash
 | |
|     @comment.text = <<-TEXT
 | |
| #--
 | |
| # private
 | |
| #++
 | |
| # public
 | |
|     TEXT
 | |
| 
 | |
|     @comment.remove_private
 | |
| 
 | |
|     assert_equal "# public\n", @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_hash_trail
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
| #--
 | |
| # this is private
 | |
|     EOS
 | |
| 
 | |
|     expected = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
|     EOS
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal expected, comment
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_long
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| #-----
 | |
| #++
 | |
| # this is text
 | |
| #-----
 | |
|     EOS
 | |
| 
 | |
|     expected = RDoc::Comment.new <<-EOS, @top_level
 | |
| # this is text
 | |
|     EOS
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal expected, comment
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_rule
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text with a rule:
 | |
| # ---
 | |
| # this is also text
 | |
|     EOS
 | |
| 
 | |
|     expected = comment.dup
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal expected, comment
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_star
 | |
|     @comment.text = <<-TEXT
 | |
| /*
 | |
|  *--
 | |
|  * private
 | |
|  *++
 | |
|  * public
 | |
|  */
 | |
|     TEXT
 | |
| 
 | |
|     @comment.remove_private
 | |
| 
 | |
|     assert_equal "/*\n * public\n */\n", @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_star2
 | |
|     @comment.text = <<-TEXT
 | |
| /*--
 | |
|  * private
 | |
|  *++
 | |
|  * public
 | |
|  */
 | |
|     TEXT
 | |
| 
 | |
|     @comment.remove_private
 | |
| 
 | |
|     assert_equal "/*--\n * private\n *++\n * public\n */\n", @comment.text
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_toggle
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
| #--
 | |
| # this is private
 | |
| #++
 | |
| # This is text again.
 | |
|     EOS
 | |
| 
 | |
|     expected = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
| # This is text again.
 | |
|     EOS
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal expected, comment
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_toggle_encoding
 | |
|     skip "Encoding not implemented" unless Object.const_defined? :Encoding
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| # This is text
 | |
| #--
 | |
| # this is private
 | |
| #++
 | |
| # This is text again.
 | |
|     EOS
 | |
| 
 | |
|     comment.force_encoding Encoding::IBM437
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal Encoding::IBM437, comment.text.encoding
 | |
|   end
 | |
| 
 | |
|   def test_remove_private_toggle_encoding_ruby_bug?
 | |
|     skip "Encoding not implemented" unless Object.const_defined? :Encoding
 | |
| 
 | |
|     comment = RDoc::Comment.new <<-EOS, @top_level
 | |
| #--
 | |
| # this is private
 | |
| #++
 | |
| # This is text again.
 | |
|     EOS
 | |
| 
 | |
|     comment.force_encoding Encoding::IBM437
 | |
| 
 | |
|     comment.remove_private
 | |
| 
 | |
|     assert_equal Encoding::IBM437, comment.text.encoding
 | |
|   end
 | |
| 
 | |
| end
 | |
| 
 |