package com.sandwich.koan.runner.ui;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.util.Arrays;
import org.junit.Test;
import com.sandwich.koan.KoanMethod;
import com.sandwich.koan.path.CommandLineTestCase;
import com.sandwich.koan.result.KoanMethodResult;
import com.sandwich.koan.result.KoanSuiteResult;
import com.sandwich.koan.result.KoanSuiteResult.KoanResultBuilder;
import com.sandwich.koan.suite.OneFailingKoan;
import com.sandwich.koan.ui.AbstractSuitePresenter;
public class AbstractSuitePresenterTest extends CommandLineTestCase {
@Test
public void testForwardingOneHundredPercentSuccess() throws Exception {
final int state[] = new int[]{0};
AbstractSuitePresenter presenter = new AbstractSuitePresenter() {
public void displayAllSuccess(KoanSuiteResult result) {
assertEquals(0, state[0]);
state[0] = 1;
}
public void displayChart(KoanSuiteResult result) {
assertEquals(1, state[0]);
state[0] = 2;
}
public void displayPassingFailing(KoanSuiteResult result) {
assertEquals(2, state[0]);
state[0] = 3;
}
public void displayHeader(KoanSuiteResult result) {
assertEquals(3, state[0]);
state[0] = 4;
}
public void displayOneOrMoreFailure(KoanSuiteResult result) {
fail();
}
public void displayError(String error) {
fail();
}
public void displayMessage(String error) {
fail();
}
public void clearMessages() {
fail();
}
};
KoanSuiteResult kr = new KoanResultBuilder().build();
presenter.displayResult(kr);
assertEquals(4, state[0]);
}
@Test
public void testForwardingOneOrMoreFails() throws Exception {
final int state[] = new int[]{0};
AbstractSuitePresenter presenter = new AbstractSuitePresenter() {
public void displayOneOrMoreFailure(KoanSuiteResult result) {
assertEquals(0, state[0]);
state[0] = 1;
}
public void displayChart(KoanSuiteResult result) {
assertEquals(1, state[0]);
state[0] = 2;
}
public void displayPassingFailing(KoanSuiteResult result) {
assertEquals(2, state[0]);
state[0] = 3;
}
public void displayHeader(KoanSuiteResult result) {
assertEquals(3, state[0]);
state[0] = 4;
}
public void displayAllSuccess(KoanSuiteResult result) {
fail();
}
public void displayError(String error) {
fail();
}
public void displayMessage(String error) {
fail();
}
public void clearMessages() {
fail();
}
};
KoanSuiteResult kr = new KoanResultBuilder().remainingCases(Arrays.asList(OneFailingKoan.class.getSimpleName())
).methodResult(new KoanMethodResult(KoanMethod.getInstance("", OneFailingKoan.class.getDeclaredMethods()[0]),
"", "")).build();
presenter.displayResult(kr);
assertEquals(4, state[0]);
}
}