1212import junit .framework .TestCase ;
1313import junit .framework .TestSuite ;
1414
15- import java .io .StringWriter ;
15+ import java .io .ByteArrayOutputStream ;
1616import java .io .PrintWriter ;
17+ import java .io .StringWriter ;
1718
1819/**
1920 * Test case for the HelpFormatter class
2021 *
2122 * @author Slawek Zachcial
23+ * @author John Keyes ( jbjk at mac.com )
2224 **/
23- public class TestHelpFormatter
24- extends TestCase
25+ public class TestHelpFormatter extends TestCase
2526{
26- // --------------------------------------------------------------- Constants
27-
28- // ------------------------------------------------------------------ Static
29-
3027 public static void main ( String [] args )
3128 {
3229 String [] testName = { TestHelpFormatter .class .getName () };
@@ -38,14 +35,10 @@ public static TestSuite suite()
3835 return new TestSuite (TestHelpFormatter .class );
3936 }
4037
41- // -------------------------------------------------------------- Attributes
42-
43- // ------------------------------------------------------------ Constructors
4438 public TestHelpFormatter ( String s )
4539 {
4640 super ( s );
4741 }
48- // ------------------------------------------------------------------ Public
4942
5043 public void testFindWrapPos ()
5144 throws Exception
@@ -100,64 +93,79 @@ public void testPrintWrapped()
10093 }
10194
10295 public void testPrintOptions ()
103- throws Exception
96+ throws Exception
10497 {
105- StringBuffer sb = new StringBuffer ();
106- HelpFormatter hf = new HelpFormatter ();
107- final int leftPad = 1 ;
108- final int descPad = 3 ;
109- final String lpad = hf .createPadding (leftPad );
110- final String dpad = hf .createPadding (descPad );
111- Options options = null ;
112- String expected = null ;
113-
114- options = new Options ().addOption ("a" , false , "aaaa aaaa aaaa aaaa aaaa" );
115- expected = lpad + "-a" + dpad + "aaaa aaaa aaaa aaaa aaaa" ;
116- hf .renderOptions (sb , 60 , options , leftPad , descPad );
117- assertEquals ("simple non-wrapped option" , expected , sb .toString ());
118-
119- int nextLineTabStop = leftPad +descPad +"-a" .length ();
120- expected =
121- lpad + "-a" + dpad + "aaaa aaaa aaaa" + hf .defaultNewLine +
122- hf .createPadding (nextLineTabStop ) + "aaaa aaaa" ;
123- sb .setLength (0 );
124- hf .renderOptions (sb , nextLineTabStop +17 , options , leftPad , descPad );
125- assertEquals ("simple wrapped option" , expected , sb .toString ());
126-
127-
128- options = new Options ().addOption ("a" , "aaa" , false , "dddd dddd dddd dddd" );
129- expected = lpad + "-a,--aaa" + dpad + "dddd dddd dddd dddd" ;
130- sb .setLength (0 );
131- hf .renderOptions (sb , 60 , options , leftPad , descPad );
132- assertEquals ("long non-wrapped option" , expected , sb .toString ());
133-
134- nextLineTabStop = leftPad +descPad +"-a,--aaa" .length ();
135- expected =
136- lpad + "-a,--aaa" + dpad + "dddd dddd" + hf .defaultNewLine +
137- hf .createPadding (nextLineTabStop ) + "dddd dddd" ;
138- sb .setLength (0 );
139- hf .renderOptions (sb , 25 , options , leftPad , descPad );
140- assertEquals ("long wrapped option" , expected , sb .toString ());
141-
142- options = new Options ().
143- addOption ("a" , "aaa" , false , "dddd dddd dddd dddd" ).
144- addOption ("b" , false , "feeee eeee eeee eeee" );
145- expected =
146- lpad + "-a,--aaa" + dpad + "dddd dddd" + hf .defaultNewLine +
147- hf .createPadding (nextLineTabStop ) + "dddd dddd" + hf .defaultNewLine +
148- lpad + "-b " + dpad + "feeee eeee" + hf .defaultNewLine +
149- hf .createPadding (nextLineTabStop ) + "eeee eeee" ;
150- sb .setLength (0 );
151- hf .renderOptions (sb , 25 , options , leftPad , descPad );
152- assertEquals ("multiple wrapped options" , expected , sb .toString ());
98+ StringBuffer sb = new StringBuffer ();
99+ HelpFormatter hf = new HelpFormatter ();
100+ final int leftPad = 1 ;
101+ final int descPad = 3 ;
102+ final String lpad = hf .createPadding (leftPad );
103+ final String dpad = hf .createPadding (descPad );
104+ Options options = null ;
105+ String expected = null ;
106+
107+ options = new Options ().addOption ("a" , false , "aaaa aaaa aaaa aaaa aaaa" );
108+ expected = lpad + "-a" + dpad + "aaaa aaaa aaaa aaaa aaaa" ;
109+ hf .renderOptions (sb , 60 , options , leftPad , descPad );
110+ assertEquals ("simple non-wrapped option" , expected , sb .toString ());
111+
112+ int nextLineTabStop = leftPad +descPad +"-a" .length ();
113+ expected =
114+ lpad + "-a" + dpad + "aaaa aaaa aaaa" + hf .defaultNewLine +
115+ hf .createPadding (nextLineTabStop ) + "aaaa aaaa" ;
116+ sb .setLength (0 );
117+ hf .renderOptions (sb , nextLineTabStop +17 , options , leftPad , descPad );
118+ assertEquals ("simple wrapped option" , expected , sb .toString ());
119+
120+
121+ options = new Options ().addOption ("a" , "aaa" , false , "dddd dddd dddd dddd" );
122+ expected = lpad + "-a,--aaa" + dpad + "dddd dddd dddd dddd" ;
123+ sb .setLength (0 );
124+ hf .renderOptions (sb , 60 , options , leftPad , descPad );
125+ assertEquals ("long non-wrapped option" , expected , sb .toString ());
126+
127+ nextLineTabStop = leftPad +descPad +"-a,--aaa" .length ();
128+ expected =
129+ lpad + "-a,--aaa" + dpad + "dddd dddd" + hf .defaultNewLine +
130+ hf .createPadding (nextLineTabStop ) + "dddd dddd" ;
131+ sb .setLength (0 );
132+ hf .renderOptions (sb , 25 , options , leftPad , descPad );
133+ assertEquals ("long wrapped option" , expected , sb .toString ());
134+
135+ options = new Options ().
136+ addOption ("a" , "aaa" , false , "dddd dddd dddd dddd" ).
137+ addOption ("b" , false , "feeee eeee eeee eeee" );
138+ expected =
139+ lpad + "-a,--aaa" + dpad + "dddd dddd" + hf .defaultNewLine +
140+ hf .createPadding (nextLineTabStop ) + "dddd dddd" + hf .defaultNewLine +
141+ lpad + "-b " + dpad + "feeee eeee" + hf .defaultNewLine +
142+ hf .createPadding (nextLineTabStop ) + "eeee eeee" ;
143+ sb .setLength (0 );
144+ hf .renderOptions (sb , 25 , options , leftPad , descPad );
145+ assertEquals ("multiple wrapped options" , expected , sb .toString ());
153146 }
154147
155- // --------------------------------------------------------------- Protected
156-
157- // ------------------------------------------------------- Package protected
158-
159- // ----------------------------------------------------------------- Private
160-
161- // ----------------------------------------------------------- Inner classes
162-
148+ public void testAutomaticUsage ()
149+ throws Exception
150+ {
151+ HelpFormatter hf = new HelpFormatter ();
152+ Options options = null ;
153+ String expected = "usage: app [-a]\n " ;
154+ ByteArrayOutputStream out = new ByteArrayOutputStream ( );
155+ PrintWriter pw = new PrintWriter ( out );
156+
157+ options = new Options ().addOption ("a" , false , "aaaa aaaa aaaa aaaa aaaa" );
158+ hf .printUsage ( pw , 60 , "app" , options );
159+ pw .flush ();
160+ assertEquals ("simple auto usage" , expected , out .toString ());
161+ out .reset ();
162+
163+ expected = "usage: app [-b] [-a]\n " ;
164+ options = new Options ().addOption ("a" , false , "aaaa aaaa aaaa aaaa aaaa" )
165+ .addOption ("b" , false , "bbb" );
166+ hf .printUsage ( pw , 60 , "app" , options );
167+ pw .flush ();
168+ assertEquals ("simple auto usage" , expected , out .toString ());
169+ out .reset ();
170+ }
163171}
0 commit comments