# frozen_string_literal: true
require File.expand_path '../xref_test_case', __FILE__
class TestRDocMarkupToHtmlCrossref < XrefTestCase
def setup
super
@options.hyperlink_all = true
@to = RDoc::Markup::ToHtmlCrossref.new @options, 'index.html', @c1
end
def test_convert_CROSSREF
result = @to.convert 'C1'
assert_equal para("C1
"), result
end
def test_convert_CROSSREF_label
result = @to.convert 'C1@foo'
assert_equal para("foo at C1
"), result
result = @to.convert 'C1#m@foo'
assert_equal para("foo at C1#m
"),
result
end
def test_convert_CROSSREF_label_for_md
result = @to.convert 'EXAMPLE@foo'
assert_equal para("foo at EXAMPLE
"), result
end
def test_convert_CROSSREF_label_period
result = @to.convert 'C1@foo.'
assert_equal para("foo at C1
."), result
end
def test_convert_CROSSREF_label_space
result = @to.convert 'C1@foo+bar'
assert_equal para("foo bar at C1
"),
result
end
def test_convert_CROSSREF_section
@c1.add_section 'Section'
result = @to.convert 'C1@Section'
assert_equal para("Section at C1
"), result
end
def test_convert_CROSSREF_constant
result = @to.convert 'C1::CONST'
assert_equal para("C1::CONST
"), result
end
def test_convert_RDOCLINK_rdoc_ref
result = @to.convert 'rdoc-ref:C1'
assert_equal para("C1
"), result
end
def test_convert_RDOCLINK_rdoc_ref_method
result = @to.convert 'rdoc-ref:C1#m'
assert_equal para("C1#m
"), result
end
def test_convert_RDOCLINK_rdoc_ref_method_label
result = @to.convert 'rdoc-ref:C1#m@foo'
assert_equal para("foo at C1#m
"),
result, 'rdoc-ref:C1#m@foo'
end
def test_convert_RDOCLINK_rdoc_ref_method_percent
m = @c1.add_method RDoc::AnyMethod.new nil, '%'
m.singleton = false
result = @to.convert 'rdoc-ref:C1#%'
assert_equal para("C1#%
"), result
m.singleton = true
result = @to.convert 'rdoc-ref:C1::%'
assert_equal para("C1::%
"), result
end
def test_convert_RDOCLINK_rdoc_ref_method_escape_html
m = @c1.add_method RDoc::AnyMethod.new nil, '<<'
m.singleton = false
result = @to.convert 'rdoc-ref:C1#<<'
assert_equal para("C1#<<
"), result
m.singleton = true
result = @to.convert 'rdoc-ref:C1::<<'
assert_equal para("C1::<<
"), result
end
def test_convert_RDOCLINK_rdoc_ref_method_percent_label
m = @c1.add_method RDoc::AnyMethod.new nil, '%'
m.singleton = false
result = @to.convert 'rdoc-ref:C1#%@f'
assert_equal para("f at C1#%
"),
result
m.singleton = true
result = @to.convert 'rdoc-ref:C1::%@f'
assert_equal para("f at C1::%
"),
result
end
def test_convert_RDOCLINK_rdoc_ref_label
result = @to.convert 'rdoc-ref:C1@foo'
assert_equal para("foo at C1
"), result,
'rdoc-ref:C1@foo'
end
def test_gen_url
assert_equal 'Some class',
@to.gen_url('rdoc-ref:C1', 'Some class')
assert_equal 'HTTP example',
@to.gen_url('http://example', 'HTTP example')
end
def test_handle_regexp_CROSSREF
assert_equal "C2::C3
", REGEXP_HANDLING('C2::C3')
end
def test_handle_regexp_CROSSREF_label
assert_equal "foo at C1#m
",
REGEXP_HANDLING('C1#m@foo')
end
def test_handle_regexp_CROSSREF_show_hash_false
@to.show_hash = false
assert_equal "m
",
REGEXP_HANDLING('#m')
end
def test_handle_regexp_CROSSREF_with_arg_looks_like_TIDYLINK
result = @to.convert 'C1.m[:sym]'
assert_equal para("C1.m[:sym]
"), result,
'C1.m[:sym]'
end
def test_handle_regexp_HYPERLINK_rdoc
readme = @store.add_file 'README.txt'
readme.parser = RDoc::Parser::Simple
@to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c2
link = @to.handle_regexp_HYPERLINK hyper 'C2::C3'
assert_equal 'C2::C3
', link
link = @to.handle_regexp_HYPERLINK hyper 'C4'
assert_equal 'C4
', link
link = @to.handle_regexp_HYPERLINK hyper 'README.txt'
assert_equal 'README.txt', link
end
def test_handle_regexp_TIDYLINK_rdoc
readme = @store.add_file 'README.txt'
readme.parser = RDoc::Parser::Simple
@to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c2
link = @to.handle_regexp_TIDYLINK tidy 'C2::C3'
assert_equal 'tidy', link
link = @to.handle_regexp_TIDYLINK tidy 'C4'
assert_equal 'tidy', link
link = @to.handle_regexp_TIDYLINK tidy 'C1#m'
assert_equal 'tidy', link
link = @to.handle_regexp_TIDYLINK tidy 'README.txt'
assert_equal 'tidy', link
end
def test_handle_regexp_TIDYLINK_label
link = @to.handle_regexp_TIDYLINK tidy 'C1#m@foo'
assert_equal "tidy",
link, 'C1#m@foo'
end
def test_to_html_CROSSREF_email
@options.hyperlink_all = false
@to = RDoc::Markup::ToHtmlCrossref.new @options, 'index.html', @c1
result = @to.to_html 'first.last@example.com'
assert_equal 'first.last@example.com', result
end
def test_to_html_CROSSREF_email_hyperlink_all
result = @to.to_html 'first.last@example.com'
assert_equal 'first.last@example.com', result
end
def test_link
assert_equal 'n', @to.link('n', 'n')
assert_equal 'm
', @to.link('m', 'm')
end
def test_link_for_method_traverse
@to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c9
assert_equal 'C9::B#foo
', @to.link('C9::B#foo', 'C9::B#foo')
end
def test_link_class_method_full
assert_equal 'Parent::m
',
@to.link('Parent::m', 'Parent::m')
end
def para text
"\n
#{text}
\n" end def REGEXP_HANDLING text @to.handle_regexp_CROSSREF regexp_handling text end def hyper reference RDoc::Markup::RegexpHandling.new 0, "rdoc-ref:#{reference}" end def regexp_handling text RDoc::Markup::RegexpHandling.new 0, text end def tidy reference RDoc::Markup::RegexpHandling.new 0, "{tidy}[rdoc-ref:#{reference}]" end end