/** * Powerunit - A JDK1.8 test framework * Copyright (C) 2014 Mathieu Boretti. * * This file is part of Powerunit * * Powerunit is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Powerunit is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Powerunit. If not, see <http://www.gnu.org/licenses/>. */ package ch.powerunit.rules.impl; import java.io.PrintStream; import java.util.Objects; import ch.powerunit.TestContext; import ch.powerunit.rules.SystemStreamRule; /** * Implementation * @author borettim * @since 0.4.0 */ public final class SystemStreamRuleImpl implements SystemStreamRule { private PrintStream oldErr; private PrintStream oldOut; private final PrintStream remplacementOut; private final PrintStream remplacementErr; /** * @param remplacementOut * @param remplacementErr */ public SystemStreamRuleImpl(PrintStream remplacementOut, PrintStream remplacementErr) { this.remplacementOut = Objects.requireNonNull(remplacementOut,"remplacementOut can't be null"); this.remplacementErr = Objects.requireNonNull(remplacementErr,"remplacementErr can't be null"); } /* * (non-Javadoc) * * @see * ch.powerunit.rules.TestListenerRule#onStart(ch.powerunit.TestContext) */ @Override public void onStart(TestContext<Object> context) { oldErr = System.err; oldOut = System.out; try { System.setErr(remplacementErr); System.setOut(remplacementOut); } catch (SecurityException e) { // ignored } } /* * (non-Javadoc) * * @see ch.powerunit.rules.TestListenerRule#onEnd(ch.powerunit.TestContext) */ @Override public void onEnd(TestContext<Object> context) { try { System.setErr(oldErr); System.setOut(oldOut); } catch (SecurityException e) { // ignored } } @Override public PrintStream getRealSystemOut() { return oldOut; } @Override public PrintStream getRealSystemErr() { return oldErr; } }