File: test_cdata.rb

package info (click to toggle)
ruby-nokogiri 1.13.10%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,416 kB
  • sloc: ansic: 38,198; xml: 28,086; ruby: 22,271; java: 15,517; cpp: 7,037; yacc: 244; sh: 148; makefile: 136
file content (56 lines) | stat: -rw-r--r-- 1,358 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# frozen_string_literal: true

require "helper"

module Nokogiri
  module XML
    class TestCDATA < Nokogiri::TestCase
      def setup
        super
        @xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
      end

      def test_cdata_node
        name = @xml.xpath("//employee[2]/name").first
        assert(cdata = name.children[1])
        assert_predicate(cdata, :cdata?)
        assert_equal("#cdata-section", cdata.name)
      end

      def test_new
        node = CDATA.new(@xml, "foo")
        assert_equal("foo", node.content)

        node = CDATA.new(@xml.root, "foo")
        assert_equal("foo", node.content)
      end

      def test_new_with_nil
        node = CDATA.new(@xml, nil)
        assert_nil(node.content)
      end

      def test_new_with_non_string
        assert_raises(TypeError) do
          CDATA.new(@xml, 1.234)
        end
      end

      def test_lots_of_new_cdata
        assert(100.times { CDATA.new(@xml, "asdfasdf") })
      end

      def test_content=
        node = CDATA.new(@xml, "foo")
        assert_equal("foo", node.content)

        node.content = "& <foo> &amp;"
        assert_equal("& <foo> &amp;", node.content)
        assert_equal("<![CDATA[& <foo> &amp;]]>", node.to_xml)

        node.content = "foo ]]> bar"
        assert_equal("foo ]]> bar", node.content)
      end
    end
  end
end