def testInstanceValidatorDetectDuplicateKeys(self): with self.assertRaises(SystemExit): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_duplicate_keys.yaml')) self.assertIsNone(parse)
def testInstanceValidatorDetectMissingColon(self): with self.assertRaises(SystemExit): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_missing_colon.yaml')) self.assertIsNone(parse)
def _CreateEntityInstances(yaml_filename): parsed_yaml = instance_parser.ParseYaml( path.join(_INSTANCES_PATH, yaml_filename)) entities = {} for entity_name, entity_yaml in parsed_yaml.items(): entities[entity_name] = entity_instance.EntityInstance(entity_yaml) return entities
def testInstanceValidatorDetectImproperSpacing(self): with self.assertRaises(SystemExit): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_spacing.yaml')) self.assertIsNone(parse)
def testInstanceValidatorDetectImproperTranslationKeys(self): with self.assertRaises(SystemExit): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_translation_keys.yaml')) self.assertIsNone(parse)
def testValidateStates(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_translation_states.yaml')) parsed = dict(parsed) for raw_entity in list(parsed.keys()): entity_parsed = dict(parsed[raw_entity]) entity = entity_instance.EntityInstance(entity_parsed) if not entity.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testInstanceValidatorParseMultipleEntities(self): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_multi_instances.yaml')) self.assertLen(parse.keys(), 3) self.assertIn('AHU-11', parse.keys()) self.assertIn('FCU-1', parse.keys()) self.assertIn('FCU-10', parse.keys())
def testValidateMultipleCompliantTranslationWithIdenticalTypes(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_translation_identical.yaml')) parsed = dict(parsed) for entity_name in list(parsed.keys()): entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testValidateBadEntityType(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_building_type_entity.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if instance.IsValidEntityInstance(self._universe): self.fail('exception not raised')
def testValidateGoodExample(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_building_type.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testValidateMultipleCompliantTranslationWithFields(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_building_translation_fields.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testValidateMultipleCompliantTranslationWithRequiredFieldMissing(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_translation_with_required_field_missing.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if instance.IsValidEntityInstance(self._universe): self.fail('exception not raised')
def testValidateMultipleCompliantTranslationWithNamespaceOther(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_translation.yaml')) parsed = dict(parsed) entity_name_lighting = list(parsed.keys())[0] entity_lighting = dict(parsed[entity_name_lighting]) instance = entity_instance.EntityInstance(entity_lighting) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testValidateBadTranslationUnitValues(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_translation_unit_values.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if instance.IsValidEntityInstance(self._universe): self.fail('exception not raised')
def testValidateTranslationUnitsAndStates(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_translation_units_and_states.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) instance = entity_instance.EntityInstance(entity) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def testValidateBadEntityTypeFormat(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_building_type.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) try: entity_instance.EntityInstance(entity) except TypeError as e: self.assertEqual(type(e), TypeError) else: self.fail('{0} was not raised'.format(TypeError))
def testValidateBadLinkMissingField(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'BAD', 'bad_links_missing_field.yaml')) entity_instances = {} parsed = dict(parsed) for raw_entity in list(parsed.keys()): entity_parsed = dict(parsed[raw_entity]) entity = entity_instance.EntityInstance(entity_parsed) entity_instances[raw_entity] = entity if entity_instances.get('ENTITY-NAME')\ .IsValidEntityInstance(self._universe, entity_instances): self.fail('exception not raised')
def testValidateGoodLinkEntityName(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_links.yaml')) entity_instances = {} parsed = dict(parsed) for raw_entity in list(parsed.keys()): entity_parsed = dict(parsed[raw_entity]) entity = entity_instance.EntityInstance(entity_parsed) entity_instances[raw_entity] = entity for _, instance in entity_instances.items(): if not instance.IsValidEntityInstance(self._universe, entity_instances): self.fail('exception incorrectly raised')
def testGoodConnections(self): parsed = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml')) parsed = dict(parsed) entity_name = list(parsed.keys())[0] entity = dict(parsed[entity_name]) if 'connections' not in entity.keys(): self.fail('entity does not have connections when expected') if self._universe.connections_universe is None: self.fail('universe does not valid connections universe') instance = entity_instance.EntityInstance(entity) if not instance.IsValidEntityInstance(self._universe): self.fail('exception incorrectly raised')
def deserialize(yaml_files): """Parses a yaml configuration file and deserialize it. Args: yaml_files: list of building configuration file. Returns: entity_instances: all the deserialized instances. """ parsed_yaml = {} print('Validating syntax please wait ...') for yaml_file in yaml_files: print('Parsing file: {0}, please wait ...'.format(yaml_file)) parsed_yaml.update(instance_parser.ParseYaml(yaml_file)) print('Syntax checks passed for file: {0}'.format(yaml_file)) entity_instances = {} for entity_name, entity_yaml in parsed_yaml.items(): entity_instances[entity_name] = entity_instance.EntityInstance( entity_yaml) return entity_instances
def testInstanceValidatorParseProperConnections(self): parse = instance_parser.ParseYaml( path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml')) self.assertIsNotNone(parse)