@@ -79,6 +79,9 @@ test("hooks are called when appropriate for multiple 'from' and 'to' transitions
7979
8080 var called = [ ] ;
8181
82+ // generic state hook
83+ fsm . onchangestate = function ( from , to ) { called . push ( 'onchange from ' + from + ' to ' + to ) ; } ;
84+
8285 // state hooks
8386 fsm . onenterhungry = function ( ) { called . push ( 'onenterhungry' ) ; } ;
8487 fsm . onleavehungry = function ( ) { called . push ( 'onleavehungry' ) ; } ;
@@ -97,19 +100,19 @@ test("hooks are called when appropriate for multiple 'from' and 'to' transitions
97100
98101 called = [ ] ;
99102 fsm . eat ( ) ;
100- deepEqual ( called , [ 'onbeforeeat' , 'onleavehungry' , 'onentersatisfied' , 'onaftereat' ] ) ;
103+ deepEqual ( called , [ 'onbeforeeat' , 'onleavehungry' , 'onentersatisfied' , 'onchange from hungry to satisfied' , ' onaftereat'] ) ;
101104
102105 called = [ ] ;
103106 fsm . eat ( ) ;
104- deepEqual ( called , [ 'onbeforeeat' , 'onleavesatisfied' , 'onenterfull' , 'onaftereat' ] ) ;
107+ deepEqual ( called , [ 'onbeforeeat' , 'onleavesatisfied' , 'onenterfull' , 'onchange from satisfied to full' , ' onaftereat'] ) ;
105108
106109 called = [ ] ;
107110 fsm . eat ( ) ;
108- deepEqual ( called , [ 'onbeforeeat' , 'onleavefull' , 'onentersick' , 'onaftereat' ] ) ;
111+ deepEqual ( called , [ 'onbeforeeat' , 'onleavefull' , 'onentersick' , 'onchange from full to sick' , ' onaftereat'] ) ;
109112
110113 called = [ ] ;
111114 fsm . rest ( ) ;
112- deepEqual ( called , [ 'onbeforerest' , 'onleavesick' , 'onenterhungry' , 'onafterrest' ] ) ;
115+ deepEqual ( called , [ 'onbeforerest' , 'onleavesick' , 'onenterhungry' , 'onchange from sick to hungry' , ' onafterrest'] ) ;
113116
114117} ) ;
115118
@@ -124,6 +127,9 @@ test("hooks are called when appropriate for prototype based state machine", func
124127
125128 myFSM . prototype = {
126129
130+ // generic state hook
131+ onchangestate : function ( from , to ) { this . called . push ( 'onchange from ' + from + ' to ' + to ) ; } ,
132+
127133 // state hooks
128134 onentergreen : function ( ) { this . called . push ( 'onentergreen' ) ; } ,
129135 onleavegreen : function ( ) { this . called . push ( 'onleavegreen' ) ; } ,
@@ -159,16 +165,16 @@ test("hooks are called when appropriate for prototype based state machine", func
159165 equal ( a . current , 'green' , 'start with correct state' ) ;
160166 equal ( b . current , 'green' , 'start with correct state' ) ;
161167
162- deepEqual ( a . called , [ 'onbeforestartup' , 'onentergreen' , 'onafterstartup' ] ) ;
163- deepEqual ( b . called , [ 'onbeforestartup' , 'onentergreen' , 'onafterstartup' ] ) ;
168+ deepEqual ( a . called , [ 'onbeforestartup' , 'onentergreen' , 'onchange from none to green' , ' onafterstartup'] ) ;
169+ deepEqual ( b . called , [ 'onbeforestartup' , 'onentergreen' , 'onchange from none to green' , ' onafterstartup'] ) ;
164170
165171 a . warn ( ) ;
166172
167173 equal ( a . current , 'yellow' , 'maintain independent current state' ) ;
168174 equal ( b . current , 'green' , 'maintain independent current state' ) ;
169175
170- deepEqual ( a . called , [ 'onbeforestartup' , 'onentergreen' , 'onafterstartup' , 'onbeforewarn' , 'onleavegreen' , 'onenteryellow' , 'onafterwarn' ] ) ;
171- deepEqual ( b . called , [ 'onbeforestartup' , 'onentergreen' , 'onafterstartup' ] ) ;
176+ deepEqual ( a . called , [ 'onbeforestartup' , 'onentergreen' , 'onchange from none to green' , ' onafterstartup', 'onbeforewarn' , 'onleavegreen' , 'onenteryellow' , 'onchange from green to yellow ', 'onafterwarn' ] ) ;
177+ deepEqual ( b . called , [ 'onbeforestartup' , 'onentergreen' , 'onchange from none to green' , ' onafterstartup'] ) ;
172178
173179} ) ;
174180
0 commit comments