@@ -24,14 +24,27 @@ def test_3_1
24
24
<!-- Comment 3 -->
25
25
eoxml
26
26
27
+ expected = <<~EOF . strip
28
+ <?xml-stylesheet href="doc.xsl"
29
+ type="text/xsl" ?>
30
+ <doc>Hello, world!</doc>
31
+ <?pi-without-data?>
32
+ EOF
27
33
c14n = doc . canonicalize
28
- refute_match ( /version=/ , c14n )
29
- assert_match ( /Hello, world/ , c14n )
30
- refute_match ( /Comment/ , c14n )
31
- c14n = doc . canonicalize ( nil , nil , true )
32
- assert_match ( /Comment/ , c14n )
34
+ assert_equal ( expected , c14n )
33
35
c14n = doc . canonicalize ( nil , nil , false )
34
- refute_match ( /Comment/ , c14n )
36
+ assert_equal ( expected , c14n )
37
+
38
+ expected = <<~EOF . strip
39
+ <?xml-stylesheet href="doc.xsl"
40
+ type="text/xsl" ?>
41
+ <doc>Hello, world!<!-- Comment 1 --></doc>
42
+ <?pi-without-data?>
43
+ <!-- Comment 2 -->
44
+ <!-- Comment 3 -->
45
+ EOF
46
+ c14n = doc . canonicalize ( nil , nil , true )
47
+ assert_equal ( expected , c14n )
35
48
end
36
49
37
50
def test_exclude_block_params
@@ -76,6 +89,23 @@ def test_exclude_block_false
76
89
assert_equal ( "" , c14n )
77
90
end
78
91
92
+ def test_exclude_block_conditional
93
+ xml = "<root><a></a><b></b><c></c><d></d></root>"
94
+ doc = Nokogiri . XML ( xml )
95
+
96
+ c14n = doc . canonicalize do |node , _parent |
97
+ node . name == "root" || node . name == "a" || node . name == "c"
98
+ end
99
+ assert_equal ( "<root><a></a><c></c></root>" , c14n )
100
+
101
+ c14n = doc . canonicalize do |node , _parent |
102
+ node . name == "a" || node . name == "c"
103
+ end
104
+ pending_if ( "java c14n is not completely compatible with libxml2 c14n" , Nokogiri . jruby? ) do
105
+ assert_equal ( "<a></a><c></c>" , c14n )
106
+ end
107
+ end
108
+
79
109
def test_exclude_block_nil
80
110
xml = "<a><b></b></a>"
81
111
doc = Nokogiri . XML ( xml )
0 commit comments