summaryrefslogtreecommitdiff
path: root/test/rexml/test_text.rb
blob: e9a246e27f87cacdb0fedf7cfcbaa566972fda17 (plain)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# frozen_string_literal: false

require_relative "rexml_test_utils"

module REXMLTests
  class TextTester < Test::Unit::TestCase
    include REXML

    def test_new_text_response_whitespace_default
      text = Text.new("a  b\t\tc", true)
      assert_equal("a b\tc", Text.new(text).to_s)
    end

    def test_new_text_response_whitespace_true
      text = Text.new("a  b\t\tc", true)
      assert_equal("a  b\t\tc", Text.new(text, true).to_s)
    end

    def test_new_text_raw_default
      text = Text.new("&amp;lt;", false, nil, true)
      assert_equal("&amp;lt;", Text.new(text).to_s)
    end

    def test_new_text_raw_false
      text = Text.new("&amp;lt;", false, nil, true)
      assert_equal("&amp;amp;lt;", Text.new(text, false, nil, false).to_s)
    end

    def test_new_text_entity_filter_default
      document = REXML::Document.new(<<-XML)
<!DOCTYPE root [
  <!ENTITY a "aaa">
  <!ENTITY b "bbb">
]>
<root/>
      XML
      text = Text.new("aaa bbb", false, document.root, nil, ["a"])
      assert_equal("aaa &b;",
                   Text.new(text, false, document.root).to_s)
    end

    def test_new_text_entity_filter_custom
      document = REXML::Document.new(<<-XML)
<!DOCTYPE root [
  <!ENTITY a "aaa">
  <!ENTITY b "bbb">
]>
<root/>
      XML
      text = Text.new("aaa bbb", false, document.root, nil, ["a"])
      assert_equal("&a; bbb",
                   Text.new(text, false, document.root, nil, ["b"]).to_s)
    end

    def test_shift_operator_chain
      text = Text.new("original\r\n")
      text << "append1\r\n" << "append2\r\n"
      assert_equal("original\nappend1\nappend2\n", text.to_s)
    end

    def test_shift_operator_cache
      text = Text.new("original\r\n")
      text << "append1\r\n" << "append2\r\n"
      assert_equal("original\nappend1\nappend2\n", text.to_s)
      text << "append3\r\n" << "append4\r\n"
      assert_equal("original\nappend1\nappend2\nappend3\nappend4\n", text.to_s)
    end

    def test_clone
      text = Text.new("&amp;lt; <")
      assert_equal(text.to_s,
                   text.clone.to_s)
    end
  end
end