349 lines
11 KiB
Python
349 lines
11 KiB
Python
import pytest
|
|
from sqlmodel import Session, select, func
|
|
|
|
from command_logic.logic_gameplay import advance_runners, gb_result_10, gb_result_11, gb_result_13, gb_result_2, gb_result_3, gb_result_4, gb_result_5, gb_result_6, gb_result_7, gb_result_8, gb_result_9, singles, doubles, triples, gb_result_1, complete_play, log_run_scored, strikeouts, steals, undo_play, xchecks
|
|
from in_game.gameplay_models import Lineup, Play
|
|
from tests.factory import session_fixture, Game
|
|
|
|
|
|
def test_groundball_1(session: Session):
|
|
game_1 = session.get(Game, 2)
|
|
play_1 = session.get(Play, 1)
|
|
play_1.hit, play_1.batter_final = 1, 2
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_1(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.on_second == play_2.on_second
|
|
assert play_2.batter_final == None
|
|
|
|
|
|
async def test_groundball_2_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_2(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 0
|
|
assert ending.on_base_code == 0
|
|
|
|
|
|
async def test_groundball_2_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await doubles(session, None, play_1, '**')
|
|
play_1.starting_outs = 0
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_2(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_third == play_2.on_second
|
|
|
|
|
|
async def test_groundball_2_3(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1)
|
|
play_1.starting_outs = 0
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_2(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 1
|
|
|
|
|
|
async def test_groundball_3_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_3(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 2
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_3_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await doubles(session, None, play_1, '**')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_3(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_3_3(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1,)
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_3(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 1
|
|
|
|
|
|
async def test_groundball_4_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_4(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 1
|
|
assert ending.on_first == play_2.batter
|
|
|
|
|
|
async def test_groundball_4_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '**')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3 = gb_result_4(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 1
|
|
assert ending.on_first == play_2.batter
|
|
assert ending.away_score == 1
|
|
|
|
|
|
async def test_groundball_5_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1)
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_5(session, play_2, True)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 1
|
|
|
|
|
|
async def test_groundball_5_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1)
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_5(session, play_2, False)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_6_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await doubles(session, None, play_1, '**')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_6(session, play_2, True)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
|
|
|
|
async def test_groundball_6_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await doubles(session, None, play_1, '**')
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_6(session, play_2, False)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 2
|
|
|
|
|
|
async def test_groundball_7_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1)
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_7(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_7_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '**')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3 = gb_result_7(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 6
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_8_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await triples(session, None, play_1)
|
|
play_2 = complete_play(session, play_1)
|
|
|
|
play_2 = gb_result_8(session, play_2)
|
|
ending = complete_play(session, play_2)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_8_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '**')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3 = gb_result_8(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 6
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_9_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '**')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3 = gb_result_9(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 6
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_10_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
play_3 = await singles(session, None, play_3, '*')
|
|
play_4 = complete_play(session, play_3)
|
|
|
|
play_4 = gb_result_10(session, play_4)
|
|
ending = complete_play(session, play_4)
|
|
|
|
assert ending.starting_outs == 0
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_13_1_1(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3.check_pos == '3B'
|
|
play_3 = gb_result_13(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 0
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_13_1_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1.starting_outs = 0
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3.check_pos = '3B'
|
|
play_3 = gb_result_13(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 1
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_13_1_3(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1.starting_outs = 0
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3.check_pos == '1B'
|
|
play_3 = gb_result_13(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 2
|
|
assert ending.on_base_code == 3
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_13_2(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3.check_pos == 'C'
|
|
play_3 = gb_result_13(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 0
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 0
|
|
|
|
|
|
async def test_groundball_13_3(session: Session):
|
|
play_1 = session.get(Play, 2)
|
|
play_1 = await singles(session, None, play_1, '*')
|
|
play_2 = complete_play(session, play_1)
|
|
play_2 = await singles(session, None, play_2, '*')
|
|
play_3 = complete_play(session, play_2)
|
|
|
|
play_3.check_pos == '1B'
|
|
play_3 = gb_result_13(session, play_3)
|
|
ending = complete_play(session, play_3)
|
|
|
|
assert ending.starting_outs == 0
|
|
assert ending.on_base_code == 0
|
|
assert ending.away_score == 0
|
|
|
|
|