import reducers from '../../src/reducers' ; test ( 'reducers' , ( ) => { let state ; state = reducers ( undefined , { } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_LANDSCAPE' , show : false } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'READLS_UPDATESTORE_INIT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '' , opponentName : '' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_SETTINGS_MAIN' , payload : { playerName : '👨' , opponentName : '📱' } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'INIT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'INIT_CORE' , playersTurn : false , cardList : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , gameNumber : - 1 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_END' , payload : { type : null } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'ABORT_ALL' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 0 , opponent : 0 } , list : [ ] , nextPos : { player : 0 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'INIT_CARD' , payload : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'INIT_GAME' , playersTurn : false } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'INIT_STATUS' , payload : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_MULTI_GAME_NUMBER' , n : - 1 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'RESOURCE_PROD' , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_END_MAIN' , payload : { type : null } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_STATUS' , payload : [ { isPlayer : false , statusProp : 'bricks' , diff : 2 , noSound : true } , { isPlayer : false , statusProp : 'gems' , diff : 2 , noSound : true } , { isPlayer : false , statusProp : 'recruits' , diff : 2 , noSound : true } ] } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_STATUS_MAIN' , payload : [ { isPlayer : false , statusProp : 'bricks' , diff : 2 } , { isPlayer : false , statusProp : 'gems' , diff : 2 } , { isPlayer : false , statusProp : 'recruits' , diff : 2 } ] } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CHECK_UNUSABLE' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CHECK_VICTORY' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_UNUSABLE' , unusables : [ 1 , 3 , 4 , 9 ] , usables : [ ] } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DRAW_CARD' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_LOCK' , on : true , locknumber : 1 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DRAW_CARD_CORE' , n : 73 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DRAW_CARD_PRE' , n : 73 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : - 1 , owner : 'common' , unusable : false , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : - 1 , owner : 'common' , unusable : false , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DRAW_CARD_MAIN' , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'AI_PLAY_CARD' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'USE_CARD' , index : 8 , n : 34 , position : 3 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'PLAY_CARD_CORE_GUARDED' , payload : { type : 'USE_CARD_CORE' , n : 34 , index : 8 , position : 3 , owner : 'opponent' } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'USE_CARD_CORE' , n : 34 , index : 8 , position : 3 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CLEAR_CARD' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'EXEC_CARD' , n : 34 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 34 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'MOVE_CARD_TO_CENTER' , index : 8 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 5 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'REMOVE_CARD' , index : 8 , position : 3 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_NEW_TURN' , on : false } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 6 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'MOVE_CARD_TO_TOP' , index : 8 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 6 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 6 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'MOVE_CARD_TO_TOP_MAIN' , index : 8 , toPosition : - 2 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 6 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 17 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 3 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'NEXT_ROUND' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_TURN' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CHECK_SURRENDER' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ { position : 0 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 5 , opponent : 1 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 2 , n : 34 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'MOVE_CARD_TO_STACK' , index : 8 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 7 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 4 , n : 17 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 34 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 3 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 17 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 34 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_ZERO_OPACITY' , index : 8 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 17 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 34 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 2 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 17 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 34 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true , owner : 'common' } , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DELETE_CARD' , index : 8 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 1 , gems : 6 , recruits : 6 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 2 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 1 , n : 17 , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true , owner : 'common' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 69 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : true } , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 1 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 2 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 5 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_DISCARD_MODE' , on : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 5 } , list : [ { position : - 2 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 5 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : true , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DISCARD_CARD' , index : 12 , position : 3 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'DISCARD_CARD_CORE' , index : 12 , position : 3 , owner : 'opponent' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'ADD_DISCARDED_TAG' , index : 12 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 7 , gems : 2 , recruits : 7 } , opponent : { tower : 21 , wall : 10 , brickProd : 4 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 6 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 6 } , list : [ null , { position : 0 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 89 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 3 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , null , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , { position : 4 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 5 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 53 , position : 3 , owner : 'opponent' , unusable : false , discarded : true , isFlipped : false , zeroOpacity : false } , { n : 52 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 71 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 2 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 2 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : true , isNewTurn : false } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_PREF' , show : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_AILEVEL' , aiLevel : 1 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 0 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_AILEVEL_MAIN' , aiLevel : 1 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_SETTINGS_INIT' , payload : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_SETTINGS' , payload : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 8 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 11 , gems : 6 , recruits : 11 } , opponent : { tower : 21 , wall : 10 , brickProd : 5 , gemProd : 2 , recruitProd : 3 , bricks : 6 , gems : 8 , recruits : 8 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 6 , opponent : 5 } , list : [ null , { position : 1 , n : 54 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 89 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , null , { position : - 2 , n : 3 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , null , null , null , { position : 3 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 73 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , null , null , { n : 52 , position : 5 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , null , { n : 86 , position : 1 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 101 , position : 2 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 64 , position : 0 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 0 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 79 , position : 4 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 0 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : '👨' , opponentName : '📱' , tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 21 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 11 , recruits : 7 } , opponent : { tower : 21 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : 0 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 69 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 5 , n : 64 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 33 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 88 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 47 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 0 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'tie' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CLOSE_SCREEN_END_INIT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 21 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 11 , recruits : 7 } , opponent : { tower : 21 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : 0 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 69 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 5 , n : 64 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 33 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 88 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 48 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 47 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 0 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'tie' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 23 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 69 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 41 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 59 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 18 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 4 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'win' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CLOSE_SCREEN_END_INIT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 23 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 5 , n : 39 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 69 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 41 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 59 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 18 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 0 , opponent : 4 } } , game : { playersTurn : true , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'win' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 31 , wall : 0 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 0 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 83 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 62 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 96 , position : - 1 , owner : 'common' , unusable : true , discarded : true , isFlipped : true , zeroOpacity : false } , { n : 13 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 1 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'lose' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CLOSE_SCREEN_END_INIT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 31 , wall : 0 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 0 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 77 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 83 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : - 5 , n : 62 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 1 , n : 24 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 96 , position : - 1 , owner : 'common' , unusable : true , discarded : true , isFlipped : true , zeroOpacity : false } , { n : 13 , position : 3 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 1 } } , game : { playersTurn : false , locked : [ true , false ] , discardMode : false , isNewTurn : false } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : 'lose' } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_VOLUME_PREF' , show : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_VOLUME' , volume : 4.5 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_VOLUME_MAIN' , volume : 4.5 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 4.5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_STEREO' , stereo : false } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_STEREO_MAIN' , stereo : false } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : false } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_PIXELATION' , pixelation : 4 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_PIXELATION_MAIN' , pixelation : 4 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 4 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 4 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_VISUALVALUES' , payload : { brightness : 1.1 , contrast : 1.1 , grayscale : 0 , sepia : 0.5 , saturate : 0.9 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 4 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 4 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_VISUALVALUES_MAIN' , payload : { brightness : 1.1 , contrast : 1.1 , grayscale : 0 , sepia : 0.5 , saturate : 0.9 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : true , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 4 , visualvalues : { brightness : 1.1 , contrast : 1.1 , grayscale : 0 , sepia : 0.5 , saturate : 0.9 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_LANG_PREF' , show : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : true , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : true , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_LANG' , lang : 'zh-Hans' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : true , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : true , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'UPDATE_LANG_MAIN' , lang : 'zh-Hans' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'zh-Hans' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : true , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SCREEN_HELP' , show : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : true , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_MULTIPLAYER_MODE' , on : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CONNECT_TO_NETWORK' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SWITCH_MULTIPLAYER_MODE_MAIN' , on : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : '' , opponentId : '' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'MULTIPLAYER_STATUS' , status : 'connecting_net' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : '' , opponentId : '' , status : 'connecting_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : '' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_YOUR_ID' , id : 'a0c7d47a-8b34-4639-ba8b-898368738957' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'PEER_LISTEN' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CONNECT_TO_ID' , id : '97a35315-fae8-4737-bcc9-415d5016fba5' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_OPPONENT_ID' , id : '97a35315-fae8-4737-bcc9-415d5016fba5' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SEND_TEMP_SETTINGS' , payload : { tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SEND_NAME' , name : 'aa' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : '' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SET_TEMP_PLAYER_NAME' , name : 'aa' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'CONNECTION_LISTEN' , host : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SEND' , kind : 'INST' , data : { type : 'SET_TEMP_SETTINGS' , payload : { tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'RECEIVE_WITH_LATENCY' , data : '{"kind":"INST","data":{"type":"SET_TEMP_OPPONENT_NAME","name":"aa"},"seq":1,"gameNumber":-1}' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'SEND_SETTINGS' , payload : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } , { type : 'ABORT_SEND_TEMP_SETTINGS' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 4 , recruitProd : 2 , bricks : 9 , gems : 3 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 5 , opponent : 4 } , list : [ { position : 0 , n : 61 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 73 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 95 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 13 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : - 3 , n : 28 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 26 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 37 , position : - 4 , owner : 'common' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 57 , position : 1 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 84 , position : 0 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 91 , position : 4 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : true , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : 1638881281241 } } , { type : 'RECEIVE' , data : '{"kind":"INST","data":{"type":"SET_TEMP_OPPONENT_NAME","name":"aa"},"seq":1,"gameNumber":-1}' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : 1638881281241 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : '' , gameNumber : 1638881281241 } } , { type : 'SET_TEMP_OPPONENT_NAME' , name : 'aa' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 4 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : - 1 , owner : 'common' , unusable : true , discarded : false , isFlipped : true , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881281241 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 4 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881281241 } } , { type : 'PLAY_CARD_FROM_QUEUE' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 4 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881281241 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 4 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881281241 } } , { type : 'PLAY_CARD_TO_QUEUE' , payload : { type : 'USE_CARD_CORE' , n : 50 , index : 6 , position : 2 , owner : 'opponent' } , gameNumber : 1638881281241 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 6 , recruits : 7 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : - 2 , n : 38 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 3 , n : 77 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : - 4 , n : 54 , unusable : true , discarded : true , isFlipped : false , zeroOpacity : false , owner : 'common' } , { position : 2 , n : 18 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 92 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 50 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 7 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 17 , position : 3 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 24 , position : 0 , owner : 'player' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 42 , position : 1 , owner : 'player' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } , { n : 86 , position : 4 , owner : 'opponent' , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 2 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881281241 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881318067 } } , { type : 'DISCONNECT' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_to_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881318067 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } , { type : 'SCREEN_DISCONNECT_NOTICE' , show : true } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : true , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'connected_net' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : true , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } , { type : 'ABORT_CONNECTION' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : true , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : false , yourId : 'a0c7d47a-8b34-4639-ba8b-898368738957' , opponentId : '97a35315-fae8-4737-bcc9-415d5016fba5' , status : 'disconnected' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { tower : 20 , wall : 10 , brickProd : 2 , gemProd : 2 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 50 , winResource : 100 , cardsInHand : 5 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } , { type : 'SET_TEMP_SETTINGS' , payload : { tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 } , opponent : { tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 9 , gems : 8 , recruits : 7 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 4 , opponent : 5 } , list : [ { position : 0 , n : 76 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 56 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 43 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 0 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 39 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 11 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 90 , unusable : true , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { n : 63 , position : 4 , owner : 'opponent' , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false } ] , nextPos : { player : 4 , opponent : 4 } } , game : { playersTurn : false , locked : [ false , false ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 20 , wall : 6 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , bricks : 5 , gems : 5 , recruits : 5 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , screen : { pref : true , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { tower : 20 , wall : 6 , bricks : 5 , gems : 5 , recruits : 5 , brickProd : 4 , gemProd : 3 , recruitProd : 2 , winTower : 21 , winResource : 151 , cardsInHand : 4 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : - 1 } } ) ; state = reducers ( { status : { player : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 } , opponent : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 30 , gems : 30 , recruits : 30 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 7 , opponent : 7 } , list : [ { position : 0 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 16 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 5 , n : 63 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 6 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 0 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 14 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 21 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 5 , n : 101 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 6 , n : 85 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } ] , nextPos : { player : 7 , opponent : 7 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , bricks : 25 , gems : 25 , recruits : 25 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881342578 } } , { type : 'DRAW_CARD_TO_QUEUE' , n : 31 , gameNumber : 1638881342578 } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 } , opponent : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 30 , gems : 30 , recruits : 30 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 7 , opponent : 7 } , list : [ { position : 0 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 16 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 5 , n : 63 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 6 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 0 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 14 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 21 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 5 , n : 101 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 6 , n : 85 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } ] , nextPos : { player : 7 , opponent : 7 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , bricks : 25 , gems : 25 , recruits : 25 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881342578 } } ) ; state = reducers ( { status : { player : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 } , opponent : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 30 , gems : 30 , recruits : 30 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 7 , opponent : 7 } , list : [ { position : 0 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 16 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 5 , n : 63 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 6 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 0 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 14 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 21 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 5 , n : 101 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 6 , n : 85 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } ] , nextPos : { player : 7 , opponent : 7 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , bricks : 25 , gems : 25 , recruits : 25 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881342578 } } , { type : 'DRAW_CARD_FROM_QUEUE' } ) ; expect ( state ) . toEqual ( { status : { player : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 } , opponent : { tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 30 , gems : 30 , recruits : 30 } } , lang : { code : 'en' , erathian : false } , cards : { total : { player : 7 , opponent : 7 } , list : [ { position : 0 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 1 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 2 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 3 , n : 87 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 4 , n : 16 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 5 , n : 63 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 6 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'opponent' } , { position : 0 , n : 46 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 1 , n : 90 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 2 , n : 14 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 3 , n : 21 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 4 , n : 38 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 5 , n : 101 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } , { position : 6 , n : 85 , unusable : false , discarded : false , isFlipped : false , zeroOpacity : false , owner : 'player' } ] , nextPos : { player : 7 , opponent : 7 } } , game : { playersTurn : false , locked : [ false , true ] , discardMode : false , isNewTurn : true } , settings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , bricks : 25 , gems : 25 , recruits : 25 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , screen : { pref : false , langPref : false , sgPref : false , help : false , landscape : false , disconnectNotice : false , end : { type : null } } , sound : { volume : 5 , stereo : true } , visual : { pixelation : 0 , visualvalues : { brightness : 1 , contrast : 1 , grayscale : 0 , sepia : 0 , saturate : 1 , hue : 0 , invert : 0 , opacity : 1 , twist : false , grain : false } } , ai : { aiLevel : 1 } , multiplayer : { on : true , yourId : 'a9adb465-c195-4a23-b70b-c9229f9afb94' , opponentId : '51913ef2-b150-4b62-af49-4b89606c8985' , status : 'connected_by_id' , tempSettings : { playerName : 'aa' , opponentName : 'cc' , tower : 60 , wall : 60 , bricks : 25 , gems : 25 , recruits : 25 , brickProd : 5 , gemProd : 5 , recruitProd : 5 , winTower : 250 , winResource : 750 , cardsInHand : 7 } , tempPlayerName : 'aa' , tempOpponentName : 'aa' , gameNumber : 1638881342578 } } ) ; } ) ;