package dk.kb.yggdrasil.preservation;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import dk.kb.yggdrasil.preservation.PreservationState;
/** Unit-tests for the State enum class. */
@RunWith(JUnit4.class)
public class StateTest {
@Test
public void testIsOkState() {
PreservationState okState = PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY;
PreservationState failState = PreservationState.PRESERVATION_METADATA_PACKAGED_FAILURE;
Assert.assertTrue(okState.isOkState());
Assert.assertFalse(failState.isOkState());
}
@Test
public void testGetFailStates() {
PreservationState okState = PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY;
PreservationState failState = PreservationState.PRESERVATION_METADATA_PACKAGED_FAILURE;
Set<PreservationState> failstates = PreservationState.getFailStates();
Assert.assertFalse(failstates.contains(okState));
Assert.assertTrue(failstates.contains(failState));
}
@Test
public void testIsValidStateChange() {
PreservationState state1 = PreservationState.PRESERVATION_METADATA_PACKAGED_FAILURE;
PreservationState state2 = PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY;
PreservationState state3 = PreservationState.PRESERVATION_PACKAGE_UPLOAD_SUCCESS;
// invalid to go to from a failstate to another state
assertFalse(PreservationState.isValidStateChange(state1, state2));
// valid to go to from okstate to the same state
assertTrue(PreservationState.isValidStateChange(state2, state2));
// valid to go to from okstate to a later state
assertTrue(PreservationState.isValidStateChange(state2, state3));
// invalid to go to from a okstate to an earlier state
assertFalse(PreservationState.isValidStateChange(state3, state1));
}
@Test
public void testHasState() {
PreservationState state1 = PreservationState.PRESERVATION_METADATA_PACKAGED_FAILURE;
PreservationState state2 = PreservationState.PRESERVATION_METADATA_PACKAGED_SUCCESSFULLY;
assertTrue(state1.hasState(state1));
assertFalse(state1.hasState(state2));
}
}