1 package com.sri.common.taglib; 2 3 import javax.servlet.jsp.JspException; 4 import org.apache.cactus.JspTestCase; 5 import org.apache.cactus.WebResponse; 6 7 /*** 8 * @author Michael Rimov 9 */ 10 public class TestTreeMenuTag extends JspTestCase { 11 private TreeMenuTag treeMenuTag = null; 12 13 private TreeNode testNode = null; 14 15 public TestTreeMenuTag(String name) { 16 super(name); 17 } 18 19 protected void setUp() throws Exception { 20 super.setUp(); 21 treeMenuTag = new TreeMenuTag(); 22 testNode = new DefaultTreeNode(); 23 setUpTreeNode((DefaultTreeNode) testNode); 24 this.request.setAttribute("TreeView", testNode); 25 treeMenuTag.setValue("${request.TreeView}"); 26 } 27 28 /*** 29 * Constructs a tree node with nodes and leaves. 30 * 31 * @param root DefaultTreeNode 32 */ 33 protected void setUpTreeNode(DefaultTreeNode root) { 34 root.setLabel("All Nodes"); 35 root.setSelected(true); 36 root.setSelectedStyle("folder-open"); 37 root.setUnselectedStyle("folder-close"); 38 for (int i = 1; i < 10; i++) { 39 root.addNested(constructFolderNode(root)); 40 } 41 42 for (int i = 1; i < 5; i++) { 43 root.addNested(constructLeafNode(root)); 44 } 45 } 46 47 /*** 48 * Constructs af older node. 49 * 50 * @param parent DefaultTreeNode 51 * @return DefaultTreeNode 52 */ 53 protected DefaultTreeNode constructFolderNode(DefaultTreeNode parent) { 54 DefaultTreeNode newNode = new DefaultTreeNode(parent); 55 newNode.setSelected(true); 56 newNode.setLabel("Folder"); 57 newNode.setSelectedStyle("folder-open"); 58 newNode.setUnselectedStyle("folder-close"); 59 for (int i = 1; i < 3; i++) { 60 newNode.addNested(constructLeafNode(parent)); 61 } 62 63 return newNode; 64 } 65 66 /*** 67 * Constructs a leaf node. 68 * 69 * @param parent DefaultTreeNode 70 * @return DefaultTreeNode 71 */ 72 protected DefaultTreeNode constructLeafNode(DefaultTreeNode parent) { 73 DefaultTreeNode newNode = new DefaultTreeNode(parent); 74 newNode.setSelected(false); 75 newNode.setLabel("Item"); 76 newNode.setSelectedStyle("selected"); 77 newNode.setUnselectedStyle("subitem"); 78 newNode.setLink("http://www.sri.com"); 79 return newNode; 80 } 81 82 protected void tearDown() throws Exception { 83 treeMenuTag = null; 84 testNode = null; 85 super.tearDown(); 86 } 87 88 public void testCheckGoodELEvaluation() throws JspException { 89 int value = treeMenuTag.doEndTag(); 90 assertTrue(value == TreeMenuTag.EVAL_PAGE); 91 } 92 93 public void testCheckBadELEvaluation() { 94 treeMenuTag.setValue("${abcdefg}"); 95 try { 96 treeMenuTag.doEndTag(); 97 fail("doEndTag() should have thrown an exception because of bad EL passed in"); 98 } catch (JspException ex) { 99 assertNotNull(ex.getMessage()); 100 } 101 } 102 103 public void testCheckTagRendering() throws JspException { 104 treeMenuTag.doEndTag(); 105 } 106 107 public void endCheckTagRendering(WebResponse response) throws JspException { 108 String value = response.getText(); 109 assertTrue(value.indexOf("<ul") > -1); 110 assertTrue(value.indexOf("</ul>") > -1); 111 assertTrue(value.indexOf("<li") > -1); 112 assertTrue(value.indexOf("</li>") > -1); 113 } 114 115 116 }