|
1 | | -# encoding: UTF-8 |
2 | | -require_relative './test_helper' |
3 | | - |
4 | | -class TestDocument < Minitest::Test |
5 | | - def setup |
6 | | - xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>') |
7 | | - assert_instance_of(LibXML::XML::Parser, xp) |
8 | | - @doc = xp.parse |
9 | | - assert_instance_of(LibXML::XML::Document, @doc) |
10 | | - end |
11 | | - |
12 | | - def teardown |
13 | | - @doc = nil |
14 | | - end |
15 | | - |
16 | | - def test_klass |
17 | | - assert_instance_of(LibXML::XML::Document, @doc) |
18 | | - end |
19 | | - |
20 | | - def test_context |
21 | | - context = @doc.context |
22 | | - assert_instance_of(LibXML::XML::XPath::Context, context) |
23 | | - end |
24 | | - |
25 | | - def test_find |
26 | | - set = @doc.find('/ruby_array/fixnum') |
27 | | - assert_instance_of(LibXML::XML::XPath::Object, set) |
28 | | - assert_raises(NoMethodError) { |
29 | | - set.xpath |
30 | | - } |
31 | | - end |
32 | | - |
33 | | - def test_compression |
34 | | - if LibXML::XML.enabled_zlib? |
35 | | - 0.upto(9) do |i| |
36 | | - assert_equal(i, @doc.compression = i) |
37 | | - assert_equal(i, @doc.compression) |
38 | | - end |
39 | | - |
40 | | - 9.downto(0) do |i| |
41 | | - assert_equal(i, @doc.compression = i) |
42 | | - assert_equal(i, @doc.compression) |
43 | | - end |
44 | | - |
45 | | - 10.upto(20) do |i| |
46 | | - # assert_equal(9, @doc.compression = i) |
47 | | - assert_equal(i, @doc.compression = i) # This works around a bug in Ruby 1.8 |
48 | | - assert_equal(9, @doc.compression) |
49 | | - end |
50 | | - |
51 | | - -1.downto(-10) do |i| |
52 | | - # assert_equal(0, @doc.compression = i) |
53 | | - assert_equal(i, @doc.compression = i) # FIXME This bug should get fixed ASAP |
54 | | - assert_equal(0, @doc.compression) |
55 | | - end |
56 | | - end |
57 | | - end |
58 | | - |
59 | | - def test_version |
60 | | - assert_equal('1.0', @doc.version) |
61 | | - |
62 | | - doc = LibXML::XML::Document.new('6.9') |
63 | | - assert_equal('6.9', doc.version) |
64 | | - end |
65 | | - |
66 | | - def test_write_root |
67 | | - @doc.root = LibXML::XML::Node.new('rubynet') |
68 | | - assert_instance_of(LibXML::XML::Node, @doc.root) |
69 | | - assert_instance_of(LibXML::XML::Document, @doc.root.doc) |
70 | | - assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rubynet/>\n", |
71 | | - @doc.to_s(:indent => false)) |
72 | | - end |
73 | | - |
74 | | - def test_doc_node_type |
75 | | - assert_equal(LibXML::XML::Node::DOCUMENT_NODE, LibXML::XML::Document.new.node_type) |
76 | | - end |
77 | | - |
78 | | - def test_doc_node_type_name |
79 | | - assert_equal('document_xml', LibXML::XML::Document.new.node_type_name) |
80 | | - end |
81 | | - |
82 | | - def test_xhtml |
83 | | - doc = LibXML::XML::Document.new |
84 | | - assert(!doc.xhtml?) |
85 | | - LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, doc, true |
86 | | - assert(doc.xhtml?) |
87 | | - end |
88 | | - |
89 | | - def test_document_root |
90 | | - doc1 = LibXML::XML::Document.string("<one/>") |
91 | | - doc2 = LibXML::XML::Document.string("<two/>") |
92 | | - |
93 | | - error = assert_raises(LibXML::XML::Error) do |
94 | | - doc1.root = doc2.root |
95 | | - end |
96 | | - assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.", |
97 | | - error.to_s) |
98 | | - |
99 | | - doc2.root << doc2.import(doc1.root) |
100 | | - assert_equal('<one/>', doc1.root.to_s) |
101 | | - assert_equal('<two><one/></two>', doc2.root.to_s(:indent => false)) |
102 | | - |
103 | | - assert(!doc1.root.equal?(doc2.root)) |
104 | | - assert(doc1.root.doc != doc2.root.doc) |
105 | | - end |
106 | | - |
107 | | - def test_import_node |
108 | | - doc1 = LibXML::XML::Parser.string('<nums><one></one></nums>').parse |
109 | | - doc2 = LibXML::XML::Parser.string('<nums><two></two></nums>').parse |
110 | | - |
111 | | - node = doc1.root.child |
112 | | - |
113 | | - error = assert_raises(LibXML::XML::Error) do |
114 | | - doc2.root << node |
115 | | - end |
116 | | - |
117 | | - assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.", |
118 | | - error.to_s) |
119 | | - |
120 | | - doc2.root << doc2.import(node) |
121 | | - |
122 | | - assert_equal("<nums><two/><one/></nums>", |
123 | | - doc2.root.to_s(:indent => false)) |
124 | | - end |
125 | | - |
126 | | - def test_nonet |
127 | | - xml_string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>' |
128 | | - xml = LibXML::XML::Document.string(xml_string, options: LibXML::XML::Parser::Options::NONET) |
129 | | - file = File.join(File.dirname(__FILE__), 'model/atom.xml') |
130 | | - schema_document = LibXML::XML::Document.file(file, options: LibXML::XML::Parser::Options::NONET) |
131 | | - end |
132 | | -end |
| 1 | +# encoding: UTF-8 |
| 2 | +require_relative './test_helper' |
| 3 | + |
| 4 | +class TestDocument < Minitest::Test |
| 5 | + def setup |
| 6 | + xp = LibXML::XML::Parser.string('<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>') |
| 7 | + assert_instance_of(LibXML::XML::Parser, xp) |
| 8 | + @doc = xp.parse |
| 9 | + assert_instance_of(LibXML::XML::Document, @doc) |
| 10 | + end |
| 11 | + |
| 12 | + def teardown |
| 13 | + @doc = nil |
| 14 | + end |
| 15 | + |
| 16 | + def test_klass |
| 17 | + assert_instance_of(LibXML::XML::Document, @doc) |
| 18 | + end |
| 19 | + |
| 20 | + def test_context |
| 21 | + context = @doc.context |
| 22 | + assert_instance_of(LibXML::XML::XPath::Context, context) |
| 23 | + end |
| 24 | + |
| 25 | + def test_find |
| 26 | + set = @doc.find('/ruby_array/fixnum') |
| 27 | + assert_instance_of(LibXML::XML::XPath::Object, set) |
| 28 | + assert_raises(NoMethodError) { |
| 29 | + set.xpath |
| 30 | + } |
| 31 | + end |
| 32 | + |
| 33 | + def test_compression |
| 34 | + if LibXML::XML.enabled_zlib? |
| 35 | + 0.upto(9) do |i| |
| 36 | + assert_equal(i, @doc.compression = i) |
| 37 | + assert_equal(i, @doc.compression) |
| 38 | + end |
| 39 | + |
| 40 | + 9.downto(0) do |i| |
| 41 | + assert_equal(i, @doc.compression = i) |
| 42 | + assert_equal(i, @doc.compression) |
| 43 | + end |
| 44 | + |
| 45 | + 10.upto(20) do |i| |
| 46 | + # assert_equal(9, @doc.compression = i) |
| 47 | + assert_equal(i, @doc.compression = i) # This works around a bug in Ruby 1.8 |
| 48 | + assert_equal(9, @doc.compression) |
| 49 | + end |
| 50 | + |
| 51 | + -1.downto(-10) do |i| |
| 52 | + # assert_equal(0, @doc.compression = i) |
| 53 | + assert_equal(i, @doc.compression = i) # FIXME This bug should get fixed ASAP |
| 54 | + assert_equal(0, @doc.compression) |
| 55 | + end |
| 56 | + end |
| 57 | + end |
| 58 | + |
| 59 | + def test_version |
| 60 | + assert_equal('1.0', @doc.version) |
| 61 | + |
| 62 | + doc = LibXML::XML::Document.new('6.9') |
| 63 | + assert_equal('6.9', doc.version) |
| 64 | + end |
| 65 | + |
| 66 | + def test_write_root |
| 67 | + @doc.root = LibXML::XML::Node.new('rubynet') |
| 68 | + assert_instance_of(LibXML::XML::Node, @doc.root) |
| 69 | + assert_instance_of(LibXML::XML::Document, @doc.root.doc) |
| 70 | + assert_equal("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rubynet/>\n", |
| 71 | + @doc.to_s(:indent => false)) |
| 72 | + end |
| 73 | + |
| 74 | + def test_doc_node_type |
| 75 | + assert_equal(LibXML::XML::Node::DOCUMENT_NODE, LibXML::XML::Document.new.node_type) |
| 76 | + end |
| 77 | + |
| 78 | + def test_doc_node_type_name |
| 79 | + assert_equal('document_xml', LibXML::XML::Document.new.node_type_name) |
| 80 | + end |
| 81 | + |
| 82 | + def test_xhtml |
| 83 | + doc = LibXML::XML::Document.new |
| 84 | + assert(!doc.xhtml?) |
| 85 | + LibXML::XML::Dtd.new "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", nil, doc, true |
| 86 | + assert(doc.xhtml?) |
| 87 | + end |
| 88 | + |
| 89 | + def test_document_root |
| 90 | + doc1 = LibXML::XML::Document.string("<one/>") |
| 91 | + doc2 = LibXML::XML::Document.string("<two/>") |
| 92 | + |
| 93 | + error = assert_raises(LibXML::XML::Error) do |
| 94 | + doc1.root = doc2.root |
| 95 | + end |
| 96 | + assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.", |
| 97 | + error.to_s) |
| 98 | + |
| 99 | + doc2.root << doc2.import(doc1.root) |
| 100 | + assert_equal('<one/>', doc1.root.to_s) |
| 101 | + assert_equal('<two><one/></two>', doc2.root.to_s(:indent => false)) |
| 102 | + |
| 103 | + assert(!doc1.root.equal?(doc2.root)) |
| 104 | + assert(doc1.root.doc != doc2.root.doc) |
| 105 | + end |
| 106 | + |
| 107 | + def test_import_node |
| 108 | + doc1 = LibXML::XML::Parser.string('<nums><one></one></nums>').parse |
| 109 | + doc2 = LibXML::XML::Parser.string('<nums><two></two></nums>').parse |
| 110 | + |
| 111 | + node = doc1.root.child |
| 112 | + |
| 113 | + error = assert_raises(LibXML::XML::Error) do |
| 114 | + doc2.root << node |
| 115 | + end |
| 116 | + |
| 117 | + assert_equal(" Nodes belong to different documents. You must first import the node by calling LibXML::XML::Document.import.", |
| 118 | + error.to_s) |
| 119 | + |
| 120 | + doc2.root << doc2.import(node) |
| 121 | + |
| 122 | + assert_equal("<nums><two/><one/></nums>", |
| 123 | + doc2.root.to_s(:indent => false)) |
| 124 | + end |
| 125 | + |
| 126 | + def test_nonet |
| 127 | + xml_string = '<ruby_array uga="booga" foo="bar"><fixnum>one</fixnum><fixnum>two</fixnum></ruby_array>' |
| 128 | + xml = LibXML::XML::Document.string(xml_string, options: LibXML::XML::Parser::Options::NONET) |
| 129 | + file = File.join(File.dirname(__FILE__), 'model/atom.xml') |
| 130 | + schema_document = LibXML::XML::Document.file(file, options: LibXML::XML::Parser::Options::NONET) |
| 131 | + end |
| 132 | + |
| 133 | + def test_io |
| 134 | + File.open(File.join(File.dirname(__FILE__), 'model/rubynet.xml')) do |io| |
| 135 | + doc = LibXML::XML::Document.io(io) |
| 136 | + assert_instance_of(LibXML::XML::Document, doc) |
| 137 | + end |
| 138 | + end |
| 139 | + |
| 140 | +end |
0 commit comments