@@ -34,12 +34,12 @@ test('turnOrder', () => {
3434 expect ( state . ctx . currentPlayer ) . toBe ( 'any' ) ;
3535
3636 flow = FlowWithPhases ( {
37- phases : [ { name : 'A' , turnOrder : { first : ( ) => '10' , next : ( ) => '3' } } ] ,
37+ phases : [ { name : 'A' , turnOrder : { first : ( ) => 9 , next : ( ) => 3 } } ] ,
3838 } ) ;
3939
4040 state = { ctx : flow . ctx ( 10 ) } ;
4141 state = flow . init ( state ) ;
42- expect ( state . ctx . currentPlayer ) . toBe ( '10 ' ) ;
42+ expect ( state . ctx . currentPlayer ) . toBe ( '9 ' ) ;
4343 state = flow . processGameEvent ( state , { type : 'endTurn' } ) ;
4444 expect ( state . ctx . currentPlayer ) . toBe ( '3' ) ;
4545} ) ;
@@ -59,10 +59,12 @@ test('passing', () => {
5959 state = reducer ( state , makeMove ( 'pass' ) ) ;
6060 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
6161 expect ( state . G . allPassed ) . toBe ( undefined ) ;
62+ expect ( state . G . passOrder ) . toEqual ( [ '0' ] ) ;
6263
6364 expect ( state . ctx . currentPlayer ) . toBe ( '1' ) ;
6465 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
6566 expect ( state . G . allPassed ) . toBe ( undefined ) ;
67+ expect ( state . G . passOrder ) . toEqual ( [ '0' ] ) ;
6668
6769 expect ( state . ctx . currentPlayer ) . toBe ( '2' ) ;
6870 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
@@ -72,6 +74,7 @@ test('passing', () => {
7274 state = reducer ( state , makeMove ( 'pass' ) ) ;
7375 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
7476 expect ( state . G . allPassed ) . toBe ( undefined ) ;
77+ expect ( state . G . passOrder ) . toEqual ( [ '0' , '1' ] ) ;
7578
7679 expect ( state . ctx . currentPlayer ) . toBe ( '2' ) ;
7780 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
@@ -80,10 +83,10 @@ test('passing', () => {
8083 expect ( state . ctx . currentPlayer ) . toBe ( '2' ) ;
8184 state = reducer ( state , makeMove ( 'pass' ) ) ;
8285 expect ( state . G . allPassed ) . toBe ( true ) ;
83-
8486 expect ( state . ctx . currentPlayer ) . toBe ( '2' ) ;
8587 state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
8688 expect ( state . G . allPassed ) . toBe ( true ) ;
89+ expect ( state . G . passOrder ) . toEqual ( [ '0' , '1' , '2' ] ) ;
8790} ) ;
8891
8992test ( 'end game after everyone passes' , ( ) => {
@@ -144,3 +147,23 @@ test('override', () => {
144147 state = flow . processGameEvent ( state , { type : 'endTurn' } ) ;
145148 expect ( state . ctx . currentPlayer ) . toBe ( '5' ) ;
146149} ) ;
150+
151+ test ( 'custom order' , ( ) => {
152+ const game = Game ( { } ) ;
153+ const reducer = createGameReducer ( { game, numPlayers : 3 } ) ;
154+
155+ let state = reducer ( undefined , { type : 'init' } ) ;
156+
157+ state . ctx = {
158+ ...state . ctx ,
159+ currentPlayer : '2' ,
160+ playOrder : [ 2 , 0 , 1 ] ,
161+ } ;
162+
163+ state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
164+ expect ( state . ctx . currentPlayer ) . toBe ( '0' ) ;
165+ state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
166+ expect ( state . ctx . currentPlayer ) . toBe ( '1' ) ;
167+ state = reducer ( state , gameEvent ( 'endTurn' ) ) ;
168+ expect ( state . ctx . currentPlayer ) . toBe ( '2' ) ;
169+ } ) ;
0 commit comments