1   /***
2    * <copyright>
3    *  Copyright 1997-2002 InfoEther, LLC
4    *  under sponsorship of the Defense Advanced Research Projects Agency
5   (DARPA).
6    *
7    *  This program is free software; you can redistribute it and/or modify
8    *  it under the terms of the Cougaar Open Source License as published
9   by
10   *  DARPA on the Cougaar Open Source Website (www.cougaar.org).
11   *
12   *  THE COUGAAR SOFTWARE AND ANY DERIVATIVE SUPPLIED BY LICENSOR IS
13   *  PROVIDED 'AS IS' WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR
14   *  IMPLIED, INCLUDING (BUT NOT LIMITED TO) ALL IMPLIED WARRANTIES OF
15   *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND WITHOUT
16   *  ANY WARRANTIES AS TO NON-INFRINGEMENT.  IN NO EVENT SHALL COPYRIGHT
17   *  HOLDER BE LIABLE FOR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL
18   *  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE OF DATA OR PROFITS,
19   *  TORTIOUS CONDUCT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20   *  PERFORMANCE OF THE COUGAAR SOFTWARE.
21   * </copyright>
22   */
23  package test.net.sourceforge.pmd;
24  
25  import junit.framework.TestCase;
26  import net.sourceforge.pmd.CommandLineOptions;
27  import net.sourceforge.pmd.renderers.CSVRenderer;
28  import net.sourceforge.pmd.renderers.EmacsRenderer;
29  import net.sourceforge.pmd.renderers.HTMLRenderer;
30  import net.sourceforge.pmd.renderers.IDEAJRenderer;
31  import net.sourceforge.pmd.renderers.TextRenderer;
32  import net.sourceforge.pmd.renderers.VBHTMLRenderer;
33  import net.sourceforge.pmd.renderers.XMLRenderer;
34  
35  import java.io.InputStreamReader;
36  
37  public class CommandLineOptionsTest extends TestCase {
38  
39      public void testDebug() {
40          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset", "-debug"});
41          assertTrue(opt.debugEnabled());
42      }
43  
44      public void testTargetJDKVersion() {
45          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset"});
46          assertFalse(opt.jdk13());
47          opt = new CommandLineOptions(new String[] {"file", "format", "ruleset", "-jdk13"});
48          assertTrue(opt.jdk13());
49      }
50  
51      public void testShortNames() {
52          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset", "-shortnames"});
53          assertTrue(opt.shortNamesEnabled());
54      }
55  
56      public void testEncoding() {
57          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset"});
58          assertTrue(opt.getEncoding().equals((new InputStreamReader(System.in)).getEncoding()));
59          opt = new CommandLineOptions(new String[] {"file", "format", "ruleset", "-encoding", "UTF-8"});
60          assertTrue(opt.getEncoding().equals("UTF-8"));
61      }
62  
63      public void testInputFileName() {
64          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset"});
65          assertEquals("file", opt.getInputFileName());
66      }
67  
68      public void testReportFormat() {
69          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset"});
70          assertEquals("format", opt.getReportFormat());
71      }
72  
73      public void testRulesets() {
74          CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "format", "ruleset"});
75          assertEquals("ruleset", opt.getRulesets());
76      }
77  
78      public void testCommaSeparatedFiles() {
79          CommandLineOptions opt = new CommandLineOptions(new String[] {"file1,file2,file3", "format", "ruleset"});
80          assertTrue(opt.containsCommaSeparatedFileList());
81      }
82  
83      public void testNotEnoughArgs() {
84          try {
85              new CommandLineOptions(new String[] {"file1", "format"});
86              fail("Should have thrown an exception when only array contained < 3 args");
87          } catch (RuntimeException re) {
88              // cool
89          }
90      }
91  
92      public void testNullArgs() {
93          try {
94              new CommandLineOptions(null);
95              fail("Should have thrown an exception when null passed to constructor");
96          } catch (RuntimeException re) {
97              // cool
98          }
99      }
100 
101     public void testRenderer() {
102         CommandLineOptions opt = new CommandLineOptions(new String[] {"file", "xml", "ruleset"});
103         assertTrue(opt.createRenderer() instanceof XMLRenderer);
104         opt = new CommandLineOptions(new String[] {"file", "html", "ruleset"});
105         assertTrue(opt.createRenderer() instanceof HTMLRenderer);
106         opt = new CommandLineOptions(new String[] {"file", "text", "ruleset"});
107         assertTrue(opt.createRenderer() instanceof TextRenderer);
108         opt = new CommandLineOptions(new String[] {"file", "emacs", "ruleset"});
109         assertTrue(opt.createRenderer() instanceof EmacsRenderer);
110         opt = new CommandLineOptions(new String[] {"file", "csv", "ruleset"});
111         assertTrue(opt.createRenderer() instanceof CSVRenderer);
112         opt = new CommandLineOptions(new String[] {"file", "vbhtml", "ruleset"});
113         assertTrue(opt.createRenderer() instanceof VBHTMLRenderer);
114         opt = new CommandLineOptions(new String[] {"file", "ideaj", "ruleset"});
115         assertTrue(opt.createRenderer() instanceof IDEAJRenderer);
116 
117         try {
118             opt = new CommandLineOptions(new String[] {"file", "fiddlefaddle", "ruleset"});
119             opt.createRenderer();
120         } catch (IllegalArgumentException iae) {
121             // cool
122         }
123 
124         try {
125             opt = new CommandLineOptions(new String[] {"file", "", "ruleset"});
126             opt.createRenderer();
127         } catch (IllegalArgumentException iae) {
128             // cool
129         }
130     }
131 }