change: 代码整理、定向切换时校验当前状态.
This commit is contained in:
@@ -22,20 +22,23 @@ public class MachineTest {
|
||||
public void testStandardStateMachine() {
|
||||
StateMachine<PrinterState> stateMachine = StateMachineBuilder.from(PrinterState.class)
|
||||
.async(false)
|
||||
.states(PrinterState.values())
|
||||
.executor(Executors.newFixedThreadPool(16))
|
||||
.whenLeave(PrinterState.PRINTING, h -> {
|
||||
System.out.println(Thread.currentThread().getName() + ": leave PRINTING");
|
||||
})
|
||||
.states(PrinterState.values())
|
||||
.executor(Executors.newFixedThreadPool(16))
|
||||
.whenEntry(PrinterState.SCANNING, h -> {
|
||||
System.out.println(Thread.currentThread().getName() + ": " + h.getFrom() + " >>> " + h.getTo());
|
||||
}, false)
|
||||
})
|
||||
.whenEntry(PrinterState.PRINTING, h -> {
|
||||
System.out.println(Thread.currentThread().getName() + ": " + h.getFrom() + " >>> " + h.getTo());
|
||||
}, false, Executors.newFixedThreadPool(1))
|
||||
})
|
||||
.exchange(PrinterState.STOPPED, PrinterState.IDLE, h -> {
|
||||
System.out.println(Thread.currentThread().getName() + ": " + h.getFrom() + " >>> " + h.getTo());
|
||||
})
|
||||
.build();
|
||||
|
||||
stateMachine.switchTo(PrinterState.PRINTING);
|
||||
stateMachine.switchNext();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.serliunx.statemanagement;
|
||||
|
||||
import com.serliunx.statemanagement.manager.DefaultUnidirectionalStateManager;
|
||||
import com.serliunx.statemanagement.manager.UnidirectionalStateManager;
|
||||
import com.serliunx.statemanagement.support.PrinterState;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -15,6 +18,10 @@ public class ManagerTest {
|
||||
|
||||
@Test
|
||||
public void testUnidirectionalStateManager() {
|
||||
UnidirectionalStateManager<PrinterState> unidirectionalStateManager =
|
||||
new DefaultUnidirectionalStateManager<>(PrinterState.values());
|
||||
|
||||
System.out.println(unidirectionalStateManager.switchTo(PrinterState.IDLE));
|
||||
System.out.println(unidirectionalStateManager.switchTo(PrinterState.SCANNING));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user