blob: 1ab8b1fc052b9c9ee2ec10348c5a73ce9cbfe73e [file] [log] [blame]
// Copyright 2005 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.annotations;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.tapestry.enhance.EnhancementOperation;
import org.apache.tapestry.spec.ComponentSpecification;
import org.apache.tapestry.spec.IComponentSpecification;
import org.testng.annotations.Test;
/**
* Tests for {@link org.apache.tapestry.annotations.ComponentClassAnnotationWorker}.
*
* @author Howard Lewis Ship
* @since 4.0
*/
@Test
public class TestComponentClassAnnotationWorker extends BaseAnnotationTestCase
{
private IComponentSpecification attempt(Class baseClass, Location location)
{
EnhancementOperation op = newOp();
IComponentSpecification spec = new ComponentSpecification();
replay();
new ComponentClassAnnotationWorker().performEnhancement(op, spec, baseClass, location);
verify();
return spec;
}
public void testBasic()
{
Location l = newLocation();
IComponentSpecification spec = attempt(BasicComponent.class, l);
assertEquals(true, spec.getAllowBody());
assertEquals(true, spec.getAllowInformalParameters());
assertEquals(false, spec.isReservedParameterName("foo"));
assertEquals(false, spec.isReservedParameterName("bar"));
assertEquals(false, spec.isDeprecated());
assertSame(l, spec.getLocation());
}
public void testSubclass()
{
Location l = newLocation();
IComponentSpecification spec = attempt(BasicComponentSubclass.class, l);
assertEquals(true, spec.getAllowBody());
assertEquals(true, spec.getAllowInformalParameters());
assertEquals(false, spec.isReservedParameterName("foo"));
assertEquals(false, spec.isReservedParameterName("bar"));
assertEquals(false, spec.isDeprecated());
assertSame(l, spec.getLocation());
}
public void testFormalOnly()
{
IComponentSpecification spec = attempt(FormalOnlyComponent.class, null);
assertEquals(false, spec.getAllowBody());
assertEquals(false, spec.getAllowInformalParameters());
assertEquals(false, spec.isDeprecated());
}
public void testDeprecated()
{
IComponentSpecification spec = attempt(DeprecatedComponent.class, null);
assertEquals(true, spec.isDeprecated());
}
public void testReservedParameters()
{
IComponentSpecification spec = attempt(ReservedParametersComponent.class, null);
assertEquals(true, spec.isReservedParameterName("foo"));
assertEquals(true, spec.isReservedParameterName("bar"));
}
public void testComponentClassNotAllowed()
{
EnhancementOperation op = newOp();
IComponentSpecification spec = new ComponentSpecification();
replay();
try
{
new ComponentClassAnnotationWorker().performEnhancement(
op, spec, PageAnnotatedAsComponent.class, null);
unreachable();
}
catch (ApplicationRuntimeException ex)
{
}
verify();
}
}