1
2
3
4
5 package com.jcabi.xml;
6
7 import java.util.ArrayList;
8 import java.util.Iterator;
9 import java.util.List;
10 import javax.xml.XMLConstants;
11 import javax.xml.namespace.NamespaceContext;
12 import org.hamcrest.MatcherAssert;
13 import org.hamcrest.Matchers;
14 import org.junit.jupiter.api.Test;
15
16
17
18
19
20 @SuppressWarnings("PMD.JUnitAssertionsShouldIncludeMessage")
21 final class XPathContextTest {
22
23 @Test
24 void findsNamespaceByPrefix() {
25 final String prefix = "ns1-foo";
26 final String namespace = "hey-it-is-a-namespace";
27 final NamespaceContext ctx = new XPathContext()
28 .add(prefix, namespace)
29 .add("ns-something-else", "boom");
30 MatcherAssert.assertThat(
31 ctx.getNamespaceURI(prefix),
32 Matchers.equalTo(namespace)
33 );
34 }
35
36 @Test
37 void findsPrefixByNamespace() {
38 final String prefix = "ns2-foo";
39 final String namespace = "hey-it-is-a-new-namespace";
40 final NamespaceContext ctx = new XPathContext()
41 .add(prefix, namespace)
42 .add("other-prefix", "boom-boom");
43 MatcherAssert.assertThat(
44 ctx.getPrefix(namespace),
45 Matchers.equalTo(prefix)
46 );
47 }
48
49 @Test
50 void findsPrefixesByNamespace() {
51 final String namespace = "simple-short-namespace";
52 final NamespaceContext ctx = new XPathContext(namespace, namespace);
53 final List<String> prefixes = new ArrayList<>(0);
54 final Iterator<?> iter = ctx.getPrefixes(namespace);
55 while (iter.hasNext()) {
56 prefixes.add((String) iter.next());
57 }
58 MatcherAssert.assertThat(
59 prefixes,
60 Matchers.allOf(
61 Matchers.iterableWithSize(2),
62 Matchers.hasItem("ns1"),
63 Matchers.hasItem("ns2")
64 )
65 );
66 }
67
68 @Test
69 void findsDefaultNamespaces() {
70 final NamespaceContext ctx = new XPathContext();
71 MatcherAssert.assertThat(
72 ctx.getNamespaceURI("xhtml"),
73 Matchers.equalTo("http://www.w3.org/1999/xhtml")
74 );
75 MatcherAssert.assertThat(
76 ctx.getNamespaceURI("xsl"),
77 Matchers.equalTo("http://www.w3.org/1999/XSL/Transform")
78 );
79 MatcherAssert.assertThat(
80 ctx.getNamespaceURI("xsi"),
81 Matchers.equalTo("http://www.w3.org/2001/XMLSchema-instance")
82 );
83 MatcherAssert.assertThat(
84 ctx.getNamespaceURI("xs"),
85 Matchers.equalTo("http://www.w3.org/2001/XMLSchema")
86 );
87 MatcherAssert.assertThat(
88 ctx.getNamespaceURI(XMLConstants.XML_NS_PREFIX),
89 Matchers.equalTo(XMLConstants.XML_NS_URI)
90 );
91 MatcherAssert.assertThat(
92 ctx.getNamespaceURI(XMLConstants.XMLNS_ATTRIBUTE),
93 Matchers.equalTo(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)
94 );
95 }
96
97 @Test
98 void findsNonBoundNamespaces() {
99 final NamespaceContext ctx = new XPathContext();
100 MatcherAssert.assertThat(
101 ctx.getNamespaceURI("some-other-unbound-prefix"),
102 Matchers.equalTo(XMLConstants.NULL_NS_URI)
103 );
104 }
105
106 }