diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-11 08:43:17 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-11 08:43:17 +0000 |
commit | 99ed561b4b34813979bf598a73023c33f8486c18 (patch) | |
tree | f370d7edb90f68bce9c1a5b458bc0e5b6f9cc198 /test/rexml | |
parent | e315aa0c41b59249250fdfc6a0eef94635aedb40 (diff) | |
download | bundler-99ed561b4b34813979bf598a73023c33f8486c18.tar.gz |
* test/rexml/parser/test_sax2.rb: Add SAX2 API test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rexml')
-rw-r--r-- | test/rexml/parser/test_sax2.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/test/rexml/parser/test_sax2.rb b/test/rexml/parser/test_sax2.rb new file mode 100644 index 0000000000..d808899dd2 --- /dev/null +++ b/test/rexml/parser/test_sax2.rb @@ -0,0 +1,57 @@ +require "test/unit" +require "rexml/parsers/sax2parser" +require "rexml/sax2listener" + +class TestSAX2Parser < Test::Unit::TestCase + class TestDocumentTypeDeclaration < self + private + def xml(internal_subset) + <<-XML +<!DOCTYPE r SYSTEM "urn:x-henrikmartensson:test" [ +#{internal_subset} +]> +<r/> + XML + end + + class TestEntityDecl < self + class Listener + include REXML::SAX2Listener + attr_reader :entity_declarations + def initialize + @entity_declarations = [] + end + + def entitydecl(*args) + super + @entity_declarations << args + end + end + + private + def parse(internal_subset) + listener = Listener.new + parser = REXML::Parsers::SAX2Parser.new(xml(internal_subset)) + parser.listen(listener) + parser.parse + listener.entity_declarations + end + + class TestGeneralEntity < self + class TestValue < self + def test_double_quote + assert_equal([["name", "value"]], parse(<<-INTERNAL_SUBSET)) +<!ENTITY name "value"> + INTERNAL_SUBSET + end + + def test_single_quote + assert_equal([["name", "value"]], parse(<<-INTERNAL_SUBSET)) +<!ENTITY name 'value'> + INTERNAL_SUBSET + end + end + end + end + end +end |