main.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*
  2. * main.c
  3. *
  4. * Created on: 16.11.2011
  5. * Author: showcase
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <assert.h>
  10. #include <string.h>
  11. #include "Timer.h"
  12. #include "DummyTimer.h"
  13. #include "Test_HierarchyStatemachine.h"
  14. /*@DTestSuite: Hierachy Statechart Test (Test_Hierarchy.sct) */
  15. #define MAXEVENTSPERTYPE 4
  16. const char* stateName[6] = {"State1", "State2", "State3", "State4", "State5", "State6"};
  17. void setupStatemachine(Test_HierarchyStatemachine* machine, Timer* dummyTimer, EventPool* eventPool)
  18. {
  19. /* set up dummy Timer */
  20. dummyTimer_init(dummyTimer);
  21. /* Set up Event Pool */
  22. eventPool_init_heap(eventPool, event_last, MAXEVENTSPERTYPE);
  23. /* initialize state machine */
  24. test_HierarchyStatemachine_init(machine, dummyTimer, eventPool);
  25. }
  26. void teardownStatemachine(Test_HierarchyStatemachine* machine, Timer* dummyTimer, EventPool* eventPool)
  27. {
  28. test_HierarchyStatemachine_exit(machine);
  29. timer_exit(dummyTimer);
  30. eventPool_exit(eventPool);
  31. }
  32. /*@Test: test_default_var1 test behavior of var1 in default interface */
  33. int test_initialization()
  34. {
  35. return 0;
  36. }
  37. /*@Test: test_state9_state10_transition test behavior of var1 in default and other interface */
  38. int test_state9_state10_transition()
  39. {
  40. Test_HierarchyStatemachine machine;
  41. Timer dummyTimer;
  42. EventPool eventPool;
  43. /*@Desc: setup initial statemachine */
  44. setupStatemachine(&machine, &dummyTimer, &eventPool);
  45. /*@Desc: run the statechart for the first time (initially) */
  46. test_HierarchyStatemachine_runCycle(&machine);
  47. /*@Desc: check wether state is initial state (State9) */
  48. printf("%s\n", stateName[statemachineBase_getState((StatemachineBase*)&machine, 0)]);
  49. assert( strcmp(stateName[statemachineBase_getState((StatemachineBase*)&machine, 0)], "State9") == 0);
  50. /*@Desc: teardown statemachine */
  51. teardownStatemachine(&machine, &dummyTimer, &eventPool);
  52. return 0;
  53. }
  54. /*@Test: test_default_var1 test behavior of var1 in default and other interface */
  55. int test_state1_state2_back_transition()
  56. {
  57. Test_HierarchyStatemachine machine;
  58. Timer dummyTimer;
  59. EventPool eventPool;
  60. /*@Desc: setup initial statemachine */
  61. setupStatemachine(&machine, &dummyTimer, &eventPool);
  62. /*@Desc: run an explicit cycle - without any waiting event (for initialization) */
  63. test_HierarchyStatemachine_runCycle(&machine);
  64. /*@Desc: */
  65. /*@Desc: teardown statemachine */
  66. teardownStatemachine(&machine, &dummyTimer, &eventPool);
  67. return 0;
  68. }
  69. int main(int argc, char** argv)
  70. {
  71. if (argc != 2)
  72. return -1;
  73. switch (atoi(argv[1])) {
  74. case 1:
  75. return test_state9_state10_transition();
  76. case 2:
  77. return test_state1_state2_back_transition();
  78. }
  79. return -1;
  80. }