mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Violette Roche-Montane
07.45.2014 a02a041d4e623925c395a14483c5b8c8b1c2f1cc
Checkpoint commit for OPENDJ-1303
- ConsoleApplication : Added/renamed functions to dissociate output stream from the error stream.

1 files added
1 files modified
199 ■■■■■ changed files
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java 62 ●●●●● patch | view | raw | blame | history
opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java 137 ●●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
@@ -188,14 +188,14 @@
     * @param msg
     *            The message.
     */
    public final void print(final LocalizableMessage msg) {
    public final void errPrint(final LocalizableMessage msg) {
        err.print(wrapText(msg, MAX_LINE_WIDTH));
    }
    /**
     * Displays a blank line to the error stream.
     */
    public final void println() {
    public final void errPrintln() {
        err.println();
    }
@@ -205,7 +205,7 @@
     * @param msg
     *            The message.
     */
    public final void println(final LocalizableMessage msg) {
    public final void errPrintln(final LocalizableMessage msg) {
        err.println(wrapText(msg, MAX_LINE_WIDTH));
    }
@@ -218,7 +218,7 @@
     * @param indent
     *            The number of columns to indent.
     */
    public final void println(final LocalizableMessage msg, final int indent) {
    public final void errPrintln(final LocalizableMessage msg, final int indent) {
        err.println(wrapText(msg, MAX_LINE_WIDTH, indent));
    }
@@ -228,13 +228,65 @@
     * @param msg
     *            The verbose message.
     */
    public final void printVerboseMessage(final LocalizableMessage msg) {
    public final void errPrintVerboseMessage(final LocalizableMessage msg) {
        if (isVerbose() || isInteractive()) {
            err.println(wrapText(msg, MAX_LINE_WIDTH));
        }
    }
    /**
     * Displays a message to the output stream.
     *
     * @param msg
     *            The message.
     */
    public final void print(final LocalizableMessage msg) {
        out.print(wrapText(msg, MAX_LINE_WIDTH));
    }
    /**
     * Displays a blank line to the output stream.
     */
    public final void println() {
        out.println();
    }
    /**
     * Displays a message to the output stream.
     *
     * @param msg
     *            The message.
     */
    public final void println(final LocalizableMessage msg) {
        out.println(wrapText(msg, MAX_LINE_WIDTH));
    }
    /**
     * Displays a message to the output stream indented by the specified number
     * of columns.
     *
     * @param msg
     *            The message.
     * @param indent
     *            The number of columns to indent.
     */
    public final void println(final LocalizableMessage msg, final int indent) {
        out.println(wrapText(msg, MAX_LINE_WIDTH, indent));
    }
    /**
     * Displays a message to the output stream if verbose mode is enabled.
     *
     * @param msg
     *            The verbose message.
     */
    public final void printVerboseMessage(final LocalizableMessage msg) {
        if (isVerbose() || isInteractive()) {
            out.println(wrapText(msg, MAX_LINE_WIDTH));
        }
    }
    /**
     * Interactively prompts (on error output) the user to provide a string
     * value. Any non-empty string will be allowed (the empty string will
     * indicate that the default should be used, if there is one).
opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java
New file
@@ -0,0 +1,137 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
 * or http://forgerock.org/license/CDDLv1.0.html.
 * See the License 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 legal-notices/CDDLv1_0.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 2014 ForgeRock AS.
 */
package com.forgerock.opendj.cli;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import org.forgerock.i18n.LocalizableMessage;
import org.testng.annotations.Test;
import static org.fest.assertions.Assertions.assertThat;
/**
 * Unit tests for the console application class.
 */
public class ConsoleApplicationTestCase extends CliTestCase {
    /**
     * For test purposes only.
     */
    private static class MockConsoleApplication extends ConsoleApplication {
        private static ByteArrayOutputStream out;
        private static ByteArrayOutputStream err;
        private boolean verbose = false;
        private boolean interactive = false;
        private MockConsoleApplication(PrintStream out, PrintStream err) {
            super(out, err);
        }
        final static MockConsoleApplication getDefault() {
            out = new ByteArrayOutputStream();
            final PrintStream psOut = new PrintStream(out);
            err = new ByteArrayOutputStream();
            final PrintStream psErr = new PrintStream(err);
            return new MockConsoleApplication(psOut, psErr);
        }
        public String getOut() throws UnsupportedEncodingException {
            return out.toString("UTF-8");
        }
        public String getErr() throws UnsupportedEncodingException {
            return err.toString("UTF-8");
        }
        /** {@inheritDoc} */
        @Override
        public boolean isVerbose() {
            return verbose;
        }
        /** {@inheritDoc} */
        @Override
        public boolean isInteractive() {
            return interactive;
        }
        public void setVerbose(boolean verbose) {
            this.verbose = verbose;
        }
    }
    @Test()
    public void testWriteLineInOutputStream() throws UnsupportedEncodingException {
        final LocalizableMessage msg = LocalizableMessage
                .raw("If somebody wants a sheep, that is a proof that one exists.");
        final MockConsoleApplication ca = MockConsoleApplication.getDefault();
        ca.print(msg);
        assertThat(ca.getOut()).contains(msg.toString());
        assertThat(ca.getErr()).isEmpty();
    }
    @Test()
    public void testWriteLineInErrorStream() throws UnsupportedEncodingException {
        final LocalizableMessage msg = LocalizableMessage.raw("Language is the source of misunderstandings.");
        final MockConsoleApplication ca = MockConsoleApplication.getDefault();
        ca.errPrint(msg);
        assertThat(ca.getOut()).isEmpty();
        assertThat(ca.getErr()).contains(msg.toString());
    }
    @Test()
    public void testWriteOutputStreamVerbose() throws UnsupportedEncodingException {
        final LocalizableMessage msg = LocalizableMessage
                .raw("If somebody wants a sheep, that is a proof that one exists.");
        final MockConsoleApplication ca = MockConsoleApplication.getDefault();
        ca.printVerboseMessage(msg);
        assertThat(ca.isVerbose()).isFalse();
        assertThat(ca.getOut()).isEmpty();
        assertThat(ca.getErr()).isEmpty();
        ca.setVerbose(true);
        ca.printVerboseMessage(msg);
        assertThat(ca.isVerbose()).isTrue();
        assertThat(ca.getOut()).contains(msg.toString());
        assertThat(ca.getErr()).isEmpty();
    }
    @Test()
    public void testWriteErrorStreamVerbose() throws UnsupportedEncodingException {
        final LocalizableMessage msg = LocalizableMessage.raw("Language is the source of misunderstandings.");
        final MockConsoleApplication ca = MockConsoleApplication.getDefault();
        ca.errPrintVerboseMessage(msg);
        assertThat(ca.isVerbose()).isFalse();
        assertThat(ca.getOut()).isEmpty();
        assertThat(ca.getErr()).isEmpty();
        ca.setVerbose(true);
        ca.errPrintVerboseMessage(msg);
        assertThat(ca.isVerbose()).isTrue();
        assertThat(ca.getOut()).isEmpty();
        assertThat(ca.getErr()).contains(msg.toString());
    }
}