1 package com.atlassian.plugin.manager;
2
3 import static com.atlassian.plugin.manager.StateTracker.State.*;
4 import static com.atlassian.plugin.manager.StateTracker.State.SHUTDOWN;
5 import static com.atlassian.plugin.manager.StateTracker.State.SHUTTING_DOWN;
6 import static com.atlassian.plugin.manager.StateTracker.State.STARTED;
7 import static com.atlassian.plugin.manager.StateTracker.State.STARTING;
8
9 import com.atlassian.plugin.manager.StateTracker.State;
10 import com.atlassian.plugin.manager.StateTracker;
11
12 import junit.framework.TestCase;
13
14 public class TestStateTracker extends TestCase
15 {
16 public void testStandardTransitions() throws Exception
17 {
18 new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN).setState(SHUTDOWN).setState(STARTING);
19 }
20
21 public void testIllegalNotStartedTransitions() throws Exception
22 {
23 assertIllegalState(new StateTracker(), NOT_STARTED, STARTED, SHUTDOWN);
24 }
25
26 public void testIllegalStartingTransitions() throws Exception
27 {
28 assertIllegalState(new StateTracker().setState(STARTING), NOT_STARTED, STARTING, SHUTTING_DOWN, SHUTDOWN);
29 }
30
31 public void testIllegalStartedTransitions() throws Exception
32 {
33 assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED), STARTED, NOT_STARTED, STARTING, SHUTDOWN);
34 }
35
36 public void testIllegalWarmRestartingTransitions() throws Exception
37 {
38 assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(WARM_RESTARTING), NOT_STARTED, STARTING, SHUTDOWN, SHUTTING_DOWN);
39 }
40
41 public void testIllegalWarmRestartTransitions() throws Exception
42 {
43 assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(WARM_RESTARTING).setState(STARTED), STARTED, NOT_STARTED, STARTING, SHUTDOWN);
44 }
45
46 public void testIllegalShuttingDownTransitions() throws Exception
47 {
48 assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN), NOT_STARTED, STARTING, STARTED,
49 SHUTTING_DOWN);
50 }
51
52 public void testIllegalShutdownTransitions() throws Exception
53 {
54 assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN).setState(SHUTDOWN), NOT_STARTED, STARTED,
55 SHUTTING_DOWN, SHUTDOWN);
56 }
57
58 void assertIllegalState(final StateTracker tracker, final State... states)
59 {
60 for (final State state : states)
61 {
62 try
63 {
64 final State oldState = tracker.get();
65 tracker.setState(state);
66 fail(oldState + " should not be allowed to transition to: " + state);
67 }
68 catch (final IllegalStateException expected)
69 {}
70 }
71 }
72 }