Author: musachy
Date: Fri Dec 12 19:39:15 2008
New Revision: 726166

URL: http://svn.apache.org/viewvc?rev=726166&view=rev
Log:
Reorgannize testcases. Start improving select tag.

Added:
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTestCase.java
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SelectTest.java
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java
   (contents, props changed)
      - copied, changed from r683696, 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SimpleThemeTest.java
Removed:
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SimpleThemeTest.java
Modified:
    struts/sandbox/trunk/struts2-javatemplates-plugin/pom.xml
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/Attributes.java
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java
    
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/TextFieldHandler.java

Modified: struts/sandbox/trunk/struts2-javatemplates-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/pom.xml?rev=726166&r1=726165&r2=726166&view=diff
==============================================================================
--- struts/sandbox/trunk/struts2-javatemplates-plugin/pom.xml (original)
+++ struts/sandbox/trunk/struts2-javatemplates-plugin/pom.xml Fri Dec 12 
19:39:15 2008
@@ -5,17 +5,17 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.0.2-SNAPSHOT</version>
+        <version>2.1.3-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-javatemplates-plugin</artifactId>
     <packaging>jar</packaging>
     <name>Struts 2 Java Templates Plugin</name>
-    
+
     <scm>
-       
<connection>scm:svn:http://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-javatemplates-plugin/</connection>
-       
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-javatemplates-plugin/</developerConnection>
-       
<url>http://svn.apache.org/viewcvs.cgi/struts/sandbox/trunk/struts2-javatemplates-plugin/</url>
+        
<connection>scm:svn:http://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-javatemplates-plugin/</connection>
+        
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-javatemplates-plugin/</developerConnection>
+        
<url>http://svn.apache.org/viewcvs.cgi/struts/sandbox/trunk/struts2-javatemplates-plugin/</url>
     </scm>
 
     <dependencies>
@@ -37,5 +37,23 @@
             <scope>test</scope>
             <version>2.2</version>
         </dependency>
-   </dependencies>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <inherited>true</inherited>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

Modified: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/Attributes.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/Attributes.java?rev=726166&r1=726165&r2=726166&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/Attributes.java
 (original)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/Attributes.java
 Fri Dec 12 19:39:15 2008
@@ -44,7 +44,8 @@
     public Attributes addIfExists(String attrName, Object paramValue, boolean 
encode) {
         if (paramValue != null) {
             String val = paramValue.toString();
-            put(attrName, (encode ? TextUtils.htmlEncode(val) : val));
+            if (val.trim().length() > 0)
+                put(attrName, (encode ? TextUtils.htmlEncode(val) : val));
         }
         return this;
     }

Modified: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java?rev=726166&r1=726165&r2=726166&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java
 (original)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/AbstractTagHandler.java
 Fri Dec 12 19:39:15 2008
@@ -21,15 +21,23 @@
 package org.apache.struts2.views.java.simple;
 
 import java.io.IOException;
+import java.util.Map;
 
 import org.apache.struts2.components.template.TemplateRenderingContext;
 import org.apache.struts2.views.java.TagHandler;
 import org.apache.struts2.views.java.Attributes;
+import org.apache.struts2.views.util.ContextUtil;
+import org.apache.struts2.StrutsConstants;
+import com.opensymphony.xwork2.util.TextParseUtil;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.ActionContext;
 
 public class AbstractTagHandler implements TagHandler {
-    
+
     protected TagHandler nextTagHandler;
     protected TemplateRenderingContext context;
+    protected boolean altSyntax;
 
     public void characters(String text) throws IOException {
         if (nextTagHandler != null) {
@@ -58,6 +66,47 @@
 
     public void setup(TemplateRenderingContext context) {
         this.context = context;
+        this.altSyntax = 
ContextUtil.isUseAltSyntax(context.getStack().getContext());
+        processParams();
+    }
+
+    protected void processParams() {
+    }
+
+    protected String findString(String expr) {
+        return (String) findValue(expr, String.class);
     }
 
+    protected Object findValue(String expr) {
+        if (expr == null) {
+            return null;
+        }
+
+        ValueStack stack = context.getStack();
+        if (altSyntax) {
+            // does the expression start with %{ and end with }? if so, just 
cut it off!
+            if (expr.startsWith("%{") && expr.endsWith("}")) {
+                expr = expr.substring(2, expr.length() - 1);
+            }
+        }
+
+        return stack.findValue(expr);
+    }
+
+    private Object findValue(String expr, Class toType) {
+        ValueStack stack = context.getStack();
+
+        if (altSyntax && toType == String.class) {
+            return TextParseUtil.translateVariables('%', expr, stack);
+        } else {
+            if (altSyntax) {
+                // does the expression start with %{ and end with }? if so, 
just cut it off!
+                if (expr.startsWith("%{") && expr.endsWith("}")) {
+                    expr = expr.substring(2, expr.length() - 1);
+                }
+            }
+
+            return stack.findValue(expr, toType);
+        }
+    }
 }

Modified: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java?rev=726166&r1=726165&r2=726166&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java
 (original)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java
 Fri Dec 12 19:39:15 2008
@@ -22,19 +22,32 @@
 
 import org.apache.struts2.views.java.TagGenerator;
 import org.apache.struts2.views.java.Attributes;
+import org.apache.struts2.views.util.TextUtil;
+import org.apache.struts2.components.template.TemplateRenderingContext;
+import org.apache.struts2.util.ContainUtil;
 
 import java.io.IOException;
+import java.io.Writer;
 import java.util.Map;
 
 public class SelectHandler extends AbstractTagHandler implements TagGenerator {
+    private Writer writer;
+
+    @Override
+    public void setup(TemplateRenderingContext context) {
+        super.setup(context);
+        this.writer = context.getWriter();
+    }
 
     public void generate() throws IOException {
         Map<String,Object> params = context.getParameters();
         Attributes a = new Attributes();
 
+        Object value = params.get("nameValue");
+
         a.addDefaultToEmpty("name", params.get("name"))
          .addIfExists("size", params.get("size"))
-         .addIfExists("value", params.get("nameValue"), false)
+         .addIfExists("value", value, false)
          .addIfTrue("disabled", params.get("disabled"))
          .addIfTrue("readonly", params.get("readonly"))
          .addIfTrue("multiple", params.get("multiple"))
@@ -44,6 +57,28 @@
          .addIfExists("style", params.get("cssStyle"))
          .addIfExists("title", params.get("title"));
         super.start("select", a);
+
+        //options
+
+        //header
+        String headerKey = (String) params.get("headerKey");
+        String headerValue = (String) params.get("headerValue");
+        if (headerKey != null && headerValue != null) {
+            boolean selected = ContainUtil.contains(value, 
params.get("headerKey"));
+            writeOption(headerKey, headerValue, selected);
+        }
+
         super.end("select");
     }
+
+    private void writeOption(String value, String text, boolean selected) 
throws IOException {
+        writer.write("<option value=\"");
+        writer.write(TextUtil.escapeHTML(value));
+        writer.write("\"");
+        if (selected)
+            writer.write(" selected=\"selected\" ");
+        writer.write(">");        
+        writer.write(TextUtil.escapeHTML(text));
+        writer.write("</option>");
+    }
 }

Modified: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/TextFieldHandler.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/TextFieldHandler.java?rev=726166&r1=726165&r2=726166&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/TextFieldHandler.java
 (original)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/TextFieldHandler.java
 Fri Dec 12 19:39:15 2008
@@ -41,7 +41,7 @@
          .addIfExists("value", params.get("nameValue"), false)
          .addIfTrue("disabled", params.get("disabled"))
          .addIfTrue("readonly", params.get("readonly"))
-         .addIfExists("tabindex", params.get("tagindex"))
+         .addIfExists("tabindex", params.get("tabindex"))
          .addIfExists("id", params.get("id"))
          .addIfExists("class", params.get("cssClass"))
          .addIfExists("style", params.get("cssStyle"))

Added: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTestCase.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTestCase.java?rev=726166&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTestCase.java
 (added)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/AbstractTestCase.java
 Fri Dec 12 19:39:15 2008
@@ -0,0 +1,151 @@
+package org.apache.struts2.views.java.simple;
+
+import junit.framework.TestCase;
+import org.apache.struts2.components.Component;
+import org.apache.struts2.components.UIBean;
+import org.apache.struts2.components.template.Template;
+import org.apache.struts2.components.template.TemplateRenderingContext;
+import org.apache.struts2.StrutsConstants;
+import org.easymock.EasyMock;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Stack;
+import java.io.StringWriter;
+
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
+import com.opensymphony.xwork2.inject.Container;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public abstract class AbstractTestCase extends TestCase {
+    private Map<String, String> scriptingAttrs = new HashMap<String, String>();
+    private Map<String, String> commonAttrs = new HashMap<String, String>();
+
+    protected SimpleTheme theme;
+
+    protected StringWriter writer;
+    protected Map map;
+
+    protected Template template;
+    protected Map stackContext;
+    protected ValueStack stack;
+    protected TemplateRenderingContext context;
+    protected HttpServletRequest request;
+    protected HttpServletResponse response;
+
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();    //To change body of overridden methods use File | 
Settings | File Templates.
+        scriptingAttrs.put("onclick", "onclick_");
+        scriptingAttrs.put("ondblclick", "ondblclick_");
+        scriptingAttrs.put("onmousedown", "onmousedown_");
+        scriptingAttrs.put("onmouseup", "onmouseup_");
+        scriptingAttrs.put("onmouseover", "onmouseover_");
+        scriptingAttrs.put("onmousemove", "onmousemove_");
+        scriptingAttrs.put("onmouseout", "onmouseout_");
+        scriptingAttrs.put("onfocus", "onfocus_");
+        scriptingAttrs.put("onblur", "onblur_");
+        scriptingAttrs.put("onkeypress", "onkeypress_");
+        scriptingAttrs.put("onkeydown", "onkeydown_");
+        scriptingAttrs.put("onkeyup", "onkeyup_");
+        scriptingAttrs.put("onselect", "onselect_");
+        scriptingAttrs.put("onchange", "onchange_");
+
+        commonAttrs.put("accesskey", "accesskey_");
+
+        theme = new SimpleTheme();
+        writer = new StringWriter();
+        map = new HashMap();
+
+        template = 
org.easymock.classextension.EasyMock.createMock(Template.class);
+        stack = EasyMock.createNiceMock(ValueStack.class);
+        setUpStack();
+        stackContext = new HashMap();
+
+        context = new TemplateRenderingContext(template, writer, stack, map, 
null);
+        stackContext.put(Component.COMPONENT_STACK, new Stack());
+
+        request = EasyMock.createMock(HttpServletRequest.class);
+        response = EasyMock.createMock(HttpServletResponse.class);
+
+        EasyMock.expect(stack.getContext()).andReturn(stackContext).anyTimes();
+
+        Container container = EasyMock.createNiceMock(Container.class);
+        XWorkConverter converter = new ConverterEx();
+        EasyMock.expect(container.getInstance(String.class, 
StrutsConstants.STRUTS_TAG_ALTSYNTAX)).andReturn("true").anyTimes();
+        
EasyMock.expect(container.getInstance(XWorkConverter.class)).andReturn(converter).anyTimes();
+        stackContext.put(ActionContext.CONTAINER, container);
+
+
+
+        EasyMock.replay(stack);
+        EasyMock.replay(container);
+    }
+
+    protected static String s(String input) {
+        return input.replaceAll("'", "\"");
+    }
+
+    protected void expectFind(String expr, Class toClass, Object returnVal) {
+        EasyMock.expect(stack.findValue(expr, toClass)).andReturn(returnVal);
+    }
+
+    protected void setUpStack() {
+        //TODO setup a config with stack and all..for real
+    }
+
+    protected void applyScriptingAttrs(UIBean bean) {
+        bean.setOnclick(scriptingAttrs.get("onclick"));
+        bean.setOndblclick(scriptingAttrs.get("ondblclick"));
+        bean.setOnmousedown(scriptingAttrs.get("onmousedown"));
+        bean.setOnmouseup(scriptingAttrs.get("onmouseup"));
+        bean.setOnmouseover(scriptingAttrs.get("onmouseover"));
+        bean.setOnmousemove(scriptingAttrs.get("onmousemove"));
+        bean.setOnmouseout(scriptingAttrs.get("onmouseout"));
+        bean.setOnfocus(scriptingAttrs.get("onfocus"));
+        bean.setOnblur(scriptingAttrs.get("onblur"));
+        bean.setOnkeypress(scriptingAttrs.get("onkeypress"));
+        bean.setOnkeydown(scriptingAttrs.get("onkeydown"));
+        bean.setOnkeyup(scriptingAttrs.get("onkeyup"));
+        bean.setOnselect(scriptingAttrs.get("onselect"));
+        bean.setOnchange(scriptingAttrs.get("onchange"));
+    }
+
+    protected void applyCommonAttrs(UIBean bean) {
+        bean.setAccesskey("accesskey_");
+    }
+
+    protected void assertScriptingAttrs(String str) {
+        for (Map.Entry<String, String> entry : scriptingAttrs.entrySet()) {
+            String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
+            assertTrue("String [" + substr + "] was not found in [" + str + 
"]", str.indexOf(substr) >= 0);
+        }
+    }
+
+    protected void assertCommongAttrs(String str) {
+        for (Map.Entry<String, String> entry : commonAttrs.entrySet()) {
+            String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
+            assertTrue("String [" + substr + "] was not found in [" + str + 
"]", str.indexOf(substr) >= 0);
+        }
+    }
+
+    protected Object doFindValue(String expr, Class toType) {
+        Object val = stack.findValue(expr);
+
+        if (toType == String.class)
+            return val == null ? expr : val;
+        else
+            return val == null ? null : val;
+    }
+
+    public class ConverterEx extends XWorkConverter {
+        public ConverterEx() {
+            
+        }
+    }
+}

Added: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SelectTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SelectTest.java?rev=726166&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SelectTest.java
 (added)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SelectTest.java
 Fri Dec 12 19:39:15 2008
@@ -0,0 +1,50 @@
+package org.apache.struts2.views.java.simple;
+
+import org.apache.struts2.components.TextField;
+import org.apache.struts2.components.Select;
+import org.easymock.EasyMock;
+import com.opensymphony.xwork2.util.ValueStack;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class SelectTest  extends AbstractTestCase {
+
+     public void testRenderSelectWithHeader() {
+        SelectEx tag = new SelectEx(stack, request, response);
+
+        tag.setList("%{{'key0', 'key1'}}");
+        tag.setHeaderKey("%{'key0'}");
+        tag.setHeaderValue("%{'val'}");
+
+        tag.processParams();
+        map.putAll(tag.getParameters());
+        theme.renderTag("select", context);
+        String output = writer.getBuffer().toString();
+        String expected = s("<select name=''><option 
value='key0'>val</option></select>");
+        assertEquals(expected, output);
+    }
+
+    @Override
+    protected void setUpStack() {
+        super.setUpStack();
+
+        expectFind("'key0'", String.class, "key0");
+        expectFind("'val'", String.class, "val");
+    }
+
+    class SelectEx extends Select {
+        public SelectEx(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
+            super(stack, request, response);
+        }
+
+        public void processParams() {
+            //these methods are protected
+            evaluateParams();
+        }
+
+        public boolean altSyntax() {
+            return true;
+        }
+    }
+}

Copied: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java
 (from r683696, 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SimpleThemeTest.java)
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java?p2=struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java&p1=struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SimpleThemeTest.java&r1=683696&r2=726166&rev=726166&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/SimpleThemeTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java
 Fri Dec 12 19:39:15 2008
@@ -21,73 +21,92 @@
 package org.apache.struts2.views.java.simple;
 
 import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.TextParseUtil;
 import junit.framework.TestCase;
 import org.apache.struts2.components.Component;
+import org.apache.struts2.components.TextField;
 import org.apache.struts2.components.template.Template;
 import org.apache.struts2.components.template.TemplateRenderingContext;
+import org.apache.struts2.views.util.ContextUtil;
 import org.easymock.EasyMock;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Stack;
 
-public class SimpleThemeTest extends TestCase {
+public class TextFieldTest extends AbstractTestCase {
 
-    private SimpleTheme theme;
+    public void testRenderTextField() {
+        TestFieldEx tag = new TestFieldEx(stack, request, response);
 
-    private StringWriter writer;
-    private Map map;
+        tag.setName("name");
+        tag.setValue("val1");
+        tag.setSize("10");
+        tag.setMaxlength("11");
+        tag.setDisabled("true");
+        tag.setReadonly("true");
+        tag.setTabindex("1");
+        tag.setId("id1");
+        tag.setCssClass("class1");
+        tag.setCssStyle("style1");
+        tag.setTitle("title");
 
-    private Template template;
-    private Map stackContext;
-    private ValueStack stack;
-    private TemplateRenderingContext context;
 
-    public void setUp() {
-        theme = new SimpleTheme();
-        writer = new StringWriter();
-        map = new HashMap();
+        tag.processParams();
+        map.putAll(tag.getParameters());
+        theme.renderTag("textfield", context);
+        String output = writer.getBuffer().toString();
+        String expected = s("<input type='text' name='name' size='10' 
maxlength='11' value='val1' tabindex='1' id='id1' class='class1' style='style1' 
title='title'></input>");
+        assertEquals(expected, output);
+    }
 
-        template = 
org.easymock.classextension.EasyMock.createMock(Template.class);
-        stack = EasyMock.createMock(ValueStack.class);
-        stackContext = new HashMap();
+    public void testRenderTextFieldScriptingAttrs() {
+        TestFieldEx tag = new TestFieldEx(stack, request, response);
 
-        context = new TemplateRenderingContext(template, writer, stack, map, 
null);
-        stackContext.put(Component.COMPONENT_STACK, new Stack());
-    }
+        applyScriptingAttrs(tag);
 
-    public void prepareForTest() {
-        EasyMock.expect(stack.getContext()).andReturn(stackContext).anyTimes();
-        EasyMock.replay(stack);
-        writer.getBuffer().delete(0, writer.getBuffer().length());
+        tag.processParams();
+        map.putAll(tag.getParameters());
+        theme.renderTag("textfield", context);
+        String output = writer.getBuffer().toString();
+
+        assertScriptingAttrs(output);
     }
 
-    public void testRenderTextField() {
-        prepareForTest();
-        theme.renderTag("textfield", context);
-        assertEquals("<input type=\"text\" name=\"\"></input>", 
writer.getBuffer().toString());
+     public void testRenderTextFieldCommonAttrs() {
+        TestFieldEx tag = new TestFieldEx(stack, request, response);
+
+        applyCommonAttrs(tag);
 
-        EasyMock.reset(stack);
-        prepareForTest();
-        map.put("name", "name");
-        map.put("accesskey", "accesskey");
+        tag.processParams();
+        map.putAll(tag.getParameters());
         theme.renderTag("textfield", context);
-        assertEquals("<input type=\"text\" name=\"name\" 
accesskey=\"accesskey\"></input>", writer.getBuffer().toString());
+        String output = writer.getBuffer().toString();
 
+        assertCommongAttrs(output);
     }
 
-    public void testRenderSelect() {
-        prepareForTest();
-        map.put("name", "choose");
-        theme.renderTag("select", context);
-        assertEquals("<select name=\"choose\"></select>", 
writer.getBuffer().toString());
-
-        EasyMock.reset(stack);
-        prepareForTest();
-        map.put("multiple", true);
-        theme.renderTag("select", context);
-        assertEquals("<select name=\"choose\" 
multiple=\"multiple\"></select>", writer.getBuffer().toString());
+    class TestFieldEx extends TextField {
+        public TestFieldEx(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
+            super(stack, request, response);
+        }
+
+        public void processParams() {
+            //these methods are protected 
+            evaluateParams();
+            evaluateExtraParams();
+        }
+
+        public boolean altSyntax() {
+            return true;
+        }
+
+        protected Object findValue(String expr, Class toType) {
+            return doFindValue(expr, toType);
+        }
     }
 
 }

Propchange: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/TextFieldTest.java
------------------------------------------------------------------------------
    svn:keywords = Id Author Date Rev


Reply via email to