// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.test; import fi.jumi.actors.eventizers.Event; import fi.jumi.actors.queue.MessageQueue; import fi.jumi.core.SuiteMother; import fi.jumi.core.api.*; import fi.jumi.core.events.suiteListener.SuiteListenerToEvent; import fi.jumi.launcher.ui.*; import org.junit.Test; import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; public class TextUIParserTest { private static final RunId RUN_1 = new RunId(1); private static final RunId RUN_2 = new RunId(2); private final MessageQueue<Event<SuiteListener>> stream = new MessageQueue<>(); private final SuiteListener listener = new SuiteListenerToEvent(stream); @Test public void get_number_of_passing_tests() { SuiteMother.emptySuite(listener); assertThat(textUI().getPassingCount(), is(0)); SuiteMother.onePassingTest(listener); assertThat(textUI().getPassingCount(), is(1)); } @Test public void get_number_of_failing_tests() { SuiteMother.emptySuite(listener); assertThat(textUI().getFailingCount(), is(0)); SuiteMother.oneFailingTest(listener); assertThat(textUI().getFailingCount(), is(1)); } @Test public void get_test_start_and_end_events() { SuiteMother.onePassingTest(listener); assertThat(textUI().getTestStartAndEndEvents(RUN_1), is(asList("DummyTest", "/"))); SuiteMother.nestedFailingAndPassingTests(listener); assertThat(textUI().getTestStartAndEndEvents(RUN_1), is(asList("DummyTest", "testOne", "/", "testTwo", "/", "/"))); } @Test public void distinguishes_between_multiple_runs() { SuiteMother.twoPassingRuns(listener); assertThat(textUI().getTestStartAndEndEvents(RUN_1), is(asList("DummyTest", "testOne", "/", "/"))); SuiteMother.twoPassingRuns(listener); assertThat(textUI().getTestStartAndEndEvents(RUN_2), is(asList("DummyTest", "testTwo", "/", "/"))); } @Test public void get_run_output() { SuiteMother.oneFailingTest(listener); assertThat(textUI().getRunOutput(RUN_1), containsString("java.lang.Throwable: dummy exception")); } @Test public void get_number_of_runs() { SuiteMother.onePassingTest(listener); assertThat(textUI().getRunCount(), is(1)); SuiteMother.twoPassingRuns(listener); assertThat(textUI().getRunCount(), is(2)); } @Test public void get_all_RunIds() { SuiteMother.onePassingTest(listener); assertThat(textUI().getRunIds(), containsInAnyOrder(new RunId(1))); SuiteMother.twoPassingRuns(listener); assertThat(textUI().getRunIds(), containsInAnyOrder(new RunId(1), new RunId(2))); } private TextUIParser textUI() { StringBuilder out = new StringBuilder(); TextUI ui = new TextUI(stream, new PlainTextPrinter(out)); ui.update(); return new TextUIParser(out.toString()); } }