You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bd...@apache.org on 2005/09/23 14:12:52 UTC

svn commit: r291105 - in /myfaces: api/trunk/src/test/javax/faces/component/ build/trunk/ tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/ tomahawk/trunk/src/test/org/ tomahawk/trunk/src/test/org/apache/ tomahawk/trunk/src/test/org/...

Author: bdudney
Date: Fri Sep 23 05:12:47 2005
New Revision: 291105

URL: http://svn.apache.org/viewcvs?rev=291105&view=rev
Log:
several testing additions as well as cleaning up some imports

Added:
    myfaces/api/trunk/src/test/javax/faces/component/UIComponentBaseTest.java
    myfaces/api/trunk/src/test/javax/faces/component/UIComponentMock.java
    myfaces/api/trunk/src/test/javax/faces/component/_AttachedStateWrapperTest.java
    myfaces/build/trunk/cactus-log4j.properties
    myfaces/build/trunk/cactus-web.xml
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/Calendar.properties
    myfaces/tomahawk/trunk/src/test/org/
    myfaces/tomahawk/trunk/src/test/org/apache/
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRenderCactus.java
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRendererTest.java
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKit.java
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKitFactory.java
    myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/TestBean.java

Added: myfaces/api/trunk/src/test/javax/faces/component/UIComponentBaseTest.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/test/javax/faces/component/UIComponentBaseTest.java?rev=291105&view=auto
==============================================================================
--- myfaces/api/trunk/src/test/javax/faces/component/UIComponentBaseTest.java (added)
+++ myfaces/api/trunk/src/test/javax/faces/component/UIComponentBaseTest.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,370 @@
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+import junit.framework.TestCase;
+
+import org.easymock.MockControl;
+import org.easymock.classextension.MockClassControl;
+
+public class UIComponentBaseTest extends TestCase {
+  UIComponentBase mock = null;
+  public static void main(String[] args) {
+    junit.textui.TestRunner.run(UIComponentBaseTest.class);
+  }
+
+  public UIComponentBaseTest(String name) {
+    super(name);
+  }
+
+  protected void setUp() throws Exception {
+    super.setUp();
+    mock = new UIComponentMock();
+  }
+
+  protected void tearDown() throws Exception {
+    super.tearDown();
+    mock = null;
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.isRendered()'
+   */
+  public void testIsRendered() {
+    // defaults to true
+    assertTrue(mock.isRendered());
+  }
+
+  public void testIsRenderedValueSet() {
+    mock.setRendered(true);
+    assertTrue(mock.isRendered());
+    mock.setRendered(false);
+    assertFalse(mock.isRendered());
+  }
+
+  public void testIsRenderedBinding() {
+    MockControl bindingControl = MockClassControl.createControl(ValueBinding.class);
+    ValueBinding mockBinding = (ValueBinding)bindingControl.getMock();
+    mockBinding.getValue(null);
+    bindingControl.setReturnValue(Boolean.FALSE);
+    bindingControl.replay();
+    mock.setValueBinding("rendered", mockBinding);
+    assertFalse(mock.isRendered());
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getRendersChildren()'
+   */
+  public void testGetRendersChildren() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getChildCount()'
+   */
+  public void testGetChildCount() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.UIComponentBase()'
+   */
+  public void testUIComponentBase() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getAttributes()'
+   */
+  public void testGetAttributes() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getValueBinding(String)'
+   */
+  public void testGetValueBindingString() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.setValueBinding(String, ValueBinding)'
+   */
+  public void testSetValueBindingStringValueBinding() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getClientId(FacesContext)'
+   */
+  public void testGetClientIdFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getId()'
+   */
+  public void testGetId() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.setId(String)'
+   */
+  public void testSetIdString() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getParent()'
+   */
+  public void testGetParent() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.setParent(UIComponent)'
+   */
+  public void testSetParentUIComponent() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getChildren()'
+   */
+  public void testGetChildren() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.findComponent(String)'
+   */
+  public void testFindComponentString() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getFacets()'
+   */
+  public void testGetFacets() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getFacet(String)'
+   */
+  public void testGetFacetString() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getFacetsAndChildren()'
+   */
+  public void testGetFacetsAndChildren() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.broadcast(FacesEvent)'
+   */
+  public void testBroadcastFacesEvent() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.decode(FacesContext)'
+   */
+  public void testDecodeFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.encodeBegin(FacesContext)'
+   */
+  public void testEncodeBeginFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.encodeChildren(FacesContext)'
+   */
+  public void testEncodeChildrenFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.encodeEnd(FacesContext)'
+   */
+  public void testEncodeEndFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.addFacesListener(FacesListener)'
+   */
+  public void testAddFacesListenerFacesListener() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getFacesListeners(Class)'
+   */
+  public void testGetFacesListenersClass() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.removeFacesListener(FacesListener)'
+   */
+  public void testRemoveFacesListenerFacesListener() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.queueEvent(FacesEvent)'
+   */
+  public void testQueueEventFacesEvent() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.processDecodes(FacesContext)'
+   */
+  public void testProcessDecodesFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.processValidators(FacesContext)'
+   */
+  public void testProcessValidatorsFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.processUpdates(FacesContext)'
+   */
+  public void testProcessUpdatesFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.processSaveState(FacesContext)'
+   */
+  public void testProcessSaveStateFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.processRestoreState(FacesContext, Object)'
+   */
+  public void testProcessRestoreStateFacesContextObject() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getFacesContext()'
+   */
+  public void testGetFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getRenderer(FacesContext)'
+   */
+  public void testGetRendererFacesContext() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.getPathToComponent(UIComponent)'
+   */
+  public void testGetPathToComponent() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.isTransient()'
+   */
+  public void testIsTransient() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.setTransient(boolean)'
+   */
+  public void testSetTransient() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.saveAttachedState(FacesContext, Object)'
+   */
+  public void testSaveAttachedState() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.restoreAttachedState(FacesContext, Object)'
+   */
+  public void testRestoreAttachedState() {
+
+  }
+
+  public void testSaveState() throws Exception {
+    MockControl contextControl = MockClassControl.createControl(FacesContext.class);
+    FacesContext facesContext = (FacesContext)contextControl.getMock();
+    contextControl.replay();
+    try {
+      String id = "id";
+      String rendererType = "Whumpy";
+      mock.setId(id);
+      mock.setRendered(true);
+      mock.setRendererType(rendererType);
+      Object value[] = (Object[])mock.saveState(facesContext);
+      assertEquals(id, value[0]);
+      assertEquals(Boolean.TRUE, value[1]);
+      assertEquals(rendererType, value[2]);
+      // the object 'mock' here, must be the same before and after saveState
+      // calling getClientId in the saveState method would change the state
+      // so it must be null if getClientId has not been called
+      assertNull(value[3]);
+      assertNull(value[4]);
+      assertNull(value[5]);
+      assertNull(value[6]);
+    } catch (NullPointerException e) {
+      fail("Should not throw an exception");
+    }
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.restoreState(FacesContext, Object)'
+   */
+  public void testRestoreState() {
+
+  }
+
+  /*
+   * Test method for 'javax.faces.component.UIComponentBase.setRendererType(String)'
+   */
+  public void testSetRendererType() {
+    assertNull(mock.getRendererType());
+  }
+  public void testSetRendererTypeStringValue() {
+    String rendererType = "BlueBlorf";
+    mock.setRendererType(rendererType);
+    assertEquals(mock.getRendererType(), rendererType);
+  }
+  public void testSetRendererTypeStringBinding() {
+    MockControl bindingControl = MockClassControl.createControl(ValueBinding.class);
+    ValueBinding mockBinding = (ValueBinding)bindingControl.getMock();
+    mockBinding.getValue(null);
+    String whumpy = "Whumpy";
+    bindingControl.setReturnValue(whumpy);
+    bindingControl.replay();
+    mock.setValueBinding("rendererType", mockBinding);
+    assertEquals(mock.getRendererType(), whumpy);
+  }
+
+}

Added: myfaces/api/trunk/src/test/javax/faces/component/UIComponentMock.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/test/javax/faces/component/UIComponentMock.java?rev=291105&view=auto
==============================================================================
--- myfaces/api/trunk/src/test/javax/faces/component/UIComponentMock.java (added)
+++ myfaces/api/trunk/src/test/javax/faces/component/UIComponentMock.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,9 @@
+package javax.faces.component;
+
+public class UIComponentMock extends UIComponentBase {
+
+  public String getFamily() {
+    return "Mock Component Family";
+  }
+
+}

Added: myfaces/api/trunk/src/test/javax/faces/component/_AttachedStateWrapperTest.java
URL: http://svn.apache.org/viewcvs/myfaces/api/trunk/src/test/javax/faces/component/_AttachedStateWrapperTest.java?rev=291105&view=auto
==============================================================================
--- myfaces/api/trunk/src/test/javax/faces/component/_AttachedStateWrapperTest.java (added)
+++ myfaces/api/trunk/src/test/javax/faces/component/_AttachedStateWrapperTest.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,69 @@
+package javax.faces.component;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import junit.framework.TestCase;
+
+public class _AttachedStateWrapperTest extends TestCase {
+
+  public static void main(String[] args) {
+    junit.textui.TestRunner.run(_AttachedStateWrapperTest.class);
+  }
+
+  public _AttachedStateWrapperTest(String name) {
+    super(name);
+  }
+
+  protected void setUp() throws Exception {
+    super.setUp();
+  }
+
+  protected void tearDown() throws Exception {
+    super.tearDown();
+  }
+
+  /*
+   * Test method for 'javax.faces.component._AttachedStateWrapper._AttachedStateWrapper(Class, Object)'
+   */
+  public void test_AttachedStateWrapper() {
+    _AttachedStateWrapper subject = new _AttachedStateWrapper(null, null);
+    assertNull(subject.getWrappedStateObject());
+    assertNull(subject.getClazz());
+  }
+
+  /*
+   * Test method for 'javax.faces.component._AttachedStateWrapper.getClazz()'
+   */
+  public void testGetClazz() {
+    _AttachedStateWrapper subject = new _AttachedStateWrapper(String.class, "foo");
+    assertEquals(subject.getClazz(), String.class);
+  }
+
+  /*
+   * Test method for 'javax.faces.component._AttachedStateWrapper.getWrappedStateObject()'
+   */
+  public void testGetWrappedStateObject() {
+    _AttachedStateWrapper subject = new _AttachedStateWrapper(String.class, "foo");
+    assertEquals(subject.getClazz(), String.class);
+  }
+
+  public void testSerialize() throws Exception {
+    String foo = "foo";
+    _AttachedStateWrapper subject = new _AttachedStateWrapper(String.class, foo);
+    ByteArrayOutputStream baos = new ByteArrayOutputStream(128);
+    ObjectOutputStream oos = new ObjectOutputStream(baos);
+    oos.writeObject(subject);
+    oos.flush();
+    baos.flush();
+    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+    ObjectInputStream ois = new ObjectInputStream(bais);
+    _AttachedStateWrapper blorg = (_AttachedStateWrapper) ois
+        .readObject();
+    assertEquals(blorg.getWrappedStateObject(), subject.getWrappedStateObject());
+    oos.close();
+    ois.close();
+  }
+}

Added: myfaces/build/trunk/cactus-log4j.properties
URL: http://svn.apache.org/viewcvs/myfaces/build/trunk/cactus-log4j.properties?rev=291105&view=auto
==============================================================================
--- myfaces/build/trunk/cactus-log4j.properties (added)
+++ myfaces/build/trunk/cactus-log4j.properties Fri Sep 23 05:12:47 2005
@@ -0,0 +1,17 @@
+?# Properties for configuring Log4j for cactus tests
+# This is the configuring for logging on the server side - i.e. its copied to the .war file
+
+log4j.appender.cactus = org.apache.log4j.FileAppender
+log4j.appender.cactus.File = cactus-server.log
+log4j.appender.cactus.Append = false
+log4j.appender.cactus.layout = org.apache.log4j.PatternLayout
+log4j.appender.cactus.layout.ConversionPattern = %d{ABSOLUTE} [%t] %-5p %-30.30c{2} %x - %m %n
+
+# Any application log which uses Log4J will be logged to the Cactus log file
+log4j.rootCategory=DEBUG, cactus
+
+# By default we don't log at the DEBUG level for Cactus log, in order not to generate too
+# many logs. However, should a problem arise and logs need to be sent to the Cactus dev team,
+# then we will ask you to change this to DEBUG.
+log4j.category.org.apache.cactus = DEBUG, cactus
+log4j.additivity.org.apache.cactus=false

Added: myfaces/build/trunk/cactus-web.xml
URL: http://svn.apache.org/viewcvs/myfaces/build/trunk/cactus-web.xml?rev=291105&view=auto
==============================================================================
--- myfaces/build/trunk/cactus-web.xml (added)
+++ myfaces/build/trunk/cactus-web.xml Fri Sep 23 05:12:47 2005
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+           "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+  <listener>
+    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+  </listener>
+  <servlet>
+    <servlet-name>JspRedirector</servlet-name>
+    <jsp-file>/jspRedirector.jsp</jsp-file>
+    <run-as>
+      <role-name>resource</role-name>
+    </run-as>
+  </servlet>
+  <servlet>
+    <servlet-name>ServletRedirector</servlet-name>
+    <servlet-class>
+      org.apache.cactus.server.ServletTestRedirector
+    </servlet-class>
+    <run-as>
+      <role-name>resource</role-name>
+    </run-as>
+  </servlet>
+  <servlet>
+    <servlet-name>ServletTestRunner</servlet-name>
+    <servlet-class>
+      org.apache.cactus.server.runner.ServletTestRunner
+    </servlet-class>
+    <init-param>
+      <param-name>xsl-stylesheet</param-name>
+      <param-value>styles/cactus-report.xsl</param-value>
+    </init-param>
+    <run-as>
+      <role-name>resource</role-name>
+    </run-as>
+  </servlet>
+  <servlet>
+    <servlet-name>ServletRedirectorSecure</servlet-name>
+    <servlet-class>
+      org.apache.cactus.server.ServletTestRedirector
+    </servlet-class>
+    <run-as>
+      <role-name>resource</role-name>
+    </run-as>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ServletRedirector</servlet-name>
+    <url-pattern>/ServletRedirector</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>JspRedirector</servlet-name>
+    <url-pattern>/JspRedirector</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>ServletTestRunner</servlet-name>
+    <url-pattern>/ServletTestRunner</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>ServletRedirectorSecure</servlet-name>
+    <url-pattern>/ServletRedirectorSecure</url-pattern>
+  </servlet-mapping>
+</web-app>
\ No newline at end of file

Added: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/Calendar.properties
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/Calendar.properties?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/Calendar.properties (added)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/calendar/resource/Calendar.properties Fri Sep 23 05:12:47 2005
@@ -0,0 +1,2 @@
+org.apache.myfaces.custom.calendar.CHOOSE_MONTH = Choose a Month
+org.apache.myfaces.custom.calendar.CHOOSE_WEEKDAY = Choose a Weekday
\ No newline at end of file

Added: myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRenderCactus.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRenderCactus.java?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRenderCactus.java (added)
+++ myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRenderCactus.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,179 @@
+package org.apache.myfaces.custom.date;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+
+import org.apache.cactus.ServletTestCase;
+import org.apache.cactus.WebRequest;
+import org.apache.myfaces.custom.date.HtmlInputDate.UserData;
+
+public class HtmlDateRenderCactus extends ServletTestCase {
+  private FacesContext facesContext;
+  private UIViewRoot viewRoot;
+  
+  public void setUp() throws Exception {
+    FacesContextFactory facesContextFactory = (FacesContextFactory) FactoryFinder
+        .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+    LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder
+        .getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+    Lifecycle lifecycle = lifecycleFactory
+        .getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+    facesContext = facesContextFactory.getFacesContext(this.config
+        .getServletContext(), request, response, lifecycle);
+    assertNotNull(facesContext);
+    Application application = facesContext.getApplication();
+    ViewHandler viewHandler = application.getViewHandler();
+    String viewId = "/index.jsp";
+    viewRoot = viewHandler.createView(facesContext, viewId);
+    viewRoot.setViewId(viewId);
+    facesContext.setViewRoot(viewRoot);
+  }
+
+  public void beginDecodeDate(WebRequest request) {
+    request.addParameter("test.day", "14");
+    request.addParameter("test.month", "1");
+    request.addParameter("test.year", "2005");
+  }
+  
+  public void testDecodeDate() {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+  }
+  
+  public void beginDecodeWithSubmittedValue(WebRequest request) {
+    request.addParameter("test.day", "14");
+    request.addParameter("test.month", "1");
+    request.addParameter("test.year", "2005");
+  }
+  
+  public void testDecodeWithSubmittedValue() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    Date today = new Date();
+    inputDate.setSubmittedValue(new UserData(today, Locale.ENGLISH, null));
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+  }
+
+  public void beginDecodeTime(WebRequest request) {
+    request.addParameter("test.hours", "12");
+    request.addParameter("test.minutes", "15");
+    request.addParameter("test.seconds", "35");
+  }
+  public void testDecodeTime() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("time");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+    assertEquals("35", data.getSeconds());
+  }
+
+  public void beginDecodeFull(WebRequest request) {
+    request.addParameter("test.day", "14");
+    request.addParameter("test.month", "1");
+    request.addParameter("test.year", "2005");
+    request.addParameter("test.hours", "12");
+    request.addParameter("test.minutes", "15");
+    request.addParameter("test.seconds", "35");
+  }
+
+  public void testDecodeFull() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("full");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+    assertEquals("35", data.getSeconds());
+  }
+
+  public void beginDecodeFlorp(WebRequest request) {
+    request.addParameter("test.day", "14");
+    request.addParameter("test.month", "1");
+    request.addParameter("test.year", "2005");
+    request.addParameter("test.hours", "12");
+    request.addParameter("test.minutes", "15");
+  }
+
+  public void testDecodeFlorp() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    // is this correct? Should it parse correctly if the type is not valid?
+    inputDate.setType("florp");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+  }
+
+  public void beginDecodeDisabled(WebRequest request) {
+    request.addParameter("test.day", "14");
+    request.addParameter("test.month", "1");
+    request.addParameter("test.year", "2005");
+  }
+
+  public void testDecodeDisabled() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    inputDate.setDisabled(true);
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // decode - when disabled currently defaults to today
+    // JIRA Issue #233 requests that the default be null
+    // and the control handle data that is not required
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    Calendar cal = GregorianCalendar.getInstance();
+    assertEquals(cal.get(Calendar.DATE) + "", data.getDay());
+    // different bases - cal starts at 0 in January, UserData starts at 1 in
+    // January
+    assertEquals((cal.get(Calendar.MONTH) + 1) + "", data.getMonth());
+    assertEquals(cal.get(Calendar.YEAR) + "", data.getYear());
+  }
+
+  public void tearDown() {
+    facesContext = null;
+    viewRoot = null;
+  }
+}

Added: myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRendererTest.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRendererTest.java?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRendererTest.java (added)
+++ myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/HtmlDateRendererTest.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,236 @@
+package org.apache.myfaces.custom.date;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKitFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.myfaces.application.ApplicationFactoryImpl;
+import org.apache.myfaces.custom.date.HtmlInputDate.UserData;
+import org.easymock.MockControl;
+import org.easymock.classextension.MockClassControl;
+
+public class HtmlDateRendererTest extends TestCase {
+  public static void main(String[] args) {
+    junit.textui.TestRunner.run(HtmlDateRendererTest.class);
+  }
+
+  public HtmlDateRendererTest(String name) {
+    super(name);
+  }
+
+  protected void setUp() throws Exception {
+    super.setUp();
+    FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
+        MockHtmlDateRendererTestRenderKitFactory.class.getName());
+    FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
+        ApplicationFactoryImpl.class.getName());
+  }
+
+  protected void tearDown() throws Exception {
+    super.tearDown();
+  }
+
+  /*
+   * Test method for
+   * 'org.apache.myfaces.custom.date.HtmlDateRenderer.decode(FacesContext,
+   * UIComponent)'
+   */
+  public void testDecodeDate() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.day", "14");
+    map.put("test.month", "1");
+    map.put("test.year", "2005");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+  }
+
+  public void testDecodeWithSubmittedValue() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    Date today = new Date();
+    inputDate.setSubmittedValue(new UserData(today, Locale.ENGLISH, null));
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.day", "14");
+    map.put("test.month", "1");
+    map.put("test.year", "2005");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+  }
+
+  public void testDecodeTime() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("time");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.hours", "12");
+    map.put("test.minutes", "15");
+    map.put("test.seconds", "35");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+    assertEquals("35", data.getSeconds());
+  }
+
+  public void testDecodeFull() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("full");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.day", "14");
+    map.put("test.month", "1");
+    map.put("test.year", "2005");
+    map.put("test.hours", "12");
+    map.put("test.minutes", "15");
+    map.put("test.seconds", "3");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+    assertEquals("03", data.getSeconds());
+  }
+
+  public void testDecodeFlorp() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    // is this correct? Should it parse correctly if the type is not valid?
+    inputDate.setType("florp");
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.day", "14");
+    map.put("test.month", "1");
+    map.put("test.year", "2005");
+    map.put("test.hours", "12");
+    map.put("test.minutes", "15");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    assertEquals("14", data.getDay());
+    assertEquals("1", data.getMonth());
+    assertEquals("2005", data.getYear());
+    assertEquals("12", data.getHours());
+    assertEquals("15", data.getMinutes());
+  }
+
+  public void testDecodeDisabled() throws Exception {
+    HtmlInputDate inputDate = new HtmlInputDate();
+    inputDate.setId("test");
+    inputDate.setType("date");
+    inputDate.setDisabled(true);
+    HtmlDateRenderer subject = new HtmlDateRenderer();
+    // setup the request map
+    Map map = new HashMap();
+    map.put("test.day", "14");
+    map.put("test.month", "1");
+    map.put("test.year", "2005");
+    FacesContext facesContext = mockupForDecodeCall(map);
+    // decode - when disabled currently defaults to today
+    // JIRA Issue #233 requests that the default be null
+    // and the control handle data that is not required
+    subject.decode(facesContext, inputDate);
+    UserData data = inputDate.getUserData(Locale.ENGLISH);
+    Calendar cal = GregorianCalendar.getInstance();
+    assertEquals(cal.get(Calendar.DATE) + "", data.getDay());
+    // different bases - cal starts at 0 in January, UserData starts at 1 in
+    // January
+    assertEquals((cal.get(Calendar.MONTH) + 1) + "", data.getMonth());
+    assertEquals(cal.get(Calendar.YEAR) + "", data.getYear());
+  }
+
+  /*
+   * Test method for
+   * 'org.apache.myfaces.custom.date.HtmlDateRenderer.encodeEnd(FacesContext,
+   * UIComponent)'
+   */
+  public void testEncodeEnd() throws Exception {
+    
+  }
+
+  /*
+   * Test method for
+   * 'org.apache.myfaces.custom.date.HtmlDateRenderer.getConvertedValue(FacesContext,
+   * UIComponent, Object)'
+   */
+  public void testGetConvertedValue() throws Exception {
+  }
+
+  private FacesContext mockupForDecodeCall(Map requestParameterMap) {
+    // mock FacesContext
+    MockControl contextControl = MockClassControl
+        .createControl(FacesContext.class);
+    FacesContext facesContext = (FacesContext) contextControl.getMock();
+    // mock UIViewRoot
+    MockControl viewControl = MockClassControl.createControl(UIViewRoot.class);
+    UIViewRoot viewRoot = (UIViewRoot) viewControl.getMock();
+    // mock ExternalContext
+    MockControl externalContextControl = MockClassControl
+        .createControl(ExternalContext.class);
+    ExternalContext externalContext = (ExternalContext) externalContextControl
+        .getMock();
+    // set the view root
+    facesContext.getViewRoot();
+    contextControl.setReturnValue(viewRoot);
+    // called twice
+    facesContext.getViewRoot();
+    contextControl.setReturnValue(viewRoot);
+    // set the external context
+    facesContext.getExternalContext();
+    contextControl.setReturnValue(externalContext);
+    // set the locale
+    viewRoot.getLocale();
+    viewControl.setReturnValue(Locale.ENGLISH);
+    // set the render kit id
+    viewRoot.getRenderKitId();
+    viewControl.setReturnValue(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    externalContext.getRequestParameterMap();
+    externalContextControl.setReturnValue(requestParameterMap);
+    // prepare
+    contextControl.replay();
+    viewControl.replay();
+    externalContextControl.replay();
+    return facesContext;
+  }
+
+}

Added: myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKit.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKit.java?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKit.java (added)
+++ myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKit.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,52 @@
+package org.apache.myfaces.custom.date;
+
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+public class MockHtmlDateRendererTestRenderKit extends RenderKit {
+  private Map renderers = new HashMap();
+  
+  public MockHtmlDateRendererTestRenderKit() {
+    addRenderer("javax.faces.Input", "org.apache.myfaces.Date", new HtmlDateRenderer());
+  }
+  
+  public void addRenderer(String family, String rendererType, Renderer renderer) {
+    Map sub = (Map)renderers.get(family);
+    if(null == sub) {
+      sub = new HashMap();
+      renderers.put(family, sub);
+    }
+    sub.put(rendererType, renderer);
+  }
+
+  public Renderer getRenderer(String family, String rendererType) {
+    Renderer renderer = null;
+    Map sub = (Map)renderers.get(family);
+    if(null != sub) {
+      renderer = (Renderer)sub.get(rendererType);
+    }
+    return renderer;
+  }
+
+  public ResponseStateManager getResponseStateManager() {
+    return null;
+  }
+
+  public ResponseWriter createResponseWriter(Writer writer,
+      String contentTypeList, String characterEncoding) {
+    return null;
+  }
+
+  public ResponseStream createResponseStream(OutputStream out) {
+    return null;
+  }
+
+}

Added: myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKitFactory.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKitFactory.java?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKitFactory.java (added)
+++ myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/MockHtmlDateRendererTestRenderKitFactory.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,34 @@
+package org.apache.myfaces.custom.date;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+public class MockHtmlDateRendererTestRenderKitFactory extends RenderKitFactory {
+  private Map renderKits = new HashMap();
+
+  public MockHtmlDateRendererTestRenderKitFactory() {
+    addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT, new MockHtmlDateRendererTestRenderKit());
+  }
+  
+  public void addRenderKit(String renderKitId, RenderKit renderKit) {
+    renderKits.put(renderKitId, renderKit);
+  }
+
+  public RenderKit getRenderKit(FacesContext context, String renderKitId) {
+    return (RenderKit)renderKits.get(renderKitId);
+  }
+
+  public Iterator getRenderKitIds() {
+    List ids = new ArrayList();
+    ids.add(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    return ids.iterator();
+  }
+
+}

Added: myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/TestBean.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/TestBean.java?rev=291105&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/TestBean.java (added)
+++ myfaces/tomahawk/trunk/src/test/org/apache/myfaces/custom/date/TestBean.java Fri Sep 23 05:12:47 2005
@@ -0,0 +1,20 @@
+package org.apache.myfaces.custom.date;
+
+import java.util.Date;
+
+public class TestBean {
+  private Date date;
+
+  public TestBean() {
+    super();
+  }
+
+  public Date getDate() {
+    return date;
+  }
+
+  public void setDate(Date date) {
+    this.date = date;
+  }
+
+}