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 testTargetJDKVersion() {
40 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"});
41 assertEquals("1.4", opt.getTargetJDK());
42 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-targetjdk", "1.3"});
43 assertEquals("1.3", opt.getTargetJDK());
44 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-targetjdk", "1.5"});
45 assertEquals("1.5", opt.getTargetJDK());
46 }
47
48 public void testDebug() {
49 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-debug"});
50 assertTrue(opt.debugEnabled());
51 }
52
53 public void testExcludeMarker() {
54 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-excludemarker", "FOOBAR"});
55 assertEquals("FOOBAR", opt.getExcludeMarker());
56 }
57
58 public void testShortNames() {
59 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-shortnames"});
60 assertTrue(opt.shortNamesEnabled());
61 }
62
63 public void testEncoding() {
64 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"});
65 assertTrue(opt.getEncoding().equals((new InputStreamReader(System.in)).getEncoding()));
66 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-encoding", "UTF-8"});
67 assertTrue(opt.getEncoding().equals("UTF-8"));
68 }
69
70 public void testInputFileName() {
71 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"});
72 assertEquals("file", opt.getInputPath());
73 }
74
75 public void testReportFormat() {
76 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"});
77 assertEquals("format", opt.getReportFormat());
78 }
79
80 public void testRulesets() {
81 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"});
82 assertEquals("rulesets/basic.xml", opt.getRulesets());
83 }
84
85 public void testCommaSeparatedFiles() {
86 CommandLineOptions opt = new CommandLineOptions(new String[]{"file1,file2,file3", "format", "basic"});
87 assertTrue(opt.containsCommaSeparatedFileList());
88 }
89
90 public void testNotEnoughArgs() {
91 try {
92 new CommandLineOptions(new String[]{"file1", "format"});
93 fail("Should have thrown an exception when only array contained < 3 args");
94 } catch (RuntimeException re) {
95
96 }
97 }
98
99 public void testNullArgs() {
100 try {
101 new CommandLineOptions(null);
102 fail("Should have thrown an exception when null passed to constructor");
103 } catch (RuntimeException re) {
104
105 }
106 }
107
108 public void testRenderer() {
109 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "xml", "basic"});
110 assertTrue(opt.createRenderer() instanceof XMLRenderer);
111 opt = new CommandLineOptions(new String[]{"file", "html", "basic"});
112 assertTrue(opt.createRenderer() instanceof HTMLRenderer);
113 opt = new CommandLineOptions(new String[]{"file", "text", "basic"});
114 assertTrue(opt.createRenderer() instanceof TextRenderer);
115 opt = new CommandLineOptions(new String[]{"file", "emacs", "basic"});
116 assertTrue(opt.createRenderer() instanceof EmacsRenderer);
117 opt = new CommandLineOptions(new String[]{"file", "csv", "basic"});
118 assertTrue(opt.createRenderer() instanceof CSVRenderer);
119 opt = new CommandLineOptions(new String[]{"file", "vbhtml", "basic"});
120 assertTrue(opt.createRenderer() instanceof VBHTMLRenderer);
121 opt = new CommandLineOptions(new String[]{"file", "ideaj", "basic"});
122 assertTrue(opt.createRenderer() instanceof IDEAJRenderer);
123
124 try {
125 opt = new CommandLineOptions(new String[]{"file", "fiddlefaddle", "basic"});
126 opt.createRenderer();
127 } catch (IllegalArgumentException iae) {
128
129 }
130
131 try {
132 opt = new CommandLineOptions(new String[]{"file", "", "basic"});
133 opt.createRenderer();
134 } catch (IllegalArgumentException iae) {
135
136 }
137 }
138 }