You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2007/08/15 23:20:36 UTC
svn commit: r566346 -
/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java
Author: dashorst
Date: Wed Aug 15 14:20:36 2007
New Revision: 566346
URL: http://svn.apache.org/viewvc?view=rev&rev=566346
Log:
Added unit test for propertymodel and null properties
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java (with props)
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java?view=auto&rev=566346
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java Wed Aug 15 14:20:36 2007
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ */
+package org.apache.wicket.model;
+
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.WicketTestCase;
+
+/**
+ * Test class for exercising the {@link PropertyModel}.
+ *
+ * @author dashorst
+ */
+public class PropertyModelTest extends WicketTestCase
+{
+ /**
+ * Interface for testing the property assignment with an <code>null</code>
+ * interface property.
+ */
+ public static interface IAddress
+ {
+ }
+
+ /**
+ * Abstract class for testing the property assignment with an
+ * <code>null</code> abstract class property.
+ */
+ public static abstract class AbstractAddress implements IAddress
+ {
+ /** street field for assignment in property expressions. */
+ public String street;
+ }
+
+ /**
+ * Concrete class for testing the property assignment with an
+ * <code>null</code> concrete class property.
+ */
+ public static class ConcreteAddress extends AbstractAddress
+ {
+ }
+
+ /**
+ * Person class for keeping the various different references for use in the
+ * test cases.
+ */
+ public static class Person
+ {
+ /** tests a <code>null</code> interface property. */
+ public IAddress interfaceAddress;
+ /** tests a <code>null</code> abstract class property. */
+ public AbstractAddress abstractAddress;
+ /** tests a <code>null</code> concrete class property. */
+ public ConcreteAddress concreteAddress;
+ /** tests a <code>null</code> final concrete class property. */
+ public final ConcreteAddress finalAddress = null;
+ }
+
+ /**
+ * Tests setting a value on a {@link PropertyModel} when a property is
+ * <code>null</code> and an interface type. This should end in an
+ * exception because Wicket can't decide what to instantiate on behalf of
+ * the program.
+ */
+ public void testSetWithNullPathInterface()
+ {
+ Person person = new Person();
+ PropertyModel model = new PropertyModel(person, "interfaceAddress.street");
+ try
+ {
+ model.setObject("foo");
+ fail("Expected exception");
+ }
+ catch (WicketRuntimeException wre)
+ {
+ // ok
+ }
+ }
+
+ /**
+ * Tests setting a value on a {@link PropertyModel} when a property is
+ * <code>null</code> and an abstract class type. This should end in an
+ * exception because Wicket can't decide what to instantiate on behalf of
+ * the program.
+ */
+ public void testSetWithNullPathAbstract()
+ {
+ Person person = new Person();
+ PropertyModel model = new PropertyModel(person, "abstractAddress.street");
+ try
+ {
+ model.setObject("foo");
+ fail("Expected exception");
+ }
+ catch (WicketRuntimeException wre)
+ {
+ // ok!
+ }
+ }
+
+ /**
+ * Tests setting a value on a {@link PropertyModel} when a property is
+ * <code>null</code> and a concrete type. This should work because Wicket
+ * can decide what to instantiate on behalf of the program: the concrete
+ * class.
+ */
+ public void testSetWithNullPathConcrete()
+ {
+ Person person = new Person();
+ PropertyModel model = new PropertyModel(person, "concreteAddress.street");
+ model.setObject("foo");
+ assertNotNull("concreteAddress", person.concreteAddress);
+ assertTrue(person.concreteAddress instanceof ConcreteAddress);
+ assertEquals("foo", person.concreteAddress.street);
+ }
+
+ /**
+ * Tests setting a value on a {@link PropertyModel} when a final (constant!)
+ * property is <code>null</code> and a concrete type. This should end in
+ * an exception because Wicket can't assign to the property, since it is
+ * final.
+ *
+ * This test has been disabled as it doesn't work on Mac OS X's 1.4 jdk
+ * (assignment doesn't fail).
+ */
+// public void testSetWithNullPathFinalJdk14()
+// {
+// Person person = new Person();
+// PropertyModel model = new PropertyModel(person, "finalAddress.street");
+//
+// try
+// {
+// model.setObject("foo");
+// fail("Expected exception");
+// }
+// catch (WicketRuntimeException wre)
+// {
+// // ok!
+// }
+// }
+ /**
+ * Tests setting a value on a null, final property using a
+ * {@link PropertyModel}. This test should pass when run using JDK 1.5 or
+ * newer.
+ *
+ * TODO/FIXME enable test when Wicket is JDK 1.5 based.
+ */
+// public void testSetWithNullPathFinalJdk15()
+// {
+// Person person = new Person();
+// PropertyModel model = new PropertyModel(person, "finalAddress.street");
+//
+// model.setObject("foo");
+// assertNotNull("finalAddress", person.finalAddress);
+// assertTrue(person.finalAddress instanceof ConcreteAddress);
+// assertEquals("foo", person.finalAddress.street);
+// }
+}
Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/model/PropertyModelTest.java
------------------------------------------------------------------------------
svn:eol-style = native