def test_test_suite_time_end_condition(): time_in_sec = 1 osmo = Osmo(TempModel()) osmo.test_end_condition = Length(1) osmo.test_suite_end_condition = Time(time_in_sec) start_time = time.time() osmo.generate() end_time = time.time() duration = end_time - start_time assert duration < time_in_sec + 0.1 assert duration > time_in_sec - 0.1
def test_empty_model(): class EmptyTestModel: def __init__(self): pass exception = False try: osmo = Osmo(EmptyTestModel()) osmo.generate() except: exception = True if not exception: raise Exception("Osmo did not except empty model")
def test_weighted_algorithm(): class HistoryTest: steps = list() def __init__(self): pass @staticmethod def weight_first(): return 1 def step_first(self): self.steps.append('step_first') @staticmethod def weight_second(): return 2 def step_second(self): self.steps.append('step_second') @staticmethod def weight_third(): return 4 def step_third(self): self.steps.append('step_third') model = HistoryTest() osmo = Osmo(model) osmo.test_end_condition = Length(1) osmo.test_end_condition = Length(100) osmo.algorithm = WeightedAlgorithm() osmo.generate() step_first_count = osmo.history.get_step_count( osmo.model.get_step_by_name("step_first")) step_second_count = osmo.history.get_step_count( osmo.model.get_step_by_name("step_second")) step_third_count = osmo.history.get_step_count( osmo.model.get_step_by_name("step_third")) compare_first = step_first_count * (1.0 / model.weight_first()) compare_second = step_second_count * (1.0 / model.weight_second()) compare_third = step_third_count * (1.0 / model.weight_third()) assert abs(compare_first - compare_second) < 2 assert abs(compare_first - compare_third) < 2
def test_split_model_with_same_name_functions(): class TestModel1: def __init__(self): self.step_execute = False def step_first(self): self.step_execute = True class TestModel2: def __init__(self): self.step_execute = False def step_first(self): self.step_execute = True tm1 = TestModel1() tm2 = TestModel2() osmo = Osmo(tm1) osmo.add_model(tm2) osmo.generate() assert tm1.step_execute, "Osmo did not execute step in first model" assert tm2.step_execute, "Osmo did not execute step in second model"