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
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
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
122 }
123
124 try {
125 opt = new CommandLineOptions(new String[] {"file", "", "ruleset"});
126 opt.createRenderer();
127 } catch (IllegalArgumentException iae) {
128
129 }
130 }
131 }