Package org.apache.abdera.i18n.test.iri

Source Code of org.apache.abdera.i18n.test.iri.TestIRI

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  The ASF licenses this file to You
* 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.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.abdera.i18n.test.iri;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;

import java.net.URI;
import java.net.URISyntaxException;

import org.apache.abdera.i18n.iri.IRI;
import org.apache.abdera.i18n.text.Normalizer;
import org.junit.Test;

public class TestIRI extends TestBase {

    @Test
    public void testSimple() throws Exception {
        IRI iri = new IRI("http://validator.w3.org/check?uri=http%3A%2F%2Fr\u00E9sum\u00E9.example.org");
        assertEquals("http://validator.w3.org/check?uri=http%3A%2F%2Fr\u00E9sum\u00E9.example.org", iri.toString());
        assertEquals("http://validator.w3.org/check?uri=http%3A%2F%2Fr%C3%A9sum%C3%A9.example.org", iri.toURI()
            .toString());
    }
   
    @Test
    public void testIpv4() throws URISyntaxException{
        IRI iri = new IRI("http://127.0.0.1");
        assertEquals("http://127.0.0.1", iri.toURI().toString());
    }
   
    @Test
    public void testIpv6() throws URISyntaxException{
        IRI iri = new IRI("http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]");
        assertEquals("http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]", iri.toURI().toString());
    }
   
    @Test
    public void testUnderscore() throws URISyntaxException{
      IRI iri = new IRI("http://its_gbsc.cn.ibm.com/");
      assertEquals("http://its_gbsc.cn.ibm.com/", iri.toURI().toString());
    }
   
    @Test(expected=URISyntaxException.class)
    public void testIpv6Invalid() throws URISyntaxException{
        IRI iri = new IRI("http://[2001:0db8:85a3:08d3:1319:8a2e:0370:734o]");
        iri.toURI().toString();
    }

    @Test
    public void testFile() throws Exception {
        IRI iri = new IRI("file:///tmp/test/foo");
        assertEquals("file:///tmp/test/foo", iri.toURI().toString());
    }

    @Test
    public void testSimple2() throws Exception {
        IRI iri = new IRI("http://www.example.org/red%09ros\u00E9#red");
        assertEquals("http://www.example.org/red%09ros%C3%A9#red", iri.toURI().toString());
    }

    @Test
    public void testNotSoSimple() throws Exception {
        IRI iri = new IRI("http://example.com/\uD800\uDF00\uD800\uDF01\uD800\uDF02");
        assertEquals("http://example.com/%F0%90%8C%80%F0%90%8C%81%F0%90%8C%82", iri.toURI().toString());
    }

    @Test
    public void testIRItoURI() throws Exception {
        IRI iri = new IRI("http://\u7D0D\u8C46.example.org/%E2%80%AE");
        URI uri = iri.toURI();
        assertEquals("http://xn--99zt52a.example.org/%E2%80%AE", uri.toString());
    }

    @Test
    public void testComparison() throws Exception {
        IRI iri1 = new IRI("http://www.example.org/");
        IRI iri2 = new IRI("http://www.example.org/..");
        IRI iri3 = new IRI("http://www.Example.org:80");

        assertFalse(iri1.equals(iri2)); // false
        assertFalse(iri1.equals(iri3)); // false
        assertFalse(iri2.equals(iri1)); // false
        assertFalse(iri2.equals(iri3)); // false
        assertFalse(iri3.equals(iri1)); // false
        assertFalse(iri3.equals(iri2)); // false

        assertTrue(iri1.normalize().equals(iri2.normalize()));
        assertTrue(iri1.normalize().equals(iri3.normalize()));
        assertTrue(iri2.normalize().equals(iri1.normalize()));
        assertTrue(iri2.normalize().equals(iri3.normalize()));
        assertTrue(iri3.normalize().equals(iri1.normalize()));
        assertTrue(iri3.normalize().equals(iri2.normalize()));

    }

    @Test
    public void testUCN() throws Exception {
        IRI iri1 = new IRI("http://www.example.org/r\u00E9sum\u00E9.html");
        IRI iri2 = new IRI("http://www.example.org/re\u0301sume\u0301.html", Normalizer.Form.C);
        assertEquals(iri2, iri1);
    }

    @Test
    public void testPercent() throws Exception {
        IRI iri1 = new IRI("http://example.org/%7e%2Fuser?%2f");
        IRI iri2 = new IRI("http://example.org/%7E%2fuser?/");
        assertTrue(iri1.normalize().equals(iri2.normalize()));
    }

    @Test
    public void testIDN() throws Exception {
        IRI iri1 = new IRI("http://r\u00E9sum\u00E9.example.org");
        assertEquals("xn--rsum-bpad.example.org", iri1.getASCIIHost());
    }

    @Test
    public void testRelative() throws Exception {
        IRI base = new IRI("http://example.org/foo/");

        assertEquals("http://example.org/", base.resolve("/").toString());
        assertEquals("http://example.org/test", base.resolve("/test").toString());
        assertEquals("http://example.org/foo/test", base.resolve("test").toString());
        assertEquals("http://example.org/test", base.resolve("../test").toString());
        assertEquals("http://example.org/foo/test", base.resolve("./test").toString());
        assertEquals("http://example.org/foo/", base.resolve("test/test/../../").toString());
        assertEquals("http://example.org/foo/?test", base.resolve("?test").toString());
        assertEquals("http://example.org/foo/#test", base.resolve("#test").toString());
        assertEquals("http://example.org/foo/", base.resolve(".").toString());
    }

    /**
     * Try a variety of URI schemes. If any problematic schemes pop up, we should add a test for 'em here
     */
    @Test
    public void testSchemes() throws Exception {

        IRI iri = new IRI("http://a:b@c.org:80/d/e?f#g");
        assertEquals("http", iri.getScheme());
        assertEquals("a:b", iri.getUserInfo());
        assertEquals("c.org", iri.getHost());
        assertEquals(80, iri.getPort());
        assertEquals("/d/e", iri.getPath());
        assertEquals("f", iri.getQuery());
        assertEquals("g", iri.getFragment());

        iri = new IRI("https://a:b@c.org:80/d/e?f#g");
        assertEquals("https", iri.getScheme());
        assertEquals("a:b", iri.getUserInfo());
        assertEquals("c.org", iri.getHost());
        assertEquals(80, iri.getPort());
        assertEquals("/d/e", iri.getPath());
        assertEquals("f", iri.getQuery());
        assertEquals("g", iri.getFragment());

        iri = new IRI("ftp://a:b@c.org:80/d/e?f#g");
        assertEquals("ftp", iri.getScheme());
        assertEquals("a:b", iri.getUserInfo());
        assertEquals("c.org", iri.getHost());
        assertEquals(80, iri.getPort());
        assertEquals("/d/e", iri.getPath());
        assertEquals("f", iri.getQuery());
        assertEquals("g", iri.getFragment());

        iri = new IRI("mailto:joe@example.org?subject=foo");
        assertEquals("mailto", iri.getScheme());
        assertEquals(null, iri.getUserInfo());
        assertEquals(null, iri.getHost());
        assertEquals(-1, iri.getPort());
        assertEquals("joe@example.org", iri.getPath());
        assertEquals("subject=foo", iri.getQuery());
        assertEquals(null, iri.getFragment());

        iri = new IRI("tag:example.org,2006:foo");
        assertEquals("tag", iri.getScheme());
        assertEquals(null, iri.getUserInfo());
        assertEquals(null, iri.getHost());
        assertEquals(-1, iri.getPort());
        assertEquals("example.org,2006:foo", iri.getPath());
        assertEquals(null, iri.getQuery());
        assertEquals(null, iri.getFragment());

        iri = new IRI("urn:lsid:ibm.com:example:82437234964354895798234d");
        assertEquals("urn", iri.getScheme());
        assertEquals(null, iri.getUserInfo());
        assertEquals(null, iri.getHost());
        assertEquals(-1, iri.getPort());
        assertEquals("lsid:ibm.com:example:82437234964354895798234d", iri.getPath());
        assertEquals(null, iri.getQuery());
        assertEquals(null, iri.getFragment());

        iri = new IRI("data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP");
        assertEquals("data", iri.getScheme());
        assertEquals(null, iri.getUserInfo());
        assertEquals(null, iri.getHost());
        assertEquals(-1, iri.getPort());
        assertEquals("image/gif;base64,R0lGODdhMAAwAPAAAAAAAP", iri.getPath());
        assertEquals(null, iri.getQuery());
        assertEquals(null, iri.getFragment());

    }
}
TOP

Related Classes of org.apache.abdera.i18n.test.iri.TestIRI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.