package jetbrains.mps.lang.test.util; /*Generated by MPS */ import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.Level; import org.jetbrains.annotations.NotNull; public class TestInProcessRunState implements Comparable<TestInProcessRunState> { private static final Logger LOG = LogManager.getLogger(TestInProcessRunState.class); private final AtomicReference<RunStateEnum> myValue; public TestInProcessRunState() { myValue = new AtomicReference<RunStateEnum>(RunStateEnum.IDLE); } public RunStateEnum get() { return myValue.get(); } public void set(RunStateEnum value) { myValue.set(value); } public boolean advance(RunStateEnum oldValue, RunStateEnum value) { return myValue.compareAndSet(oldValue, value); } public void reset() { if (!(isTerminated())) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Run was not terminated properly"); } } myValue.set(RunStateEnum.IDLE); } private int ordinal() { return myValue.get().ordinal(); } public boolean greater(RunStateEnum another) { return this.ordinal() > another.ordinal(); } public boolean greater(TestInProcessRunState another) { return this.ordinal() > another.ordinal(); } @Override public int compareTo(@NotNull TestInProcessRunState another) { return myValue.get().compareTo(another.myValue.get()); } public boolean isInitialized() { return myValue.get() == RunStateEnum.INITIALIZED; } public boolean isReady() { return myValue.get() == RunStateEnum.READYTOEXECUTE; } public boolean isRunning() { return myValue.get() == RunStateEnum.RUNNING; } public boolean isTerminating() { return myValue.get() == RunStateEnum.TERMINATING; } public boolean isTerminated() { return myValue.get() == RunStateEnum.TERMINATED; } }