package org.ovirt.engine.core.bll; import static org.hamcrest.CoreMatchers.both; import static org.hamcrest.CoreMatchers.hasItem; import static org.junit.Assert.assertThat; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.replacements; import org.junit.Test; import org.ovirt.engine.core.common.errors.EngineMessage; public class ValidationResultTest { /** * Some message to use with the tests, we don't care what it actually is. */ private static final EngineMessage ERROR = EngineMessage.values()[0]; private static final String REPLACEMENT = "replacement"; private static final String OTHER_REPLACEMENT = "other_replacement"; private final String[] variableReplacements = new String[] { "a", "b" }; @Test public void invalidWhenConditionOccurs() throws Exception { assertThat(ValidationResult.failWith(ERROR).when(true), failsWith(ERROR)); } @Test public void validWhenConditionDoesntOccur() throws Exception { assertThat(ValidationResult.failWith(ERROR).when(false), isValid()); } @Test public void validUnlessConditionOccurs() throws Exception { assertThat(ValidationResult.failWith(ERROR).unless(true), isValid()); } @Test public void invalidUnlessConditionDoesntOccur() throws Exception { assertThat(ValidationResult.failWith(ERROR).unless(false), failsWith(ERROR)); } @Test public void invalidWhenConditionDoesntOccurWithSingleReplacement() throws Exception { assertThat(ValidationResult.failWith(ERROR, REPLACEMENT).when(true), both(failsWith(ERROR)).and(replacements(hasItem(REPLACEMENT)))); } @Test public void invalidWhenConditionDoesntOccurWithMultipleReplacements() throws Exception { assertThat(ValidationResult.failWith(ERROR, REPLACEMENT, OTHER_REPLACEMENT).when(true), both(failsWith(ERROR)).and(replacements(hasItem(REPLACEMENT))) .and(replacements(hasItem(OTHER_REPLACEMENT)))); } @Test public void invalidWhenConditionOccursWithVariableReplacements() throws Exception { assertThat(ValidationResult.failWith(ERROR, variableReplacements).when(true), failsWith(ERROR, variableReplacements)); } @Test public void validWhenConditionDoesntOccurWithVariableReplacements() throws Exception { assertThat(ValidationResult.failWith(ERROR, variableReplacements).when(false), isValid()); } @Test public void validUnlessConditionOccursWithVariableReplacements() throws Exception { assertThat(ValidationResult.failWith(ERROR, variableReplacements).unless(true), isValid()); } @Test public void invalidUnlessConditionDoesntOccurWithVariableReplacements() throws Exception { assertThat(ValidationResult.failWith(ERROR, variableReplacements).unless(false), failsWith(ERROR, variableReplacements)); } @Test public void invalidUnlessConditionDoesntOccurWithVariableReplacements2() throws Exception { assertThat(ValidationResult.failWith(ERROR, variableReplacements).unless(false), failsWith(ERROR, variableReplacements)); } }