def test_pause_at_update(self, bp: BasePage, pp: PopulationPage):
        """
        Tests that 'Pause at Update' setting will allow user to automatically
        pause the experiment at the given update.

        :return: None.
        """

        # Setup pause settings.
        pp.enable_pause_at_update()
        pp.edit_pause_update(9)

        # Set up the rest of the experiment.
        bp.add_ancestor_to_dish()

        # Run the experiment.
        bp.run_from_menu()

        # Wait long enough for experiment to have reached update 9.
        bp.util.sleep(10, "Waiting for experiment to pause automatically.")

        # Check that pause worked properly.
        assert pp.get_pop_current_update() == 9

        # Wait to make sure it is paused.
        bp.util.sleep(1, "Ensuring that experiment is paused.")
        assert pp.get_pop_current_update() == 9
    def test_pop_stats_sanity_ancestor(self, bp: BasePage, pp: PopulationPage):
        """
        Tests that running an experiment with @ancestor for a brief period of
        time does not lead to any unexpected values in the population statistics
        window.

        :return: None.
        """

        # Add @ancestor to dish.
        bp.add_ancestor_to_dish()

        # Run the experiment for a while, then pause it.
        bp.run_from_menu()
        bp.util.sleep(15, "Waiting for updates to occur.")
        bp.pause_from_menu()
        bp.util.sleep(1, "Waiting for pause to take affect.")

        # Test that population stats are valid.
        assert pp.get_pop_current_update() > 0
        assert pp.get_pop_num_orgs() > 1
        assert pp.get_pop_avg_fit() >= 0.0
        assert pp.get_pop_avg_energy_rate() > 0
        assert pp.get_pop_avg_offspring_cost() > 0
        assert pp.get_pop_avg_age() >= 0
Beispiel #3
0
    def test_exp_run_controls(self, bp: BasePage, pp: PopulationPage):
        """
        Tests that a simple experiment can be run and that running, pausing, and
        doing one update work as expected.

        :return: None.
        """

        # Add @ancestor to dish.
        bp.add_ancestor_to_dish()

        # Run the experiment.
        bp.run_from_menu()
        bp.util.sleep(3, "Waiting for updates to occur.")

        # Assert that updates have occurred.
        assert pp.get_pop_current_update() > 0
        assert pp.gr_get_pop_current_update() > 0

        # Pause the experiment.
        bp.pause_from_menu()
        bp.util.sleep(1, "Making sure pause goes into effect.")

        # Get current update, wait a few seconds, assert it has not changed.
        current_update = pp.get_pop_current_update()
        bp.util.sleep(3, "Ensuring no updates occur after pause.")
        assert pp.get_pop_current_update() == current_update

        # Do one update
        bp.forward_from_menu()
        bp.util.sleep(1, "Making sure update has time to occur.")
        assert (pp.get_pop_current_update() - current_update) == 1
    def test_pop_stats_sanity_allfxns(self, bp: BasePage, pp: PopulationPage):
        """
        Tests that running an experiment with @all_functions does not create
        unexpected values in pop. stats window and that this window shows that
        all of the functions have been performed at least once (which should
        always happen because the starting org can perform all functions).

        :return: None.
        """
        # Add @all_functions to dish.
        bp.add_all_functions_to_dish()

        # Run the experiment for a while, then pause it.
        bp.run_from_menu()
        bp.util.sleep(15, "Waiting for updates to occur.")
        bp.pause_from_menu()
        bp.util.sleep(1, "Waiting for pause to take affect.")

        # Test that population stats are valid.
        assert pp.get_pop_current_update() > 0
        assert pp.get_pop_num_orgs() > 1
        assert pp.get_pop_avg_fit() >= 0.0
        assert pp.get_pop_avg_energy_rate() > 0
        assert pp.get_pop_avg_offspring_cost() > 0
        assert pp.get_pop_avg_age() >= 0

        # Test that all functions have occurred.
        assert pp.get_pop_num_performing_not() > 0
        assert pp.get_pop_num_performing_nan() > 0
        assert pp.get_pop_num_performing_and() > 0
        assert pp.get_pop_num_performing_orn() > 0
        assert pp.get_pop_num_performing_oro() > 0
        assert pp.get_pop_num_performing_ant() > 0
        assert pp.get_pop_num_performing_nor() > 0
        assert pp.get_pop_num_performing_xor() > 0
        assert pp.get_pop_num_performing_equ() > 0