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;
}
}