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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]