@@ -80,8 +80,39 @@ public void test_sequential_match_with_null_initial_state() {
8080 assertEquals (1 , counter .get ());
8181 }
8282
83+ @ Test
84+ public void test_sequential_match_with_differing_list_sizes () {
85+ EnumStateMachine <ZState > esm = new EnumStateMachine <>();
86+ esm .addAll (ZState .class , true , true );
87+
88+ List <ZState > threeStatePattern = Arrays .asList (ZState .One , ZState .Two , ZState .Three );
89+ List <ZState > fourStatePattern = Arrays .asList (ZState .One , ZState .Two , ZState .Three , ZState .Four );
90+
91+ final AtomicInteger counter1 = new AtomicInteger (0 );
92+ final AtomicInteger counter2 = new AtomicInteger (0 );
93+
94+ esm .onSequence (threeStatePattern , pattern -> counter1 .incrementAndGet ());
95+ esm .onSequence (fourStatePattern , pattern -> counter2 .incrementAndGet ());
96+
97+ esm .transition (ZState .One );
98+ esm .transition (ZState .Two );
99+ assertEquals (0 , counter1 .get ());
100+ assertEquals (0 , counter2 .get ());
101+
102+ esm .transition (ZState .Three );
103+ assertEquals (1 , counter1 .get ());
104+ assertEquals (0 , counter2 .get ());
105+
106+ esm .transition (ZState .Four );
107+ assertEquals (1 , counter1 .get ());
108+ assertEquals (1 , counter2 .get ());
109+ }
83110
84111 public enum Color implements State {
85112 Red , Blue , Green , Orange
86113 }
114+
115+ public enum ZState implements State {
116+ One , Two , Three , Four , Five
117+ }
87118}
0 commit comments