def load_variable(self, text, start_index): next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=start_index) if next_symbol != "variable": print("ERROR") exit() variable_specifications = VariableSpecifications() for key, value in attributes.items(): variable_specifications.add(key, value) variable = self.variable_repository.create(variable_specifications) while next_symbol != "/variable": next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=pointer) if next_symbol == "default_value": next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=pointer) variable.set_value(next_symbol) next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=pointer) elif next_symbol.endswith("_value"): mode = next_symbol[:-6] next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=pointer) variable.set_value(next_symbol, mode=mode) next_symbol, attributes, pointer = self.xml_helper.pop_symbol( text, start_index=pointer) return variable, pointer
def testLoadsVariable(self): text = """<variable name="test_variable"><default_value>45</default_value></variable>""" self.setup_holder.variable_loader.load_variable(text, 0) spec = VariableSpecifications() spec.name = "test_variable" variables = self.setup_holder.variable_repository.get(spec) self.assertEqual(1, len(variables)) self.assertEqual("test_variable", variables[0].name) self.assertEqual("45", variables[0].get_value())
def testGetValueAllModes(self): specs = VariableSpecifications() specs.name = "testElement" element_1 = self.variable_repository.create(specs) element_1.set_value(45) element_retrieved = self.variable_repository.get(specs)[0] self.assertEqual("45", element_retrieved.get_value(mode=None)) self.assertEqual("45", element_retrieved.get_value(mode="train")) self.assertEqual("45", element_retrieved.get_value(mode="validate")) self.assertEqual("45", element_retrieved.get_value(mode="test"))
def testLoadsVariableWithValidValue(self): text = """<variable name="test_variable"><validate_value>86</validate_value></variable>""" self.setup_holder.variable_loader.load_variable(text, 0) spec = VariableSpecifications() spec.name = "test_variable" variables = self.setup_holder.variable_repository.get(spec) self.assertEqual(1, len(variables)) self.assertEqual("test_variable", variables[0].name) self.assertIsNone(variables[0].get_value()) self.assertIsNone(variables[0].get_value(mode="test")) self.assertEqual("86", variables[0].get_value(mode="validate"))
def testGetByName(self): specs = VariableSpecifications() specs.name = "testElement" element_1 = self.variable_repository.create(specs) element_retrieved = self.variable_repository.get(specs) self.assertEqual(1, len(element_retrieved)) self.assertEqual(element_1.identifier, element_retrieved[0].identifier) self.assertEqual(element_1, element_retrieved[0]) specs.name = "falseTestName" element_retrieved = self.variable_repository.get(specs) self.assertEqual(0, len(element_retrieved))
def testCreateAssignsUID(self): specs = VariableSpecifications() element_1 = self.variable_repository.create(specs) element_2 = self.variable_repository.create(specs) self.assertIsNotNone(element_1) self.assertIsNotNone(element_2) self.assertIsNotNone(element_1.identifier) self.assertIsNotNone(element_2.identifier) self.assertNotEqual(element_1.identifier, element_2.identifier)
def testCreateAddsToRepository(self): specs = VariableSpecifications() self.assertEqual(0, self.variable_repository.count()) element_1 = self.variable_repository.create(specs) self.assertEqual(1, self.variable_repository.count()) element_2 = self.variable_repository.create(specs) self.assertEqual(2, self.variable_repository.count())
def testConfigurationLoaderLoadsVariables(self): text = """<configuration> <variable name="test_variable"><default_value>45</default_value></variable> <variable name="test_variable_2"><default_value>16.2</default_value></variable> </configuration>""" self.setup_holder.configuration_loader.load_configuration(text, 0) spec = VariableSpecifications() variables = self.setup_holder.variable_repository.get(spec) self.assertEqual(2, len(variables)) variable_names = [v.name for v in variables] self.assertIn("test_variable", variable_names) self.assertIn("test_variable_2", variable_names)
def get_specifications(self): return VariableSpecifications()