From b79413bc72d00643713ad3588c6b57b32f362a01 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Sun, 20 Nov 2016 09:43:15 +0000 Subject: [PATCH] Add tck tests - SimpleMachine tests for factory and builder. - Relates to #278 --- .../buildtests/tck/AbstractTckTests.java | 2 +- .../javaconfig/AnnotationFactoryTckTests.java | 72 +++++++++++++++++++ .../tck/javaconfig/BuilderTckTests.java | 49 +++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/AnnotationFactoryTckTests.java create mode 100644 spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/BuilderTckTests.java diff --git a/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/AbstractTckTests.java b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/AbstractTckTests.java index 5f9a104c..34998096 100644 --- a/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/AbstractTckTests.java +++ b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/AbstractTckTests.java @@ -85,5 +85,5 @@ public abstract class AbstractTckTests { * * @return StateMachine for SimpleMachine */ - protected abstract StateMachine getSimpleMachine(); + protected abstract StateMachine getSimpleMachine() throws Exception; } diff --git a/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/AnnotationFactoryTckTests.java b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/AnnotationFactoryTckTests.java new file mode 100644 index 00000000..965d028a --- /dev/null +++ b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/AnnotationFactoryTckTests.java @@ -0,0 +1,72 @@ +/* + * Copyright 2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.statemachine.buildtests.tck.javaconfig; + +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.buildtests.tck.AbstractTckTests; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.StateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +/** + * Tck tests for annotation factory based javaconfig. + * + * @author Janne Valkealahti + * + */ +public class AnnotationFactoryTckTests extends AbstractTckTests { + + @Override + protected AnnotationConfigApplicationContext buildContext() { + return new AnnotationConfigApplicationContext(); + } + + @Override + protected StateMachine getSimpleMachine() { + context.register(SimpleMachineConfig.class); + context.refresh(); + return getStateMachineFactoryFromContext().getStateMachine(); + } + + @Configuration + @EnableStateMachineFactory + static class SimpleMachineConfig extends StateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states + .withStates() + .initial("S1") + .state("S2") + .state("S3"); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source("S1").target("S2") + .event("E1") + .and() + .withExternal() + .source("S2").target("S3") + .event("E2"); + } + } +} diff --git a/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/BuilderTckTests.java b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/BuilderTckTests.java new file mode 100644 index 00000000..5f4b93b5 --- /dev/null +++ b/spring-statemachine-build-tests/src/test/java/org/springframework/statemachine/buildtests/tck/javaconfig/BuilderTckTests.java @@ -0,0 +1,49 @@ +/* + * Copyright 2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.statemachine.buildtests.tck.javaconfig; + +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.buildtests.tck.AbstractTckTests; +import org.springframework.statemachine.config.StateMachineBuilder; +import org.springframework.statemachine.config.StateMachineBuilder.Builder; + +/** + * Tck tests for builder based javaconfig. + * + * @author Janne Valkealahti + * + */ +public class BuilderTckTests extends AbstractTckTests { + + @Override + protected StateMachine getSimpleMachine() throws Exception { + Builder builder = StateMachineBuilder.builder(); + builder.configureStates() + .withStates() + .initial("S1") + .state("S2") + .state("S3"); + builder.configureTransitions() + .withExternal() + .source("S1").target("S2") + .event("E1") + .and() + .withExternal() + .source("S2").target("S3") + .event("E2"); + return builder.build(); + } +}