diff options
| author | Bryan Bishop <kanzure@gmail.com> | 2013-11-09 15:45:03 -0600 | 
|---|---|---|
| committer | Bryan Bishop <kanzure@gmail.com> | 2013-11-09 15:45:03 -0600 | 
| commit | 3868fb1e0622e5d3cda0c093ce3114c485fd0096 (patch) | |
| tree | 184fc43668e7bfda64105693debeb36b9f3b9254 /tests/bootstrapping.py | |
| parent | 54e2b189b8b9765d17d4c0d05675ac70c2bec2ac (diff) | |
simplify the vba-related tests
The imports for the emulator-related tests are now simplified in the
tests/ folder. The bootstrapping.py file contains some shared functions
that multiple test files might choose to use. Those functions probably
belong in the actual module instead of in tests/.
The battle-related tests have been separated from the other emulator
tests.
Diffstat (limited to 'tests/bootstrapping.py')
| -rw-r--r-- | tests/bootstrapping.py | 51 | 
1 files changed, 51 insertions, 0 deletions
| diff --git a/tests/bootstrapping.py b/tests/bootstrapping.py new file mode 100644 index 0000000..17a2945 --- /dev/null +++ b/tests/bootstrapping.py @@ -0,0 +1,51 @@ +""" +Functions to bootstrap the emulator state +""" + +from setup_vba import ( +    vba, +    autoplayer, +) + +def bootstrap(): +    """ +    Every test needs to be run against a certain minimum context. That context +    is constructed by this function. +    """ + +    cry = vba.crystal(config=None) +    runner = autoplayer.SpeedRunner(cry=cry) + +    # skip=False means run the skip_intro function instead of just skipping to +    # a saved state. +    runner.skip_intro(skip=True) + +    state = cry.vba.state + +    # clean everything up again +    cry.vba.shutdown() + +    return state + +def bootstrap_trainer_battle(): +    """ +    Start a trainer battle. +    """ +    # setup +    cry = vba.crystal(config=None) +    runner = autoplayer.SpeedRunner(cry=cry) + +    runner.skip_intro(skip=True) +    runner.handle_mom(skip=True) +    runner.walk_into_new_bark_town(skip=True) +    runner.handle_elm("totodile", skip=True) + +    # levelgrind a pokemon +    # TODO: make new_bark_level_grind able to figure out how to construct its +    # initial state if none is provided. +    runner.new_bark_level_grind(17, skip=True) + +    # TODO: figure out a better way to start a trainer battle :( +    runner.cry.start_trainer_battle_lamely() + +    return runner.cry.vba.state | 
