@@ -144,6 +144,40 @@ test("transitions", function() {
144144
145145//-----------------------------------------------------------------------------
146146
147+ test ( "transitions with multiple from states" , function ( ) {
148+
149+ var fsm = StateMachine . create ( {
150+ events : [
151+ { name : 'start' , from : 'none' , to : 'green' } ,
152+ { name : 'warn' , from : [ 'green' , 'red' ] , to : 'yellow' } ,
153+ { name : 'panic' , from : [ 'green' , 'yellow' ] , to : 'red' } ,
154+ { name : 'clear' , from : [ 'red' , 'yellow' ] , to : 'green' }
155+ ]
156+ } ) ;
157+
158+ equal ( fsm . current , 'none' , 'current state should be none' ) ;
159+ deepEqual ( fsm . transitions ( ) , [ 'start' ] , 'current transition(s) should be start' ) ;
160+
161+ fsm . start ( ) ;
162+ equal ( fsm . current , 'green' , 'current state should be green' ) ;
163+ deepEqual ( fsm . transitions ( ) , [ 'warn' , 'panic' ] , 'current transition(s) should be warn and panic' ) ;
164+
165+ fsm . warn ( ) ;
166+ equal ( fsm . current , 'yellow' , 'current state should be yellow' ) ;
167+ deepEqual ( fsm . transitions ( ) , [ 'panic' , 'clear' ] , 'current transition(s) should be panic and clear' ) ;
168+
169+ fsm . panic ( ) ;
170+ equal ( fsm . current , 'red' , 'current state should be red' ) ;
171+ deepEqual ( fsm . transitions ( ) , [ 'warn' , 'clear' ] , 'current transition(s) should be warn and clear' ) ;
172+
173+ fsm . clear ( ) ;
174+ equal ( fsm . current , 'green' , 'current state should be green' ) ;
175+ deepEqual ( fsm . transitions ( ) , [ 'warn' , 'panic' ] , 'current transition(s) should be warn and panic' ) ;
176+
177+ } ) ;
178+
179+ //-----------------------------------------------------------------------------
180+
147181test ( "isFinished" , function ( ) {
148182
149183 var fsm = StateMachine . create ( {
0 commit comments