package hudson.plugins.cigame.rules.build;
import hudson.model.Result;
import hudson.plugins.cigame.model.RuleResult;
import hudson.plugins.cigame.rules.build.BuildResultRule;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
public class BuildResultRuleTest {
@Test
public void testFirstBuildSuccess() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.SUCCESS, null);
assertThat("Successful build should give 100 results", results.getPoints(), is((double) 100));
}
@Test
public void testFirstBuildFailed() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.FAILURE, null);
assertThat("Failed build should give -100 results", results.getPoints(), is((double) -100));
}
@Test
public void testFirstBuildWasUnstable() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.UNSTABLE, null);
assertNull("Unstable build should return null", results);
}
@Test
public void testLastBuildWasUnstable() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.SUCCESS, Result.UNSTABLE);
assertThat("Fixed build should give 100 results", results.getPoints(), is((double)100));
}
@Test
public void testContinuedBuildFailure() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.FAILURE, Result.FAILURE);
assertNull("No change in failure result should return null", results);
}
@Test
public void testContinuedUnstableBuild() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.UNSTABLE, Result.UNSTABLE);
assertNull("No change in usntable result should return null", results);
}
@Test
public void testLastBuildWasAborted() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.FAILURE, Result.ABORTED);
assertNull("Previous aborted build should return null", results);
}
@Test
public void testContinuedBuildSuccess() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.SUCCESS, Result.SUCCESS);
assertThat("No change in result should give 100 results", results.getPoints(), is((double)100));
}
@Test
public void testCurrentBuildWasUnstable() {
BuildResultRule rule = new BuildResultRule(100, -100);
RuleResult results = rule.evaluate(Result.UNSTABLE, Result.SUCCESS);
assertNull("Unstable builds should return null", results);
}
}