commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bay...@apache.org
Subject svn commit: r544763 - in /jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli: HelpFormatterTest.java TestHelpFormatter.java
Date Wed, 06 Jun 2007 08:02:58 GMT
Author: bayard
Date: Wed Jun  6 01:02:57 2007
New Revision: 544763

URL: http://svn.apache.org/viewvc?view=rev&rev=544763
Log:
Renaming TestHelpFormatter to the more obvious HelpFormatterTest

Added:
    jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java
  (with props)
Removed:
    jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/TestHelpFormatter.java

Added: jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java?view=auto&rev=544763
==============================================================================
--- jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java
(added)
+++ jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java
Wed Jun  6 01:02:57 2007
@@ -0,0 +1,200 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.cli;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/** 
+ * Test case for the HelpFormatter class 
+ *
+ * @author Slawek Zachcial
+ * @author John Keyes ( john at integralsource.com )
+ * @author brianegge
+ **/
+public class HelpFormatterTest extends TestCase
+{
+
+   private static final String EOL = System.getProperty("line.separator");
+
+   public static void main( String[] args )
+   {
+      String[] testName = { HelpFormatterTest.class.getName() };
+      junit.textui.TestRunner.main(testName);
+   }
+
+   public static TestSuite suite()
+   {
+      return new TestSuite(HelpFormatterTest.class);
+   }
+
+   public HelpFormatterTest( String s )
+   {
+      super( s );
+   }
+
+   public void testFindWrapPos()
+      throws Exception
+   {
+      HelpFormatter hf = new HelpFormatter();
+
+      String text = "This is a test.";
+      //text width should be max 8; the wrap postition is 7
+      assertEquals("wrap position", 7, hf.findWrapPos(text, 8, 0));
+      //starting from 8 must give -1 - the wrap pos is after end
+      assertEquals("wrap position 2", -1, hf.findWrapPos(text, 8, 8));
+      //if there is no a good position before width to make a wrapping look for the next
one
+      text = "aaaa aa";
+      assertEquals("wrap position 3", 4, hf.findWrapPos(text, 3, 0));
+   }
+
+   public void testPrintWrapped()
+      throws Exception
+   {
+      StringBuffer sb = new StringBuffer();
+      HelpFormatter hf = new HelpFormatter();
+
+      String text = "This is a test.";
+      String expected;
+
+      expected = "This is a" + hf.getNewLine() + "test.";
+      hf.renderWrappedText(sb, 12, 0, text);
+      assertEquals("single line text", expected, sb.toString());
+
+      sb.setLength(0);
+      expected = "This is a" + hf.getNewLine() + "    test.";
+      hf.renderWrappedText(sb, 12, 4, text);
+      assertEquals("single line padded text", expected, sb.toString());
+
+      text =
+         "aaaa aaaa aaaa" + hf.getNewLine() +
+         "aaaaaa" + hf.getNewLine() +
+         "aaaaa";
+
+      expected = text;
+      sb.setLength(0);
+      hf.renderWrappedText(sb, 16, 0, text);
+      assertEquals("multi line text", expected, sb.toString());
+
+      expected =
+         "aaaa aaaa aaaa" + hf.getNewLine() +
+         "    aaaaaa" + hf.getNewLine() +
+         "    aaaaa";
+      sb.setLength(0);
+      hf.renderWrappedText(sb, 16, 4, text);
+      assertEquals("multi-line padded text", expected, sb.toString());
+   }
+
+   public void testPrintOptions()
+   throws Exception
+   {
+       StringBuffer sb = new StringBuffer();
+       HelpFormatter hf = new HelpFormatter();
+       final int leftPad = 1;
+       final int descPad = 3;
+       final String lpad = hf.createPadding(leftPad);
+       final String dpad = hf.createPadding(descPad);
+       Options options = null;
+       String expected = null;
+
+       options = new Options().addOption("a", false, "aaaa aaaa aaaa aaaa aaaa");
+       expected = lpad + "-a" + dpad + "aaaa aaaa aaaa aaaa aaaa";
+       hf.renderOptions(sb, 60, options, leftPad, descPad);
+       assertEquals("simple non-wrapped option", expected, sb.toString());
+
+       int nextLineTabStop = leftPad+descPad+"-a".length();
+       expected =
+           lpad + "-a" + dpad + "aaaa aaaa aaaa" + hf.getNewLine() +
+           hf.createPadding(nextLineTabStop) + "aaaa aaaa";
+       sb.setLength(0);
+       hf.renderOptions(sb, nextLineTabStop+17, options, leftPad, descPad);
+       assertEquals("simple wrapped option", expected, sb.toString());
+
+
+       options = new Options().addOption("a", "aaa", false, "dddd dddd dddd dddd");
+       expected = lpad + "-a,--aaa" + dpad + "dddd dddd dddd dddd";
+       sb.setLength(0);
+       hf.renderOptions(sb, 60, options, leftPad, descPad);
+       assertEquals("long non-wrapped option", expected, sb.toString());
+
+       nextLineTabStop = leftPad+descPad+"-a,--aaa".length();
+       expected =
+           lpad + "-a,--aaa" + dpad + "dddd dddd" + hf.getNewLine() +
+           hf.createPadding(nextLineTabStop) + "dddd dddd";
+       sb.setLength(0);
+       hf.renderOptions(sb, 25, options, leftPad, descPad);
+       assertEquals("long wrapped option", expected, sb.toString());
+
+       options = new Options().
+           addOption("a", "aaa", false, "dddd dddd dddd dddd").
+           addOption("b", false, "feeee eeee eeee eeee");
+       expected =
+           lpad + "-a,--aaa" + dpad + "dddd dddd" + hf.getNewLine() +
+           hf.createPadding(nextLineTabStop) + "dddd dddd" + hf.getNewLine() +
+           lpad + "-b      " + dpad + "feeee eeee" + hf.getNewLine() +
+           hf.createPadding(nextLineTabStop) + "eeee eeee";
+       sb.setLength(0);
+       hf.renderOptions(sb, 25, options, leftPad, descPad);
+       assertEquals("multiple wrapped options", expected, sb.toString());
+   }
+
+   public void testAutomaticUsage()
+   throws Exception
+   {
+       HelpFormatter hf = new HelpFormatter();
+       Options options = null;
+       String expected = "usage: app [-a]";
+       ByteArrayOutputStream out = new ByteArrayOutputStream( );
+       PrintWriter pw = new PrintWriter( out );
+
+       options = new Options().addOption("a", false, "aaaa aaaa aaaa aaaa aaaa");
+       hf.printUsage( pw, 60, "app", options );
+       pw.flush();
+       assertEquals("simple auto usage", expected, out.toString().trim());
+       out.reset();
+
+       expected = "usage: app [-a] [-b]";
+       options = new Options().addOption("a", false, "aaaa aaaa aaaa aaaa aaaa")
+       .addOption("b", false, "bbb" );
+       hf.printUsage( pw, 60, "app", options );
+       pw.flush();
+       assertEquals("simple auto usage", expected, out.toString().trim());
+       out.reset();
+   }
+
+    // This test ensures the options are properly sorted
+    // See https://issues.apache.org/jira/browse/CLI-131
+    public void testPrintUsage() {
+        Option optionA = new Option("a", "first");
+        Option optionB = new Option("b", "second");
+        Option optionC = new Option("c", "third");
+        Options opts = new Options();
+        opts.addOption(optionA);
+        opts.addOption(optionB);
+        opts.addOption(optionC);
+        HelpFormatter helpFormatter = new HelpFormatter();
+        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+        PrintWriter printWriter = new PrintWriter(bytesOut);
+        helpFormatter.printUsage(printWriter, 80, "app", opts);
+        printWriter.close();
+        assertEquals("usage: app [-a] [-b] [-c]" + EOL, bytesOut.toString());
+    }
+
+}

Propchange: jakarta/commons/proper/cli/branches/cli-1.0.x/src/test/org/apache/commons/cli/HelpFormatterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message