/** * Copyright © 2006-2016 Web Cohesion (info@webcohesion.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * 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. */ package com.webcohesion.enunciate.rt; import junit.framework.TestCase; import javax.xml.namespace.QName; import java.lang.annotation.RetentionPolicy; import java.net.URI; /** * @author Ryan Heaton */ public class TestQNameEnumUtil extends TestCase { /** * tests to/from qname enum. */ public void testToFrom() throws Exception { assertEquals(new QName("urn:special", "appropriate"), QNameEnumUtil.toQName(SpecialQNameEnum.appropriate)); assertEquals(new QName("urn:special", "best"), QNameEnumUtil.toQName(SpecialQNameEnum.best)); assertEquals(new QName("urn:definite", "unique"), QNameEnumUtil.toQName(SpecialQNameEnum.certain)); assertEquals(new QName("urn:definite", "chief"), QNameEnumUtil.toQName(SpecialQNameEnum.chief)); assertEquals(new QName("urn:enunciate", "unusual"), QNameEnumUtil.toQName(AnotherSpecialQNameEnum.unusual)); assertEquals(new QName("urn:enunciate", "uncommon"), QNameEnumUtil.toQName(AnotherSpecialQNameEnum.uncommon)); assertEquals(new QName("urn:enunciate", "specific"), QNameEnumUtil.toQName(AnotherSpecialQNameEnum.specific)); try { QNameEnumUtil.toQName(AnotherSpecialQNameEnum.not_a_qname_enum); } catch (IllegalArgumentException e) {} try { QNameEnumUtil.toQName(AnotherSpecialQNameEnum.other); } catch (IllegalArgumentException e) {} try { QNameEnumUtil.toQName(RetentionPolicy.CLASS); } catch (IllegalArgumentException e) {} assertEquals(SpecialQNameEnum.appropriate, QNameEnumUtil.fromQName(new QName("urn:special", "appropriate"), SpecialQNameEnum.class)); assertEquals(SpecialQNameEnum.best, QNameEnumUtil.fromQName(new QName("urn:special", "best"), SpecialQNameEnum.class)); assertEquals(SpecialQNameEnum.certain, QNameEnumUtil.fromQName(new QName("urn:definite", "unique"), SpecialQNameEnum.class)); assertEquals(SpecialQNameEnum.chief, QNameEnumUtil.fromQName(new QName("urn:definite", "chief"), SpecialQNameEnum.class)); assertNull(QNameEnumUtil.fromQName(new QName("urn:something", "chief"), SpecialQNameEnum.class)); assertNull(QNameEnumUtil.fromQName(new QName("urn:definite", "howdy"), SpecialQNameEnum.class)); try { QNameEnumUtil.fromQName(new QName("urn:definite", "howdy"), RetentionPolicy.class); fail(); } catch (IllegalArgumentException e) {} assertEquals(AnotherSpecialQNameEnum.unusual, QNameEnumUtil.fromQName(new QName("urn:enunciate", "unusual"), AnotherSpecialQNameEnum.class)); assertEquals(AnotherSpecialQNameEnum.uncommon, QNameEnumUtil.fromQName(new QName("urn:enunciate", "uncommon"), AnotherSpecialQNameEnum.class)); assertEquals(AnotherSpecialQNameEnum.specific, QNameEnumUtil.fromQName(new QName("urn:enunciate", "specific"), AnotherSpecialQNameEnum.class)); assertEquals(AnotherSpecialQNameEnum.other, QNameEnumUtil.fromQName(new QName("urn:something", "specific"), AnotherSpecialQNameEnum.class)); assertEquals(AnotherSpecialQNameEnum.other, QNameEnumUtil.fromQName(new QName("urn:enunciate", "something"), AnotherSpecialQNameEnum.class)); assertEquals(AnotherSpecialQNameEnum.other, QNameEnumUtil.fromQName(new QName("urn:enunciate", "not_a_qname_enum"), AnotherSpecialQNameEnum.class)); } /** * tests to/from qname enum. */ public void testToFromUri() throws Exception { assertEquals("urn:special#appropriate", QNameEnumUtil.toURI(SpecialURIEnum.appropriate)); assertEquals("urn:special#best", QNameEnumUtil.toURI(SpecialURIEnum.best)); assertEquals("urn:definite#unique", QNameEnumUtil.toURI(SpecialURIEnum.certain)); assertEquals("urn:definite#chief", QNameEnumUtil.toURI(SpecialURIEnum.chief)); QNameEnumUtil.setDefaultBaseUri("urn:definite#"); assertEquals("urn:definite#chief", QNameEnumUtil.toURI(SpecialURIEnum.chief)); QNameEnumUtil.setWriteRelativeUris(true); assertEquals("chief", QNameEnumUtil.toURI(SpecialURIEnum.chief)); QNameEnumUtil.setDefaultBaseUri(null); assertEquals(SpecialURIEnum.appropriate, QNameEnumUtil.fromURI("urn:special#appropriate", SpecialURIEnum.class)); assertEquals(SpecialURIEnum.best, QNameEnumUtil.fromURI("urn:special#best", SpecialURIEnum.class)); assertEquals(SpecialURIEnum.certain, QNameEnumUtil.fromURI("urn:definite#unique", SpecialURIEnum.class)); assertEquals(SpecialURIEnum.chief, QNameEnumUtil.fromURI("urn:definite#chief", SpecialURIEnum.class)); assertNull(QNameEnumUtil.fromURI("urn:something#chief", SpecialURIEnum.class)); assertNull(QNameEnumUtil.fromURI("urn:definite#howdy", SpecialURIEnum.class)); QNameEnumUtil.setDefaultBaseUri("urn:special#"); assertEquals(SpecialURIEnum.chief, QNameEnumUtil.fromURI("urn:definite#chief", SpecialURIEnum.class)); QNameEnumUtil.setDefaultBaseUri("http://domain.com/definite/sure/"); assertEquals(SpecialURIEnum.cool, QNameEnumUtil.fromURI("cool", SpecialURIEnum.class)); QNameEnumUtil.setDefaultBaseUri(null); try { QNameEnumUtil.fromURI("urn:definite#howdy", RetentionPolicy.class); fail(); } catch (IllegalArgumentException e) {} } }