/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * See LICENSE.txt included in this distribution for the specific * language governing permissions and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ package org.opensolaris.opengrok.util; import java.text.ParseException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; /** * JUnit test for org.opensolaris.opengrok.util.Getopt */ public class GetoptTest { public GetoptTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testParseNormal() throws Exception { String[] argv = new String[]{"-a", "foo", "-bc", "--", "-f" }; Getopt instance = new Getopt(argv, "a:bcr:f"); instance.parse(); assertEquals('a', (char) instance.getOpt()); assertEquals("foo", instance.getOptarg()); assertEquals('b', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals('c', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals(-1, instance.getOpt()); assertEquals(4, instance.getOptind()); assertTrue(instance.getOptind() < argv.length); assertEquals("-f", argv[instance.getOptind()]); } @Test public void reset() throws ParseException { String[] argv = new String[]{"-a", "foo", "-bc", "argument1" }; Getopt instance = new Getopt(argv, "a:bc"); instance.parse(); assertEquals('a', (char) instance.getOpt()); assertEquals("foo", instance.getOptarg()); assertEquals('b', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals('c', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals(-1, instance.getOpt()); assertEquals(3, instance.getOptind()); assertTrue(instance.getOptind() < argv.length); assertEquals("argument1", argv[instance.getOptind()]); instance.reset(); assertEquals('a', (char) instance.getOpt()); assertEquals("foo", instance.getOptarg()); assertEquals('b', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals('c', (char) instance.getOpt()); assertNull(instance.getOptarg()); assertEquals(-1, instance.getOpt()); assertEquals(3, instance.getOptind()); assertTrue(instance.getOptind() < argv.length); assertEquals("argument1", argv[instance.getOptind()]); } /* Test of reset method, of class Getopt. */ @Test public void testParseFailure() throws Exception { String[] argv = new String[]{"-a"}; Getopt instance = new Getopt(argv, "a:"); try { instance.parse(); fail("Parse shall not allow missing arguments"); } catch (ParseException exp) { if (!exp.getMessage().contains("requires an argument")) { // not the exception we expected throw exp; } } instance = new Getopt(argv, "b"); try { instance.parse(); fail("Parse shall not allow unknown arguments"); } catch (ParseException exp) { if (!exp.getMessage().contains("Unknown argument: ")) { // not the exception we expected throw exp; } } } }