1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
require "helper"
module Nokogiri
module XML
class TestRelaxNG < Nokogiri::TestCase
def setup
super
assert @schema = Nokogiri::XML::RelaxNG(File.read(ADDRESS_SCHEMA_FILE))
end
def test_parse_with_memory
assert_instance_of Nokogiri::XML::RelaxNG, @schema
assert_equal 0, @schema.errors.length
end
def test_new
assert schema = Nokogiri::XML::RelaxNG.new(
File.read(ADDRESS_SCHEMA_FILE))
assert_instance_of Nokogiri::XML::RelaxNG, schema
end
def test_parse_with_io
xsd = nil
File.open(ADDRESS_SCHEMA_FILE, 'rb') { |f|
assert xsd = Nokogiri::XML::RelaxNG(f)
}
assert_equal 0, xsd.errors.length
end
def test_constructor_method_with_parse_options
schema = Nokogiri::XML::RelaxNG(File.read(ADDRESS_SCHEMA_FILE))
assert_equal Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA, schema.parse_options
schema = Nokogiri::XML::RelaxNG(File.read(ADDRESS_SCHEMA_FILE), Nokogiri::XML::ParseOptions.new.recover)
assert_equal Nokogiri::XML::ParseOptions.new.recover, schema.parse_options
end
def test_new_with_parse_options
schema = Nokogiri::XML::RelaxNG.new(File.read(ADDRESS_SCHEMA_FILE))
assert_equal Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA, schema.parse_options
schema = Nokogiri::XML::RelaxNG.new(File.read(ADDRESS_SCHEMA_FILE), Nokogiri::XML::ParseOptions.new.recover)
assert_equal Nokogiri::XML::ParseOptions.new.recover, schema.parse_options
end
def test_from_document_with_parse_options
schema = Nokogiri::XML::RelaxNG.from_document(Nokogiri::XML::Document.parse(File.read(ADDRESS_SCHEMA_FILE)))
assert_equal Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA, schema.parse_options
schema = Nokogiri::XML::RelaxNG.from_document(Nokogiri::XML::Document.parse(File.read(ADDRESS_SCHEMA_FILE)),
Nokogiri::XML::ParseOptions.new.recover)
assert_equal Nokogiri::XML::ParseOptions.new.recover, schema.parse_options
end
def test_read_memory_with_parse_options
skip("https://github.com/sparklemotion/nokogiri/issues/2115") if Nokogiri.jruby?
schema = Nokogiri::XML::RelaxNG.read_memory(File.read(ADDRESS_SCHEMA_FILE))
assert_equal Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA, schema.parse_options
schema = Nokogiri::XML::RelaxNG.read_memory(File.read(ADDRESS_SCHEMA_FILE),
Nokogiri::XML::ParseOptions.new.recover)
assert_equal Nokogiri::XML::ParseOptions.new.recover, schema.parse_options
end
def test_parse_with_errors
xml = File.read(ADDRESS_SCHEMA_FILE).sub(/name="/, 'name=')
assert_raises(Nokogiri::XML::SyntaxError) {
Nokogiri::XML::RelaxNG(xml)
}
end
def test_validate_document
doc = Nokogiri::XML(File.read(ADDRESS_XML_FILE))
assert errors = @schema.validate(doc)
assert_equal 0, errors.length
end
def test_validate_invalid_document
# Empty address book is not allowed
read_doc = '<addressBook></addressBook>'
assert errors = @schema.validate(Nokogiri::XML(read_doc))
assert_equal 1, errors.length
end
def test_valid?
valid_doc = Nokogiri::XML(File.read(ADDRESS_XML_FILE))
invalid_doc = Nokogiri::XML('<addressBook></addressBook>')
assert(@schema.valid?(valid_doc))
assert(!@schema.valid?(invalid_doc))
end
end
end
end
|