1   package test.net.sourceforge.pmd.jsp.rules;
2   
3   import net.sourceforge.pmd.Rule;
4   import net.sourceforge.pmd.RuleSetFactory;
5   import net.sourceforge.pmd.RuleSetNotFoundException;
6   import net.sourceforge.pmd.SourceType;
7   import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst;
8   import test.net.sourceforge.pmd.testframework.TestDescriptor;
9   
10  public class NoLongScriptsTest extends SimpleAggregatorTst {
11  
12      public void testAll() throws RuleSetNotFoundException {
13          Rule rule = new RuleSetFactory()
14                  .createSingleRuleSet("rulesets/basic-jsp.xml").getRuleByName("NoLongScripts");
15          runTests(new TestDescriptor[]{
16              new TestDescriptor(VIOLATION1, "Too long javascript.", 1, rule),
17              new TestDescriptor(NO_VIOLATION1, "Short javascript.", 0, rule),
18          }, SourceType.JSP);
19      }
20  
21      private static final String VIOLATION1 = "<HTML>\n"
22              + "<BODY>\n"
23              + "<!--Java Script-->\n"
24              + "<SCRIPT language='JavaScript' type='text/javascript'>\n"
25              + "<!--\n"
26              + "function calcDays(){\n"
27              + "  var date1 = document.getElementById('d1').lastChild.data;\n"
28              + "  var date2 = document.getElementById('d2').lastChild.data;\n"
29              + "  date1 = date1.split(\"-\");\n"
30              + "  date2 = date2.split(\"-\");\n"
31              + "  var sDate = new Date(date1[0]+\"/\"+date1[1]+\"/\"+date1[2]);\n"
32              + "  var eDate = new Date(date2[0]+\"/\"+date2[1]+\"/\"+date2[2]);\n"
33              + "  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));\n"
34              + "  document.getElementById('diffDays').lastChild.data = daysApart;\n"
35              + "}\n" + "\n" + "onload=calcDays;\n" + "//-->\n" + "</SCRIPT>\n"
36              + "</BODY>\n" + "</HTML>;\n";
37  
38      private static final String NO_VIOLATION1 = "<HTML>\n"
39              + "<BODY>\n"
40              + "<!--Java Script-->\n"
41              + "<SCRIPT language='JavaScript' type='text/javascript'>\n"
42              + "<!--\n"
43              + "function calcDays(){\n"
44              + "  document.getElementById('diffDays').lastChild.data = daysApart;\n"
45              + "}\n" + "\n" + "onload=calcDays;\n" + "//-->\n" + "</SCRIPT>\n"
46              + "</BODY>\n" + "</HTML>;\n";
47  }