require "xml" require 'test/unit' class TestParserContext < Test::Unit::TestCase def test_string # UTF8 xml = <<-EOS m\303\266tley_cr\303\274e EOS context = XML::Parser::Context.string(xml) assert_instance_of(XML::Parser::Context, context) assert_equal(XML::Encoding::NONE, context.encoding) assert_nil(context.base_uri) end def test_encoding # ISO_8859_1: xml = <<-EOS m\366tley_cr\374e EOS context = XML::Parser::Context.string(xml) assert_equal(XML::Encoding::NONE, context.encoding) context.encoding = XML::Encoding::ISO_8859_1 assert_equal(XML::Encoding::ISO_8859_1, context.encoding) end def test_base_uri # UTF8 xml = <<-EOS m\303\266tley_cr\303\274e EOS context = XML::Parser::Context.string(xml) assert_nil(context.base_uri) context.base_uri = 'http://libxml.rubyforge.org' assert_equal('http://libxml.rubyforge.org', context.base_uri) end def test_string_empty error = assert_raise(TypeError) do parser = XML::Parser::Context.string(nil) end assert_equal("wrong argument type nil (expected String)", error.to_s) error = assert_raise(ArgumentError) do XML::Parser::Context.string('') end assert_equal("Must specify a string with one or more characters", error.to_s) end def test_well_formed parser = XML::Parser.string("") parser.parse assert(parser.context.well_formed?) end def test_not_well_formed parser = XML::Parser.string("") assert_raise(XML::Error) do parser.parse end assert(!parser.context.well_formed?) end def test_version_info file = File.expand_path(File.join(File.dirname(__FILE__), 'model/bands.xml')) parser = XML::Parser.file(file) assert_nil(parser.context.version) parser.parse assert_equal("1.0", parser.context.version) end def test_depth context = XML::Parser::Context.new assert_instance_of(Fixnum, context.depth) end def test_disable_sax context = XML::Parser::Context.new assert(!context.disable_sax?) end def test_docbook context = XML::Parser::Context.new assert(!context.docbook?) end def test_html context = XML::Parser::Context.new assert(!context.html?) end def test_keep_blanks context = XML::Parser::Context.new if context.keep_blanks? assert_instance_of(TrueClass, context.keep_blanks?) else assert_instance_of(FalseClass, context.keep_blanks?) end end if ENV['NOTWORKING'] def test_num_chars assert_equal(17, context.num_chars) end end def test_replace_entities context = XML::Parser::Context.new assert(!context.replace_entities?) # context.options = 1 # assert(context.replace_entities?) context.options = 0 assert(!context.replace_entities?) context.replace_entities = true assert(context.replace_entities?) end def test_space_depth context = XML::Parser::Context.new assert_equal(1, context.space_depth) end def test_subset_external context = XML::Parser::Context.new assert(!context.subset_external?) end def test_data_directory_get context = XML::Parser::Context.new assert_nil(context.data_directory) end def test_parse_error xp = XML::Parser.string('') assert_raise(XML::Error) do xp.parse end # Now check context context = xp.context assert_equal(nil, context.data_directory) assert_equal(0, context.depth) assert_equal(true, context.disable_sax?) assert_equal(false, context.docbook?) assert_equal(XML::Encoding::NONE, context.encoding) assert_equal(76, context.errno) assert_equal(false, context.html?) assert_equal(5, context.io_max_num_streams) assert_equal(1, context.io_num_streams) assert_equal(true, context.keep_blanks?) assert_equal(1, context.io_num_streams) assert_equal(nil, context.name_node) assert_equal(0, context.name_depth) assert_equal(10, context.name_depth_max) assert_equal(17, context.num_chars) assert_equal(false, context.replace_entities?) assert_equal(1, context.space_depth) assert_equal(10, context.space_depth_max) assert_equal(false, context.subset_external?) assert_equal(nil, context.subset_external_system_id) assert_equal(nil, context.subset_external_uri) assert_equal(false, context.subset_internal?) assert_equal(nil, context.subset_internal_name) assert_equal(false, context.stats?) assert_equal(true, context.standalone?) assert_equal(false, context.valid) assert_equal(false, context.validate?) assert_equal('1.0', context.version) assert_equal(false, context.well_formed?) end end