blob: 2213ff09f34e485b2c69a777cd0e32c13a9b7e4b [file] [log] [blame]
// Copyright 2004 The Apache Software Foundation
//
// 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 org.apache.tapestry.junit;
import java.util.Locale;
import javax.servlet.ServletContext;
import org.apache.tapestry.IResourceLocation;
import org.apache.tapestry.IResourceResolver;
import org.apache.tapestry.junit.mock.MockContext;
import org.apache.tapestry.resource.ClasspathResourceLocation;
import org.apache.tapestry.resource.ContextResourceLocation;
import org.apache.tapestry.util.DefaultResourceResolver;
/**
* A few tests to fill in the code coverage for
* {@link org.apache.tapestry.IResourceLocation} and its implementations.
*
* @author Howard Lewis Ship
* @version $Id$
* @since 3.0
*
**/
public class TestResourceLocation extends TapestryTestCase
{
private ServletContext _context = new MockContext();
private IResourceResolver _resolver = new DefaultResourceResolver();
public void testContextEquals()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/images/back.png");
IResourceLocation l2 = new ContextResourceLocation(_context, "/images/back.png");
assertEquals("Object equality.", l1, l2);
assertEquals("Hash code", l1.hashCode(), l2.hashCode());
}
public void testContextRelativeSameResource()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz");
IResourceLocation l2 = l1.getRelativeLocation("Baz");
assertSame(l1, l2);
}
public void testContextRelativeSamePath()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz");
IResourceLocation l2 = l1.getRelativeLocation("/foo/bar/Baz");
assertSame(l1, l2);
}
public void testContextRelativeSameFolder()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz");
IResourceLocation expected = new ContextResourceLocation(_context, "/foo/bar/Fubar");
IResourceLocation actual = l1.getRelativeLocation("Fubar");
assertEquals(expected, actual);
}
public void testContextRelative()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz");
IResourceLocation expected = new ContextResourceLocation(_context, "/foo/bar/gloop/Yup");
IResourceLocation actual = l1.getRelativeLocation("gloop/Yup");
assertEquals(expected, actual);
}
public void testContextAbsolute()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz");
IResourceLocation expected = new ContextResourceLocation(_context, "/bip/bop/Boop");
IResourceLocation actual = l1.getRelativeLocation("/bip/bop/Boop");
assertEquals(expected, actual);
}
public void testContextLocalize()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/images/back.png");
IResourceLocation expected = new ContextResourceLocation(_context, "/images/back_fr.png");
IResourceLocation actual = l1.getLocalization(Locale.FRANCE);
assertEquals(expected, actual);
}
public void testContextLocalizeDefault()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/images/back.png");
IResourceLocation actual = l1.getLocalization(Locale.KOREAN);
assertSame(l1, actual);
}
public void testContextLocalizeNull()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/images/back.png");
IResourceLocation actual = l1.getLocalization(null);
assertSame(l1, actual);
}
public void testClasspathEquals()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
IResourceLocation l2 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
assertEquals("Object equality.", l1, l2);
assertEquals("Hash code", l1.hashCode(), l2.hashCode());
}
public void testClasspathRelativeSameResource()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz");
IResourceLocation l2 = l1.getRelativeLocation("Baz");
assertSame(l1, l2);
}
public void testClasspathRelativeSameFolder()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz");
IResourceLocation expected = new ClasspathResourceLocation(_resolver, "/foo/bar/Fubar");
IResourceLocation actual = l1.getRelativeLocation("Fubar");
assertEquals(expected, actual);
}
public void testClasspathRelative()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz");
IResourceLocation expected = new ClasspathResourceLocation(_resolver, "/foo/bar/gloop/Yup");
IResourceLocation actual = l1.getRelativeLocation("gloop/Yup");
assertEquals(expected, actual);
}
public void testClasspathAbsolute()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz");
IResourceLocation expected = new ClasspathResourceLocation(_resolver, "/bip/bop/Boop");
IResourceLocation actual = l1.getRelativeLocation("/bip/bop/Boop");
assertEquals(expected, actual);
}
public void testClasspathLocalize()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
IResourceLocation expected =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home_fr.png");
IResourceLocation actual = l1.getLocalization(Locale.FRANCE);
assertEquals(expected, actual);
}
public void testClasspathLocalizeMissing()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz.zap");
IResourceLocation l2 = l1.getLocalization(Locale.ENGLISH);
assertNull(l2);
}
public void testContextLocalizeMissing()
{
IResourceLocation l1 = new ContextResourceLocation(_context, "/foo/bar/Baz.zap");
IResourceLocation l2 = l1.getLocalization(Locale.ENGLISH);
assertNull(l2);
}
public void testClasspathLocalizeDefault()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
IResourceLocation actual = l1.getLocalization(Locale.KOREAN);
assertSame(l1, actual);
}
public void testClasspathLocalizeNull()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
IResourceLocation actual = l1.getLocalization(null);
assertSame(l1, actual);
}
public void testEqualsNull()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
assertTrue(!l1.equals(null));
}
public void testCompareDifferentTypes()
{
IResourceLocation l1 =
new ClasspathResourceLocation(
_resolver,
"/org/apache/tapestry/junit/mock/app/home.png");
IResourceLocation l2 =
new ContextResourceLocation(_context, "/org/apache/tapestry/junit/mock/app/home.png");
// Same paths, but different classes, should not be equal
assertTrue(!l1.equals(l2));
}
public void testClasspathRelativeSamePath()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/foo/bar/Baz");
IResourceLocation l2 = l1.getRelativeLocation("/foo/bar/Baz");
assertSame(l1, l2);
}
public void testTrailingSlash()
{
IResourceLocation l1 = new ClasspathResourceLocation(_resolver, "/");
IResourceLocation expected = new ClasspathResourceLocation(_resolver, "/foo");
IResourceLocation actual = l1.getRelativeLocation("foo");
assertEquals(expected, actual);
}
}