}, result
assert_match %r{EMP0003 | }, result
assert_match %r{Margaret Martin | }, result
assert_match %r{Computer Specialist | }, result
assert_match %r{100,000 | }, result
assert_no_match %r{Dallas|Texas}, result
assert_no_match %r{Female}, result
assert result = style.apply_to(@doc, ['title', '"Grandma"'])
assert_match %r{Grandma
}, result
assert result = style.apply_to(@doc)
assert_match %r{}, result
end
def test_transform_with_output_style
xslt = ""
if Nokogiri.jruby?
xslt = Nokogiri::XSLT(<<-eoxslt)
|
|
|
|
eoxslt
else
xslt = Nokogiri::XSLT(<<-eoxslt)
|
|
|
|
eoxslt
end
assert_no_match(//, xslt.apply_to(@doc, ['title', 'foo']))
end
def test_transform_arg_error
assert style = Nokogiri::XSLT(File.read(XSLT_FILE))
assert_raises(TypeError) do
style.transform(@doc, :foo)
end
end
def test_transform_with_hash
assert style = Nokogiri::XSLT(File.read(XSLT_FILE))
result = style.transform(@doc, {'title' => '"Booyah"'})
assert result.html?
assert_equal "Booyah", result.at_css("h1").content
end
def test_transform2
assert style = Nokogiri::XSLT(File.open(XSLT_FILE))
assert result_doc = style.transform(@doc)
assert result_doc.html?
assert_equal "", result_doc.at_css("h1").content
assert style = Nokogiri::XSLT(File.read(XSLT_FILE))
assert result_doc = style.transform(@doc, ['title', '"Booyah"'])
assert result_doc.html?
assert_equal "Booyah", result_doc.at_css("h1").content
assert result_string = style.apply_to(@doc, ['title', '"Booyah"'])
assert_equal result_string, style.serialize(result_doc)
end
def test_transform_with_quote_params
assert style = Nokogiri::XSLT(File.open(XSLT_FILE))
assert result_doc = style.transform(@doc, Nokogiri::XSLT.quote_params(['title', 'Booyah']))
assert result_doc.html?
assert_equal "Booyah", result_doc.at_css("h1").content
assert style = Nokogiri::XSLT.parse(File.read(XSLT_FILE))
assert result_doc = style.transform(@doc, Nokogiri::XSLT.quote_params({'title' => 'Booyah'}))
assert result_doc.html?
assert_equal "Booyah", result_doc.at_css("h1").content
end
def test_quote_params
h = {
:sym => %{xxx},
'str' => %{"xxx"},
:sym2 => %{'xxx'},
'str2' => %{x'x'x},
:sym3 => %{x"x"x},
}
hh=h.dup
result_hash = Nokogiri::XSLT.quote_params(h)
assert_equal hh, h # non-destructive
a=h.to_a.flatten
result_array = Nokogiri::XSLT.quote_params(a)
assert_equal h.to_a.flatten, a #non-destructive
assert_equal result_array, result_hash
end
if Nokogiri.uses_libxml?
# By now, cannot get it working on JRuby, see:
# http://yokolet.blogspot.com/2010/10/pure-java-nokogiri-xslt-extension.html
def test_exslt
assert doc = Nokogiri::XML.parse(File.read(EXML_FILE))
assert doc.xml?
assert style = Nokogiri::XSLT.parse(File.read(EXSLT_FILE))
params = {
:p1 => 'xxx',
:p2 => "x'x'x",
:p3 => 'x"x"x',
:p4 => '"xxx"'
}
result_doc = Nokogiri::XML.parse(style.apply_to(doc,
Nokogiri::XSLT.quote_params(params)))
assert_equal 'func-result', result_doc.at('/root/function').content
assert_equal 3, result_doc.at('/root/max').content.to_i
assert_match(
/\d{4}-\d\d-\d\d([-|+]\d\d:\d\d)?/,
result_doc.at('/root/date').content
)
result_doc.xpath('/root/params/*').each do |p|
assert_equal p.content, params[p.name.intern]
end
check_params result_doc, params
result_doc = Nokogiri::XML.parse(style.apply_to(doc,
Nokogiri::XSLT.quote_params(params.to_a.flatten)))
check_params result_doc, params
end
def test_xslt_paramaters
xslt_str = <<-EOX
EOX
xslt = Nokogiri::XSLT(xslt_str)
doc = Nokogiri::XML("")
assert_match %r{bar}, xslt.transform(doc, Nokogiri::XSLT.quote_params('foo' => 'bar')).to_s
end
def test_xslt_transform_error
xslt_str = <<-EOX
EOX
xslt = Nokogiri::XSLT(xslt_str)
doc = Nokogiri::XML("")
assert_raises(RuntimeError) { xslt.transform(doc) }
end
end
def test_xslt_parse_error
xslt_str = <<-EOX
}
EOX
assert_raises(RuntimeError) { Nokogiri::XSLT.parse(xslt_str) }
end
def test_passing_a_non_document_to_transform
xsl = Nokogiri::XSLT('')
assert_raises(ArgumentError) { xsl.transform("") }
assert_raises(ArgumentError) { xsl.transform(Nokogiri::HTML("").css("body")) }
end
def check_params result_doc, params
result_doc.xpath('/root/params/*').each do |p|
assert_equal p.content, params[p.name.intern]
end
end
def test_non_html_xslt_transform
xml = Nokogiri.XML(<<-EOXML)
123
EOXML
xsl = Nokogiri.XSLT(<<-EOXSL)
EOXSL
result = xsl.transform xml
assert !result.html?
end
end
|