def setup(self): self.arguments = Argument(name="test_argument",description="Argument used in testing.",data={"test":"Test argument data"}) self.simulation = Simulation(self.arguments) self.session.add(self.arguments) self.session.add(self.simulation) self.session.commit()
class TestSimulationData(DatabaseTest): def setup(self): self.arguments = Argument(name="test_argument",description="Argument used in testing.",data={"test":"Test argument data"}) self.simulation = Simulation(self.arguments) self.session.add(self.arguments) self.session.add(self.simulation) self.session.commit() def test_kernel_stages(self): kernels = [PreSimulateKernel(),PreSimulateKernel(), SimulateKernel(),SimulateKernel(),SimulateKernel(), PostSimulateKernel()] for kernel in kernels: self.session.add(kernel) self.simulation.kernels.append(kernel) self.session.commit() assert len(self.simulation.pre_kernels) == 2 assert len(self.simulation.sim_kernels) == 3 assert len(self.simulation.post_kernels) == 1 def test_arguments_insertion(self): child1_data = {"child":"Hi!"} child_1 = Argument(description="A child argument used for testing", data=child1_data) child2_data = {"child":"Hi!", "test":"it works"} child_2 = Argument(description="A child argument used for testing", data=child2_data) self.arguments["child_1"] = child_1 self.arguments["child_2"] = child_2 self.session.add(child_1) self.session.add(child_2) self.session.commit() assert not "test" in self.arguments["child_1"].data assert "test" in self.arguments["child_2"].data assert self.arguments["child_1"].data == child1_data assert self.arguments["child_2"].data == child2_data def test_diagnostic_get_set(self): child1 = Diagnostic(data={"test":1}) child2 = Diagnostic(data={"test":2}) self.simulation.diagnostics["test1"] = child1 self.simulation.diagnostics["test2"] = child2 self.session.add(child1) self.session.add(child2) self.session.commit() assert self.simulation.diagnostics["test1"] == child1 assert self.simulation.diagnostics["test2"] == child2 assert self.simulation.diagnostics["test1"].data["test"] == 1 assert self.simulation.diagnostics["test2"].data["test"] == 2 def test_diagnostic_recursive_search(self): child1 = Diagnostic(data={"test":1}) child2 = Diagnostic(data={"test":2}) child3 = Diagnostic(data={"test":3}) child4 = Diagnostic(data={"test":4}) child5 = Diagnostic(data={"test":5}) child1["level1_0"] = child2 child2["level2_0"] = child3 child2["level2_1"] = child4 child4["level3_0"] = child5 self.simulation.diagnostics["level0"] = child1 self.session.add(child1) self.session.add(child2) self.session.add(child3) self.session.add(child4) self.session.add(child5) self.session.commit() assert self.simulation.diagnostics["level1_0"].data["test"] == 2 assert self.simulation.diagnostics["level2_0"].data["test"] == 3 assert self.simulation.diagnostics["level2_1"].data["test"] == 4 assert self.simulation.diagnostics["level3_0"].data["test"] == 5 def test_arguments_children(self): child_data = {"child":"Hi!"} child = Argument(name="child_arg", description="A child argument used for testing", data=child_data) self.arguments["child_arg"] = child self.session.add(child) self.session.commit() assert self.arguments["child_arg"] == child assert self.arguments["child_arg"].data == child_data #Multiple levels of recursion sub_child = Argument(name="child_2", description="A child argument used for testing", data=child_data) child["child_2"] = sub_child self.session.add(sub_child) self.session.commit() assert child["child_2"] == sub_child assert self.arguments["child_2"] == sub_child def test_defaults(self): assert self.simulation.step == 0 assert self.simulation.steps == 0 def test_range_argument(self): assert RangeArgument(range(1,10),5).validate() assert not RangeArgument(range(10,100),5).validate() def test_argument_subclass_creation(self): rang = [range(1,5),range(1,10),range(10,100)] rangearg_1 = RangeArgument(rang[0],-1) rangearg_2 = RangeArgument(rang[1],4) rangearg_3 = RangeArgument(rang[2],74.5) assert rangearg_1.data["range"]["min"] == min(rang[0]) assert rangearg_2.data["range"]["max"] == max(rang[1]) assert rangearg_3.data["range"]["min"] == min(rang[2]) assert rangearg_3.data["range"]["max"] == max(rang[2]) def test_recursive_validation(self): rangearg_1 = RangeArgument(range(1,10),4) rangearg_2 = RangeArgument(range(10,100),74.5) rangearg_3 = RangeArgument(range(1,5),-1) self.arguments["rangearg_1"] = rangearg_1 self.arguments["rangearg_2"] = rangearg_2 assert self.arguments.validate() self.arguments["rangearg_3"] = rangearg_3 assert not self.arguments.validate()