/* * #%L * Nazgul Project: nazgul-core-xmlbinding-api * %% * Copyright (C) 2010 - 2017 jGuru Europe AB * %% * Licensed under the jGuru Europe AB license (the "License"), based * on Apache License, Version 2.0; you may not use this file except * in compliance with the License. * * You may obtain a copy of the License at * * http://www.jguru.se/licenses/jguruCorporateSourceLicense-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% * */ package se.jguru.nazgul.core.xmlbinding.api; import org.junit.Assert; import org.junit.Test; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** * @author <a href="mailto:lj@jguru.se">Lennart Jörelid</a>, jGuru Europe AB */ public class DefaultNamespacePrefixResolverTest { // Shared state private WellKnownNamespace[] allNamespaces = WellKnownNamespace.values(); @Test public void validateDefaultPrefixSetup() { // Assemble final DefaultNamespacePrefixResolver unitUnderTest = new DefaultNamespacePrefixResolver(); // Act final Set<String> registeredNamespaceURIs = unitUnderTest.getRegisteredNamespaceURIs(); final Set<String> registeredPrefixes = unitUnderTest.getRegisteredPrefixes(); // Assert Assert.assertEquals(allNamespaces.length, registeredNamespaceURIs.size()); Assert.assertEquals(allNamespaces.length, registeredPrefixes.size()); for (WellKnownNamespace current : allNamespaces) { final String currentNamespace = current.getNameSpaceUrl(); final String currentPrefix = current.getXsdPrefix(); Assert.assertEquals(currentNamespace, unitUnderTest.getNamespaceUri(currentPrefix)); Assert.assertEquals(currentPrefix, unitUnderTest.getXmlPrefix(currentNamespace)); Assert.assertTrue(unitUnderTest.getRegisteredNamespaceURIs().contains(currentNamespace)); Assert.assertTrue(unitUnderTest.getRegisteredPrefixes().contains(currentPrefix)); } } @Test(expected = IllegalArgumentException.class) public void validateExceptionOnAddingNamespaceTwice() { // Assemble final DefaultNamespacePrefixResolver unitUnderTest = new DefaultNamespacePrefixResolver(); final String namespaceURL = "http://some/namespace/url"; // Act & Assert unitUnderTest.put(namespaceURL, "someValue"); unitUnderTest.put(namespaceURL, "anotherValue"); } @Test public void validateCompoundUri2PrefixAddition() { // Assemble final DefaultNamespacePrefixResolver unitUnderTest = new DefaultNamespacePrefixResolver(); final Map<String, String> namespaceMap = new TreeMap<String, String>(); namespaceMap.put("http://some/namespace/url", "prefix1"); namespaceMap.put("http://some/other/namespace/url", "prefix2"); // Act unitUnderTest.putAll(namespaceMap); // Assert final int expectedLength = namespaceMap.size() + WellKnownNamespace.values().length; Assert.assertEquals(expectedLength, unitUnderTest.getRegisteredNamespaceURIs().size()); Assert.assertEquals(expectedLength, unitUnderTest.getRegisteredPrefixes().size()); } @Test(expected = IllegalArgumentException.class) public void validateExceptionOnAddingIncorrectlyMappedNamespace() { // Assemble final DefaultNamespacePrefixResolver unitUnderTest = new DefaultNamespacePrefixResolver(); final String prefix = "fooBar"; final Map<String, String> namespaceMap = new TreeMap<String, String>(); namespaceMap.put("http://some/namespace/url", prefix); namespaceMap.put("http://some/other/namespace/url", prefix); // Act & Assert unitUnderTest.putAll(namespaceMap); } // // Private helpers // private String getWellKnownXmlNamespace(final String xmlPrefix) { for (WellKnownNamespace current : allNamespaces) { if (current.getXsdPrefix().equals(xmlPrefix)) { return current.getNameSpaceUrl(); } } throw new IllegalArgumentException("XmlPrefix [" + xmlPrefix + "] not found."); } private String getWellKnownXmlPrefix(final String xmlNamespace) { return WellKnownNamespace.valueOf(xmlNamespace).getNameSpaceUrl(); } }