1# frozen_string_literal: false 2 3require_relative "rexml_test_utils" 4 5module REXMLTests 6 class TextTester < Test::Unit::TestCase 7 include REXML 8 9 def test_new_text_response_whitespace_default 10 text = Text.new("a b\t\tc", true) 11 assert_equal("a b\tc", Text.new(text).to_s) 12 end 13 14 def test_new_text_response_whitespace_true 15 text = Text.new("a b\t\tc", true) 16 assert_equal("a b\t\tc", Text.new(text, true).to_s) 17 end 18 19 def test_new_text_raw_default 20 text = Text.new("&lt;", false, nil, true) 21 assert_equal("&lt;", Text.new(text).to_s) 22 end 23 24 def test_new_text_raw_false 25 text = Text.new("&lt;", false, nil, true) 26 assert_equal("&amp;lt;", Text.new(text, false, nil, false).to_s) 27 end 28 29 def test_new_text_entity_filter_default 30 document = REXML::Document.new(<<-XML) 31<!DOCTYPE root [ 32 <!ENTITY a "aaa"> 33 <!ENTITY b "bbb"> 34]> 35<root/> 36 XML 37 text = Text.new("aaa bbb", false, document.root, nil, ["a"]) 38 assert_equal("aaa &b;", 39 Text.new(text, false, document.root).to_s) 40 end 41 42 def test_new_text_entity_filter_custom 43 document = REXML::Document.new(<<-XML) 44<!DOCTYPE root [ 45 <!ENTITY a "aaa"> 46 <!ENTITY b "bbb"> 47]> 48<root/> 49 XML 50 text = Text.new("aaa bbb", false, document.root, nil, ["a"]) 51 assert_equal("&a; bbb", 52 Text.new(text, false, document.root, nil, ["b"]).to_s) 53 end 54 55 def test_shift_operator_chain 56 text = Text.new("original\r\n") 57 text << "append1\r\n" << "append2\r\n" 58 assert_equal("original\nappend1\nappend2\n", text.to_s) 59 end 60 61 def test_shift_operator_cache 62 text = Text.new("original\r\n") 63 text << "append1\r\n" << "append2\r\n" 64 assert_equal("original\nappend1\nappend2\n", text.to_s) 65 text << "append3\r\n" << "append4\r\n" 66 assert_equal("original\nappend1\nappend2\nappend3\nappend4\n", text.to_s) 67 end 68 69 def test_clone 70 text = Text.new("&lt; <") 71 assert_equal(text.to_s, 72 text.clone.to_s) 73 end 74 end 75end 76