Просмотр исходного кода

fixed bug 728 : FlowOptimizer fails on histories without initial step (outgoing transition)

terfloth@itemis.de 13 лет назад
Родитель
Сommit
45fc4c1386

+ 58 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/HistoryWithoutInitialStep/HistoryWithoutInitialStep.cc

@@ -0,0 +1,58 @@
+/**
+* Copyright (c) 2012 committers of YAKINDU and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*     committers of YAKINDU - initial API and implementation
+*/
+#include <string>
+#include "gtest/gtest.h"
+#include "HistoryWithoutInitialStep.h"
+
+TEST(StatemachineTest, enterThroughInitialEntry) {
+	HistoryWithoutInitialStep handle;
+	historyWithoutInitialStep_init(&handle);
+	historyWithoutInitialStep_enter(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_A));
+	historyWithoutInitialStepIface_raise_e1(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_C));
+	historyWithoutInitialStepIface_raise_e2(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_D));
+}
+TEST(StatemachineTest, enterCThroughHistory) {
+	HistoryWithoutInitialStep handle;
+	historyWithoutInitialStep_init(&handle);
+	historyWithoutInitialStep_enter(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_A));
+	historyWithoutInitialStepIface_raise_e1(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_C));
+	historyWithoutInitialStepIface_raise_e1(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_A));
+	historyWithoutInitialStepIface_raise_e2(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_C));
+}
+TEST(StatemachineTest, enterDThroughHistory) {
+	HistoryWithoutInitialStep handle;
+	historyWithoutInitialStep_init(&handle);
+	historyWithoutInitialStep_enter(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_A));
+	historyWithoutInitialStepIface_raise_e1(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	historyWithoutInitialStepIface_raise_e2(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_D));
+	historyWithoutInitialStepIface_raise_e1(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_A));
+	historyWithoutInitialStepIface_raise_e2(&handle);
+	historyWithoutInitialStep_runCycle(&handle);
+	EXPECT_TRUE(historyWithoutInitialStep_isActive(&handle, HistoryWithoutInitialStep_main_region_B_r1_D));
+}

+ 8 - 0
test-plugins/org.yakindu.sct.generator.c.test/gtests/HistoryWithoutInitialStep/HistoryWithoutInitialStep.sgen

@@ -0,0 +1,8 @@
+GeneratorModel for yakindu::c {
+	statechart HistoryWithoutInitialStep {
+		feature Outlet {
+			targetProject = "gtests"
+			targetFolder = "HistoryWithoutInitialStep"
+		}
+	}
+}

+ 2 - 1
test-plugins/org.yakindu.sct.generator.c.test/src-gen/org/yakindu/sct/generator/c/test/AllTests.java

@@ -18,7 +18,8 @@ import org.junit.runners.Suite.SuiteClasses;
 		BitExpressions.class, BooleanExpressions.class, CKeywords.class,
 		Declarations.class, Choice.class, DeepHistory.class,
 		ExitOnSelfTransition.class, Guard.class, GuardedEntry.class,
-		GuardedExit.class, IntegerExpressions.class, InEventLifeCycle.class,
+		GuardedExit.class, HistoryWithoutInitialStep.class,
+		IntegerExpressions.class, InEventLifeCycle.class,
 		InternalEventLifeCycle.class, OutEventLifeCycle.class,
 		Parenthesis.class, PriorityValues.class, RaiseEvent.class,
 		SameNameDifferentRegion.class, ShallowHistory.class,