public static class TestLifecycleEventHandler implements LifecycleEventHandler {
static List<LifecycleEvent> eventList = new ArrayList<>();
@Override
public void onEvent(LifecycleEvent event) {
eventList.add(event);
}
}
@Test
public void test_lifecycle_event() throws VerificationException {
@LifecycleRegistry({ CustomerObject.class, TestLifecycleEventHandler.class })
@StateMachineBuilder
class Registry extends AbsStateMachineRegistry {
protected Registry() throws VerificationException {}
}
new Registry();
assertEquals(0, TestLifecycleEventHandler.eventList.size());
final CustomerObject customer = new CustomerObject();
assertEquals(0, TestLifecycleEventHandler.eventList.size());
customer.confirm();
{
assertEquals(1, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Draft.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class, CustomerStateMachine.Transitions.Confirm.class);
}
customer.suspend();
{
assertEquals(2, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceSuspended.class,
CustomerStateMachine.States.Confirmed.Transitions.Suspend.class);
}
customer.resume();
{
assertEquals(3, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceSuspended.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class, CustomerStateMachine.States.Confirmed.Transitions.Resume.class);
}
customer.terminateService();
{
assertEquals(4, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceExpired.class,
CustomerStateMachine.States.Confirmed.Transitions.TerminateService.class);
}
customer.renew();
{
assertEquals(5, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceExpired.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class, CustomerStateMachine.States.Confirmed.Transitions.Renew.class);
}
customer.terminateService();
{
assertEquals(6, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.InService.class,
CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceExpired.class,
CustomerStateMachine.States.Confirmed.Transitions.TerminateService.class);
}
customer.abandon();
{
assertEquals(7, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Confirmed.ConfirmedStates.ServiceExpired.class,
CustomerStateMachine.States.Recycled.class, CustomerStateMachine.States.Confirmed.Transitions.Abandon.class);
}
customer.putBack();
{
assertEquals(8, TestLifecycleEventHandler.eventList.size());
LifecycleEvent lifecycleEvent = TestLifecycleEventHandler.eventList.get(TestLifecycleEventHandler.eventList.size() - 1);
assertLifecycleEvent(customer, lifecycleEvent, CustomerStateMachine.States.Recycled.class, CustomerStateMachine.States.Draft.class,
CustomerStateMachine.Transitions.PutBack.class);
}
try {
customer.renew();
} catch (LifecycleException e) {
assertEquals(8, TestLifecycleEventHandler.eventList.size());
}
}
private void assertLifecycleEvent(CustomerObject reactiveObject, LifecycleEvent lifecycleEvent, Class<?> fromClass, Class<?> toClass, Class<?> transition) {
assertEquals(reactiveObject, lifecycleEvent.getReactiveObject());
assertEquals(fromClass.getSimpleName(), lifecycleEvent.fromState());
assertEquals(toClass.getSimpleName(), lifecycleEvent.toState());
assertEquals(transition.getSimpleName(), lifecycleEvent.transition());
assertEquals(TransitionTypeEnum.Common, lifecycleEvent.transitionType());
}
前文:生命周期组件框架——关系型状态及服务
相关推荐
android activity生命周期示例代码。里面包含activity执行finish之后的生命周期,旋转的生命周期。切换以及返回activity的生命周期。我的博客地址:http://blog.csdn.net/qq_16064871
生命周期钩子的案例示例代码,主要讲解了生命周期的原理以及实现轮播图的案例,感兴趣的可以拿来参考一下,如有错漏请私信,会及时修改。
主要讲讲: 何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。
fragment 代码示例
手动创建生命周期钩子函数 beforeEnter 示例
第12章(\C12) 示例描述:本章介绍WPF中的依赖属性和事件路由特性。... StackPanelLoadedDemo WPF中元素的生命周期事件演示。 UnderstandingDP 理解依赖属性。 UnderstandRoutedEvent 理解路由事件。
演示Android activity的小工程,对应博文地址:http://blog.csdn.net/djstavaV/article/details/48809135
微软软件开发生命周期管理最佳实践系列课程(1):配置管理
本书展示了如何通过Fit解释业务规则,利用具体示例予以表达,并将示例组织到测试表格里,将测试驱动贯穿于整个软件开发生命周期中。
IBM的方法:SOA治理和管理方法SOA开发生命周期中的治理场景服务标识示例服务创建示例服务测试示例服务版本管理和更改管理示例服务管理示例服务安全性示例结束语参考资料您需要准备适当的治理流程模型,以有效地了解...
NULL 博文链接:https://selvemen.iteye.com/blog/457225
Ebonite是一个机器学习生命周期框架。 它使您可以保留模型并再现它们(作为服务或一般而言)。 安装 点安装ebonite 快速开始 首先,创建一个Ebonite客户。 从硬质合金进口硬质合金 ebnt = Ebonite.local...
深入理解Activity生命周期示例代码.
第4章 ASP.NET的网页代码模型及生命周期 从本章开始,就进入了ASP.NET应用程序开发的世界。在了解了C#的结构,以及面向对象的概念后,就可以从面向对象的思想开发ASP.NET应用程序。在ASP.NET中,能够使用面向对象的...
Acitvity 生命周期代码示例,详细描述activity三种状态变化
内含ppt,视频,文档,示例!!!!!!!
在组件化的框架中,比如Angular、React或Vue,都为组件定义了生命周期这个概念,每个组件实例在被创建时都要经过一系列的初始化过程,例如:需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM ...
【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 ) https://hanshuliang.blog.csdn.net/article/details/129374914 一、Activity ...