def test4(self): parameter_definition = parameters.ModuleMethodParameterDefinition( "get_test", None, "test_name", "a test parameter", 11.0 | nbody_system.length ) class TestModule(BaseTestModule): x = 123.0 | nbody_system.length def get_test(self): return self.x def set_test(self, value): self.x = value o = TestModule() x = parameters.Parameters([parameter_definition], o) self.assertTrue("test_name" in str(x)) self.assertTrue("123.0 length" in str(x)) convert_nbody = nbody_system.nbody_to_si(2.0 | units.m, 4.0 | units.kg) y = parameters.ParametersWithUnitsConverted( x, convert_nbody.as_converter_from_si_to_generic() ) self.assertTrue("test_name" in str(y)) self.assertTrue("246.0 m" in str(y))
def test16(self): print "Testing add_interface_parameter" class TestModule(BaseTestModule): pass o = TestModule() parameters_handler = HandleParameters(o) parameters_handler.add_vector_parameter( "mesh_length", "length of the model in the x, y and z directions", ("length_x", "length_y", "length_z") ) for i,par_name in enumerate(["length_x", "length_y", "length_z"]): parameters_handler.add_interface_parameter( par_name, "a test parameter", default_value = i*10.0 | generic_unit_system.length, ) x = parameters_handler.get_attribute(None, None) self.assertTrue("mesh_length" in str(x)) self.assertTrue("[0.0, 10.0, 20.0] length" in str(x)) converter = generic_unit_converter.ConvertBetweenGenericAndSiUnits(2.0 | units.m, 4.0 | units.kg, 6.0 | units.s) y = parameters.ParametersWithUnitsConverted( x, converter.as_converter_from_si_to_generic() ) self.assertTrue("mesh_length" in str(y)) self.assertTrue("[0.0, 20.0, 40.0] m" in str(y))
def test6(self): print("Test 5: testing mixed nbody and string units") nbody_parameter_definition = parameters.ModuleMethodParameterDefinition( "get_nbody", None, "nbody_par_name", "a test parameter with nbody units", 11.0 | nbody_system.length) string_parameter_definition = parameters.ModuleMethodParameterDefinition( "get_string", None, "string_par_name", "a test parameter with string units", "test string") class TestModule(BaseTestModule): x = 123.0 | nbody_system.length def get_nbody(self): return self.x def get_string(self): return str(10 * self.x.number) o = TestModule() x = parameters.Parameters( [string_parameter_definition, nbody_parameter_definition], o) self.assertTrue("nbody_par_name" in str(x)) self.assertTrue("123.0 length" in str(x)) self.assertTrue("string_par_name" in str(x)) self.assertTrue("1230.0" in str(x)) convert_nbody = nbody_system.nbody_to_si(2.0 | units.m, 4.0 | units.kg) y = parameters.ParametersWithUnitsConverted( x, convert_nbody.as_converter_from_si_to_generic()) self.assertEqual(getattr(y, "string_par_name"), "1230.0") self.assertAlmostEqual(getattr(y, "nbody_par_name"), 246.0 | units.m)
def test2(self): parameter_definition = parameters.ModuleMethodParameterDefinition( "get_test", "set_test", "test_name", "a test parameter", 11.0 | nbody_system.length) class TestModule(BaseTestModule): x = 123 | nbody_system.length def get_test(self): return self.x def set_test(self, value): self.x = value o = TestModule() x = parameters.Parameters([parameter_definition], o) self.assertEqual(x.test_name, 123 | nbody_system.length) convert_nbody = nbody_system.nbody_to_si(2.0 | units.m, 4.0 | units.kg) y = parameters.ParametersWithUnitsConverted( x, convert_nbody.as_converter_from_si_to_generic()) self.assertAlmostEqual(y.test_name.value_in(units.m), 246.0, 6) y.test_name = 500 | units.m self.assertAlmostEqual(y.test_name.value_in(units.m), 500.0, 6) print(x.test_name, o.x) self.assertAlmostEqual(x.test_name.value_in(nbody_system.length), 250.0, 6) self.assertAlmostEqual(o.x, 250.0 | nbody_system.length, 6)
def test11(self): print( "Testing ParametersWithUnitsConverted on vector parameters, using add_vector_parameter" ) class TestModule(BaseTestModule): x = 123.0 | generic_unit_system.length y = 456.0 | generic_unit_system.length z = 789.0 | generic_unit_system.length def get_length_x(self): return self.x def set_length_x(self, value): self.x = value def get_length_y(self): return self.y def set_length_y(self, value): self.y = value def get_length_z(self): return self.z def set_length_z(self, value): self.z = value o = TestModule() parameters_handler = HandleParameters(o) parameters_handler.add_vector_parameter( "mesh_length", "length of the model in the x, y and z directions", ("length_x", "length_y", "length_z")) for par_name in ["length_x", "length_y", "length_z"]: parameters_handler.add_method_parameter( "get_" + par_name, "set_" + par_name, par_name, "a test parameter", default_value=10.0 | generic_unit_system.length, ) x = parameters_handler.get_attribute(None, None) self.assertTrue("mesh_length" in str(x)) self.assertTrue("[123.0, 456.0, 789.0] length" in str(x)) converter = generic_unit_converter.ConvertBetweenGenericAndSiUnits( 2.0 | units.m, 4.0 | units.kg, 6.0 | units.s) y = parameters.ParametersWithUnitsConverted( x, converter.as_converter_from_si_to_generic()) self.assertTrue("mesh_length" in str(y)) self.assertTrue("[246.0, 912.0, 1578.0] m" in str(y))
def test5(self): print "Test 5: testing mixed nbody and physical units" phys_parameter_definition = parameters.ModuleMethodParameterDefinition( "get_test", "set_test", "phys_test_name", "a test parameter with physical units", 11.0 | units.m ) nbody_parameter_definition = parameters.ModuleMethodParameterDefinition( "get_test1", "set_test1", "nbody_test_name", "a test parameter with nbody units", 11.0 | nbody_system.length ) class TestModule(BaseTestModule): x = 123.0 | units.m y = 123.0 | nbody_system.length def get_test(self): return self.x def set_test(self, value): self.x = value def get_test1(self): return self.y def set_test1(self, value): self.y = value o = TestModule() x = parameters.Parameters([phys_parameter_definition, nbody_parameter_definition], o) self.assertTrue("nbody_test_name" in str(x)) self.assertTrue("123.0 length" in str(x)) self.assertTrue("phys_test_name" in str(x)) self.assertTrue("123.0 m" in str(x)) convert_nbody = nbody_system.nbody_to_si(2.0 | units.m, 4.0 | units.kg) y = parameters.ParametersWithUnitsConverted( x, convert_nbody.as_converter_from_si_to_generic() ) self.assertEquals(getattr(y,"phys_test_name"), 123.0 | units.m) self.assertAlmostEquals(getattr(y,"nbody_test_name"), 246.0 | units.m) y.phys_test_name = 1234.0 | units.m self.assertEquals(y.phys_test_name, 1234.0 | units.m) y.nbody_test_name = 12345.0 | nbody_system.length self.assertAlmostEquals(y.nbody_test_name, 24690.0 | units.m) y.nbody_test_name = 12345.0 | units.m self.assertEquals(y.nbody_test_name, 12345.0 | units.m)
def test10(self): print("Testing ParametersWithUnitsConverted on vector parameters") definitions = [] for par_name in ["length_x", "length_y", "length_z"]: definitions.append( parameters.ModuleMethodParameterDefinition( "get_" + par_name, "set_" + par_name, par_name, "a test parameter", 10.0 | generic_unit_system.length)) definitions.append( parameters.VectorParameterDefinition( "mesh_length", "length of the model in the x, y and z directions", ("length_x", "length_y", "length_z"), [10, 10, 10] | generic_unit_system.length)) class TestModule(BaseTestModule): x = 123.0 | generic_unit_system.length y = 456.0 | generic_unit_system.length z = 789.0 | generic_unit_system.length def get_length_x(self): return self.x def set_length_x(self, value): self.x = value def get_length_y(self): return self.y def set_length_y(self, value): self.y = value def get_length_z(self): return self.z def set_length_z(self, value): self.z = value o = TestModule() x = parameters.Parameters(definitions, o) self.assertTrue("mesh_length" in str(x)) self.assertTrue("[123.0, 456.0, 789.0] length" in str(x)) converter = generic_unit_converter.ConvertBetweenGenericAndSiUnits( 2.0 | units.m, 4.0 | units.kg, 6.0 | units.s) y = parameters.ParametersWithUnitsConverted( x, converter.as_converter_from_si_to_generic()) self.assertTrue("mesh_length" in str(y)) self.assertTrue("[246.0, 912.0, 1578.0] m" in str(y))