1#! /usr/local/bin/ruby
2
3
4require 'test/unit'
5require 'rexml/document'
6
7class TestNotationDeclMixin < Test::Unit::TestCase
8  def setup
9    @pubid1 = "TEST1"
10    @pubid2 = "TEST2"
11    @sysid2 = "urn:x-henrikmartensson.org:test2"
12    @pubid3 = "TEST3"
13    @pubid4 = "TEST4"
14    @sysid4 = "urn:x-henrikmartensson.org:test4"
15    @pubid5 = "TEST5"
16    @sysid5 = "urn:x-henrikmartensson.org:test5"
17    @pubid6 = "TEST6"
18    @sysid6 = "urn:x-henrikmartensson.org:test6"
19    @sysid7 = "urn:x-henrikmartensson.org:test7"
20    doc_string = <<-"XMLEND"
21    <!DOCTYPE r SYSTEM "urn:x-henrikmartensson:test" [
22      <!NOTATION n1 PUBLIC "#{@pubid1}">
23      <!NOTATION n2 PUBLIC "#{@pubid2}" "#{@sysid2}">
24      <!NOTATION n3 PUBLIC '#{@pubid3}'>
25      <!NOTATION n4 PUBLIC '#{@pubid4}' '#{@sysid4}'>
26      <!NOTATION n5 PUBLIC "#{@pubid5}" '#{@sysid5}'>
27      <!NOTATION n6 PUBLIC '#{@pubid6}' "#{@sysid6}">
28      <!NOTATION n7 SYSTEM "#{@sysid7}">
29    ]>
30    <r/>
31    XMLEND
32    @doctype = REXML::Document.new(doc_string).doctype
33  end
34
35  def test_name
36    assert_equal('n1', @doctype.notation('n1').name)
37  end
38
39  def test_public_2
40    assert_equal(@pubid1, @doctype.notation('n1').public)
41    assert_equal(@pubid2, @doctype.notation('n2').public)
42    assert_equal(@pubid3, @doctype.notation('n3').public)
43    assert_equal(@pubid4, @doctype.notation('n4').public)
44    assert_equal(@pubid5, @doctype.notation('n5').public)
45    assert_equal(@pubid6, @doctype.notation('n6').public)
46    assert_nil(@doctype.notation('n7').public)
47  end
48
49  def test_system_2
50    assert_equal(@sysid2, @doctype.notation('n2').system)
51    assert_nil(@doctype.notation('n3').system)
52    assert_equal(@sysid4, @doctype.notation('n4').system)
53    assert_equal(@sysid5, @doctype.notation('n5').system)
54    assert_equal(@sysid6, @doctype.notation('n6').system)
55    assert_equal(@sysid7, @doctype.notation('n7').system)
56  end
57
58end
59