require "helper" module Nokogiri module XML class TestRelaxNG < Nokogiri::TestCase def setup 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_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 = '' 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('') assert(@schema.valid?(valid_doc)) assert(!@schema.valid?(invalid_doc)) end end end end