/* * Weblounge: Web Content Management System * Copyright (c) 2003 - 2011 The Weblounge Team * http://entwinemedia.com/weblounge * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package ch.entwine.weblounge.common.impl.url; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import ch.entwine.weblounge.common.url.Path; import ch.entwine.weblounge.common.url.PathUtils; import ch.entwine.weblounge.common.url.UrlUtils; import org.junit.Before; import org.junit.Test; import java.io.File; /** * Test case for the general url implementation. */ public class UrlImplTest { /** The sample url instance */ protected UrlImpl defaultUrl = null; /** The sample path instance */ protected UrlImpl defaultPath = null; /** Sample url path */ protected String defaultUrlPath = "/test"; /** Sample url path */ protected String defaultParentUrlPath = "/"; /** Sample file path */ protected String defaultFilePath = File.separator + "test"; /** Sample file path */ protected String defaultParentFilePath = File.separator; /** The url path separator */ protected static final char urlPathSeparator = '/'; /** The windows file path separator */ protected static final char filePathSeparator = File.separatorChar; /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { defaultUrl = new UrlImpl(defaultUrlPath, urlPathSeparator); defaultPath = new UrlImpl(defaultFilePath, filePathSeparator); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#UrlImpl(java.lang.String, char)}. */ @Test public void testUrlImplUrlString() { Path u = new UrlImpl(defaultUrl, "a/b"); String extendedPath = UrlUtils.concat(defaultUrlPath, "a/b/"); assertEquals(u.getPath(), extendedPath); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#getPathSeparator()}. */ @Test public void testGetSeparator() { assertEquals(defaultUrl.getPathSeparator(), '/'); assertEquals(defaultPath.getPathSeparator(), File.separatorChar); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#getPath()}. */ @Test public void testGetPath() { assertEquals(UrlUtils.trim(defaultUrlPath), defaultUrl.getPath()); assertEquals(PathUtils.trim(defaultFilePath), defaultPath.getPath()); assertEquals("/", new UrlImpl("/").getPath()); assertEquals("/", new UrlImpl("//").getPath()); assertFalse("/".equals(new UrlImpl("/test").getPath())); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#equals(java.lang.Object)}. */ @Test public void testEqualsObject() { assertTrue(defaultUrl.equals(new UrlImpl(defaultUrlPath))); assertTrue(defaultUrl.equals(new UrlImpl("/test/"))); assertFalse(defaultUrl.equals(new UrlImpl("/test/a"))); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#startsWith(java.lang.String)}. */ @Test public void testStartsWith() { Path u = new UrlImpl("/ab/c/d"); assertTrue(u.startsWith("/ab")); assertFalse(u.startsWith("ab")); assertFalse(u.startsWith("abc")); assertFalse(u.startsWith("/abc")); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#endsWith(java.lang.String)}. */ @Test public void testEndsWith() { Path u = new UrlImpl("/ab/c/d"); assertTrue(u.endsWith("d")); assertTrue(u.endsWith("/d")); assertTrue(u.endsWith("/d/")); assertFalse(u.endsWith("cd")); assertFalse(u.endsWith("c/d/f")); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#isPrefixOf(ch.entwine.weblounge.common.url.Path)}. */ @Test public void testIsPrefixOf() { Path u1 = new UrlImpl(defaultUrl, "/abc"); Path u2 = new UrlImpl("/abc"); assertTrue(defaultUrl.isPrefixOf(u1)); assertTrue(defaultUrl.isPrefixOf(defaultUrl)); assertFalse(defaultUrl.isPrefixOf(u2)); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#isExtensionOf(ch.entwine.weblounge.common.url.Path)}. */ @Test public void testIsExtensionOf() { Path u1 = new UrlImpl(defaultUrl, "/abc"); Path u2 = new UrlImpl("/abc"); assertTrue(u1.isExtensionOf(defaultUrl)); assertTrue(defaultUrl.isExtensionOf(defaultUrl)); assertFalse(u1.isExtensionOf(u2)); assertFalse(u2.isExtensionOf(u1)); } /** * Test method for {@link ch.entwine.weblounge.common.impl.url.UrlImpl#trim(java.lang.String)}. */ @Test public void testTrim() { assertEquals("/test/", new UrlImpl("/test").getPath()); assertEquals("/test/", new UrlImpl("/test/").getPath()); } }