diff --git a/changelog/src/test/org/apache/maven/cvslib/CvsChangeLogGeneratorTest.java b/changelog/src/test/org/apache/maven/cvslib/CvsChangeLogGeneratorTest.java new file mode 100644 index 00000000..013ab961 --- /dev/null +++ b/changelog/src/test/org/apache/maven/cvslib/CvsChangeLogGeneratorTest.java @@ -0,0 +1,198 @@ +package org.apache.maven.cvslib; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache Maven" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache Maven", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * ==================================================================== + */ + +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import org.apache.tools.ant.types.Commandline; + +import junit.framework.TestCase; + +/** + * @author Ben Walding + * @version $Id: CvsChangeLogGeneratorTest.java,v 1.1 2003/02/17 20:53:05 bwalding Exp $ + */ +class ExposeGenerator extends CvsChangeLogGenerator +{ + + protected Commandline getScmLogCommand() + { + return super.getScmLogCommand(); + } +} + +/** + * @author Ben Walding + * @version $Id: CvsChangeLogGeneratorTest.java,v 1.1 2003/02/17 20:53:05 bwalding Exp $ + */ +public class CvsChangeLogGeneratorTest extends TestCase +{ + class Test + { + String conn; + String args; + Class throwable; + + public Test(String conn, String args, Class throwable) + { + this.conn = conn; + this.args = args; + this.throwable = throwable; + } + + } + + Test[] tests = + { + new Test("asd:asd", "", IllegalArgumentException.class), + new Test( + "scm:csvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-turbine-maven:anoncvs", + "", + IllegalArgumentException.class), + new Test( + "scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-turbine-maven:anoncvs", + "cvs|-d|:pserver:anoncvs@cvs.apache.org:/home/cvspublic|log", + null), + new Test( + "scm|cvs|pserver|anoncvs@cvs.apache.org|D:\\home\\cvspublic|jakarta-turbine-maven|anoncvs", + "cvs|-d|:pserver:anoncvs@cvs.apache.org:D:\\home\\cvspublic|log", + null), + new Test( + "scm|cvs|pserver|anoncvs@cvs.apache.org|D:/home/cvspublic|jakarta-turbine-maven|anoncvs", + "cvs|-d|:pserver:anoncvs@cvs.apache.org:D:/home/cvspublic|log", + null)}; + + public void testParse() throws Throwable + { + for (int i = 0; i < tests.length; i++) + { + + Test t = tests[i]; + testParse(t); + } + } + + public void testParse(Test test) throws Throwable + { + String[] expected = tokenizerToArray(new EnhancedStringTokenizer(test.args, "|")); + + ExposeGenerator eg = new ExposeGenerator(); + System.out.println("Processing conn = " + test.conn); + try + { + + eg.setConnection(test.conn); + Commandline cl = eg.getScmLogCommand(); + String[] clArgs = cl.getCommandline(); + if (test.throwable == null) + { + assertEquals("clArgs.length", expected.length, clArgs.length); + for (int i = 0; i < expected.length; i++) + { + assertEquals("clArgs[" + i + "]", expected[i], clArgs[i]); + } + } + else + { + fail("Failed to throw :" + test.throwable.getName()); + } + + } + catch (Throwable t) + { + if (test.throwable != null && test.throwable.isAssignableFrom(t.getClass())) + { + //Success + } + else + { + throw t; + } + } + + } + + /** + * Converts a tokenizer to an array of strings + * @param tok + * @return String[] + */ + public static String[] tokenizerToArray(EnhancedStringTokenizer tok) + { + List l = new ArrayList(); + while (tok.hasMoreTokens()) + { + l.add(tok.nextToken()); + } + return (String[]) l.toArray(new String[l.size()]); + } + + public void testTokenizer() + { + EnhancedStringTokenizer tok = new EnhancedStringTokenizer("a,b,b,c,d", ",", false); + String[] result = tokenizerToArray(tok); + assertEquals("result.length", 5, result.length); + assertEquals("result[0]", "a", result[0]); + assertEquals("result[1]", "b", result[1]); + assertEquals("result[2]", "b", result[2]); + assertEquals("result[3]", "c", result[3]); + assertEquals("result[4]", "d", result[4]); + } + +}