/* * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package sax; import java.util.Enumeration; import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import org.xml.sax.helpers.NamespaceSupport; /* * @test * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest * @run testng/othervm -DrunSecMngr=true sax.NSSupportTest * @run testng/othervm sax.NSSupportTest * @summary Test NamespaceSupport. */ @Listeners({jaxp.library.BasePolicy.class}) public class NSSupportTest { @Test public void testProcessName() { NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("", "http://www.java.com"); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); String[] parts = new String[3]; nssupport.processName("dc:name1", parts, false); Assert.assertTrue(parts[0].equals("http://www.purl.org/dc")); Assert.assertTrue(parts[1].equals("name1")); Assert.assertTrue(parts[2].equals("dc:name1")); nssupport.processName("name2", parts, false); Assert.assertTrue(parts[0].equals("http://www.java.com")); Assert.assertTrue(parts[1].equals("name2")); Assert.assertTrue(parts[2].equals("name2")); } @Test public void testNamespaceDeclUris() { String[] parts = new String[3]; NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); Assert.assertFalse(nssupport.isNamespaceDeclUris()); nssupport.declarePrefix("xmlns", ""); nssupport.processName("xmlns:name", parts, true); Assert.assertNull(parts[0]); Assert.assertNull(parts[1]); Assert.assertNull(parts[2]); nssupport.reset(); nssupport.setNamespaceDeclUris(true); nssupport.declarePrefix("xmlns", ""); nssupport.processName("xmlns:name", parts, true); Assert.assertTrue(parts[0].equals(NamespaceSupport.NSDECL)); Assert.assertTrue(parts[1].equals("name")); Assert.assertTrue(parts[2].equals("xmlns:name")); nssupport.reset(); nssupport.setNamespaceDeclUris(true); nssupport.declarePrefix("xml", ""); nssupport.processName("xml:name", parts, true); Assert.assertTrue(parts[0].equals(NamespaceSupport.XMLNS)); Assert.assertTrue(parts[1].equals("name")); Assert.assertTrue(parts[2].equals("xml:name")); } @Test public void testPopContext() { String[] parts = new String[3]; NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); Assert.assertEquals(nssupport.getPrefix("http://www.purl.org/dc"), "dc"); nssupport.popContext(); Assert.assertNull(nssupport.getPrefix("http://www.purl.org/dc")); nssupport.processName("dc:name1", parts, false); Assert.assertNull(parts[0]); Assert.assertNull(parts[1]); Assert.assertNull(parts[2]); } @Test public void testPrefixAndUri1() { boolean hasdc = false; boolean hasdc1 = false; boolean hasdc2 = false; boolean hasdcnew = false; NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); nssupport.pushContext(); nssupport.declarePrefix("dc1", "http://www.purl.org/dc"); nssupport.declarePrefix("dc2", "http://www.purl.org/dc2"); nssupport.declarePrefix("dcnew", "http://www.purl.org/dcnew"); Enumeration enu1 = nssupport.getDeclaredPrefixes(); while (enu1.hasMoreElements()) { String str = (String) enu1.nextElement(); if (str.equals("dc")) { hasdc = true; } else if (str.equals("dc1")) { hasdc1 = true; } else if (str.equals("dc2")) { hasdc2 = true; } else if (str.equals("dcnew")) { hasdcnew = true; } } AssertJUnit.assertTrue(hasdcnew && hasdc1 && hasdc2); AssertJUnit.assertFalse(hasdc); } @Test public void testPrefixAndUri2() { boolean hasdc = false; boolean hasdc1 = false; boolean hasdc2 = false; boolean hasdcnew = false; NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); nssupport.pushContext(); nssupport.declarePrefix("dc1", "http://www.purl.org/dc"); nssupport.declarePrefix("dc2", "http://www.purl.org/dc2"); nssupport.declarePrefix("dcnew", "http://www.purl.org/dcnew"); Enumeration enu1 = nssupport.getPrefixes(); while (enu1.hasMoreElements()) { String str = (String) enu1.nextElement(); if (str.equals("dc")) { hasdc = true; } else if (str.equals("dc1")) { hasdc1 = true; } else if (str.equals("dc2")) { hasdc2 = true; } else if (str.equals("dcnew")) { hasdcnew = true; } } AssertJUnit.assertTrue(hasdcnew && hasdc1 && hasdc2 && hasdc); } @Test public void testPrefixAndUri3() { boolean hasdc = false; boolean hasdc1 = false; boolean hasdc2 = false; boolean hasdcnew = false; NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); nssupport.pushContext(); nssupport.declarePrefix("dc1", "http://www.purl.org/dc"); nssupport.declarePrefix("dc2", "http://www.purl.org/dc2"); nssupport.declarePrefix("dcnew", "http://www.purl.org/dcnew"); Enumeration enu1 = nssupport.getPrefixes("http://www.purl.org/dc"); while (enu1.hasMoreElements()) { String str = (String) enu1.nextElement(); if (str.equals("dc")) { hasdc = true; } else if (str.equals("dc1")) { hasdc1 = true; } else if (str.equals("dc2")) { hasdc2 = true; } else if (str.equals("dcnew")) { hasdcnew = true; } } AssertJUnit.assertTrue(hasdc1 && hasdc); AssertJUnit.assertFalse(hasdc2); AssertJUnit.assertFalse(hasdcnew); } @Test public void testPrefixAndUri4() { NamespaceSupport nssupport = new NamespaceSupport(); nssupport.pushContext(); nssupport.declarePrefix("dc", "http://www.purl.org/dc"); nssupport.pushContext(); nssupport.declarePrefix("dc1", "http://www.purl.org/dc"); nssupport.declarePrefix("dc2", "http://www.purl.org/dc2"); nssupport.declarePrefix("dcnew", "http://www.purl.org/dcnew"); AssertJUnit.assertTrue(nssupport.getURI("dc").equals("http://www.purl.org/dc")); AssertJUnit.assertTrue(nssupport.getURI("dc1").equals("http://www.purl.org/dc")); AssertJUnit.assertTrue(nssupport.getURI("dc2").equals("http://www.purl.org/dc2")); AssertJUnit.assertTrue(nssupport.getURI("dcnew").equals("http://www.purl.org/dcnew")); // Negative test Assert.assertNull(nssupport.getURI("wrong_prefix")); Assert.assertNull(nssupport.getURI("")); } }