コード例 #1
0
    def testConfigUniverseGetUnitsForMeasurement(self):
        folder = unit_lib.UnitFolder('units/anyfolder')
        namespace = folder.local_namespace
        namespace.InsertUnit(
            unit_lib.Unit('degrees_celsius', 'temperature', False))
        namespace.InsertUnit(unit_lib.Unit('kelvin', 'temperature', True))
        unit_universe = unit_lib.UnitUniverse([folder])

        config_universe = presubmit_validate_types_lib.ConfigUniverse(
            subfield_universe=None,
            field_universe=None,
            entity_type_universe=None,
            state_universe=None,
            connection_universe=None,
            unit_universe=unit_universe)

        units = config_universe.GetUnitsForMeasurement(
            'zone_temperature_sensor')
        self.assertSameElements(['degrees_celsius', 'kelvin'], units)
        units = config_universe.GetUnitsForMeasurement('temperature_sensor')
        self.assertSameElements(['degrees_celsius', 'kelvin'], units)
        units = config_universe.GetUnitsForMeasurement(
            '/zone_temperature_sensor')
        self.assertSameElements(['degrees_celsius', 'kelvin'], units)
        units = config_universe.GetUnitsForMeasurement('/temperature_sensor')
        self.assertSameElements(['degrees_celsius', 'kelvin'], units)
        units = config_universe.GetUnitsForMeasurement('pressure_sensor')
        self.assertIsNone(units)
        units = config_universe.GetUnitsForMeasurement(
            'discharge_fan_lost_power_alarm')
        self.assertIsNone(units)
コード例 #2
0
    def testParseUnitFoldersFromGoodFiles(self):
        subfield_folders = parse.ParseSubfieldFoldersFromFiles(
            [self.global_subfields_file, self.local_subfields_file])
        subfield_universe = subfield_lib.SubfieldUniverse(subfield_folders)

        unit_folders = parse.ParseUnitFoldersFromFiles(
            [self.global_units_file], subfield_universe=subfield_universe)
        self.assertTrue(unit_folders)
        for folder in unit_folders:
            self.assertEmpty(folder.GetFindings())
            current_units = folder.local_namespace.GetUnitsForMeasurement(
                'current')
            temperature_units = folder.local_namespace.GetUnitsForMeasurement(
                'temperature')
            if not folder.local_namespace.namespace:
                # global namespace
                self.assertEqual(current_units['amperes'],
                                 unit_lib.Unit('amperes', True))
                self.assertEqual(current_units['milliamperes'],
                                 unit_lib.Unit('milliamperes'))
                self.assertEqual(temperature_units['kelvins'],
                                 unit_lib.Unit('kelvins', True))
                self.assertEqual(temperature_units['degrees_celsius'],
                                 unit_lib.Unit('degrees_celsius'))
                self.assertEqual(temperature_units['degrees_fahrenheit'],
                                 unit_lib.Unit('degrees_fahrenheit'))
コード例 #3
0
    def testParseUnitFoldersFromGoodFiles(self):
        subfield_folders = parse.ParseSubfieldFoldersFromFiles(
            [self.global_subfields_file, self.local_subfields_file])
        subfield_universe = subfield_lib.SubfieldUniverse(subfield_folders)

        unit_folders = parse.ParseUnitFoldersFromFiles(
            [self.global_units_file, self.local_units_file],
            subfield_universe=subfield_universe)
        self.assertLen(unit_folders, 2)
        for folder in unit_folders:
            self.assertEmpty(folder.GetFindings())
            units_map = folder.local_namespace.units
            if not folder.local_namespace.namespace:
                # global namespace
                self.assertEqual(units_map['amperes'],
                                 unit_lib.Unit('amperes', 'current', True))
                self.assertEqual(units_map['milliamperes'],
                                 unit_lib.Unit('milliamperes', 'current'))
            else:
                # local namespace
                self.assertEqual(folder.local_namespace.namespace, 'GOOD')
                self.assertEqual(units_map['kelvins'],
                                 unit_lib.Unit('kelvins', 'temperature', True))
                self.assertEqual(
                    units_map['degrees_celsius'],
                    unit_lib.Unit('degrees_celsius', 'temperature'))
                self.assertEqual(
                    units_map['degrees_fahrenheit'],
                    unit_lib.Unit('degrees_fahrenheit', 'temperature'))
コード例 #4
0
    def testUnitUniverseGetFindings(self):
        context = findings_lib.FileContext('{0}/file.yaml'.format(_GOOD_PATH))
        folder = unit_lib.UnitFolder(_GOOD_PATH)
        folder.AddFinding(
            findings_lib.InconsistentFileLocationError('', context))
        namespace = folder.local_namespace
        namespace.AddFinding(
            findings_lib.DuplicateUnitDefinitionError(
                unit_lib.Unit('unit', 'measurement'), 'namespace'))
        unit = unit_lib.Unit('unit', 'measurement')
        unit.AddFinding(
            findings_lib.UnknownUnitTagError(unit.name, 'tag', context))
        namespace.InsertUnit(unit)
        unit_universe = unit_lib.UnitUniverse([folder])

        findings = unit_universe.GetFindings()

        self.assertLen(findings, 3)
        self.assertTrue(
            unit_universe.HasFindingTypes([
                findings_lib.InconsistentFileLocationError,
                findings_lib.DuplicateUnitDefinitionError,
                findings_lib.UnknownUnitTagError,
            ]))
        self.assertFalse(unit_universe.IsValid())
コード例 #5
0
 def testUnitFolderAddDuplicateUnitFails(self):
     folder = unit_lib.UnitFolder(_GOOD_PATH)
     folder.AddUnit(unit_lib.Unit('unit', 'measurement'))
     self.assertIn('unit', folder.local_namespace.units)
     self.assertEmpty(folder.local_namespace.GetFindings())
     folder.AddUnit(unit_lib.Unit('unit', 'duplicate'))
     self.assertIsInstance(folder.local_namespace.GetFindings()[0],
                           findings_lib.DuplicateUnitDefinitionError)
コード例 #6
0
 def testUnitEquals(self):
     unit_one = unit_lib.Unit('unit_one')
     unit_one_dup = unit_lib.Unit('unit_one')
     unit_one_standard = unit_lib.Unit('unit_one', True)
     unit_two = unit_lib.Unit('unit_two')
     self.assertEqual(unit_one, unit_one_dup)
     self.assertNotEqual(unit_one, unit_one_standard)
     self.assertNotEqual(unit_one, unit_two)
コード例 #7
0
 def testUnitEquals(self):
     unit_one = unit_lib.Unit('unit_one', 'measurement')
     unit_one_dup = unit_lib.Unit('unit_one', 'measurement')
     unit_one_diff_measurement = unit_lib.Unit('unit_one', 'changed')
     unit_one_standard = unit_lib.Unit('unit_one', 'measurement', True)
     unit_two = unit_lib.Unit('unit_two', 'measurement')
     self.assertEqual(unit_one, unit_one_dup)
     self.assertNotEqual(unit_one, unit_one_diff_measurement)
     self.assertNotEqual(unit_one, unit_one_standard)
     self.assertNotEqual(unit_one, unit_two)
コード例 #8
0
    def testUnitUniverseGetUnitsMap(self):
        folder = unit_lib.UnitFolder(_GOOD_PATH)
        namespace = folder.local_namespace
        namespace.InsertUnit(
            unit_lib.Unit('degrees_celsius', 'temperature', False))
        namespace.InsertUnit(unit_lib.Unit('kelvins', 'temperature', True))
        unit_universe = unit_lib.UnitUniverse([folder])

        units = unit_universe.GetUnitsMap('mynamespace')

        self.assertIn('degrees_celsius', units)
        self.assertIn('kelvins', units)
コード例 #9
0
    def testUnitUniverseGetUnitsForMeasurement(self):
        folder = unit_lib.UnitFolder(_GOOD_PATH)
        namespace = folder.local_namespace
        namespace.InsertUnit('temperature',
                             unit_lib.Unit('degrees_celsius', False))
        namespace.InsertUnit('temperature', unit_lib.Unit('kelvins', True))
        namespace.InsertUnit('percent', unit_lib.Unit('percent', True))
        unit_universe = unit_lib.UnitUniverse([folder])

        units = unit_universe.GetUnitsForMeasurement('temperature',
                                                     'mynamespace')

        self.assertCountEqual(['degrees_celsius', 'kelvins'], units)
コード例 #10
0
    def testUnitFolderAddFromConfig(self):
        doc = {
            'temperature': [{
                'kelvins': 'STANDARD'
            }, 'degrees_celsius'],
        }
        folder = unit_lib.UnitFolder(_GOOD_PATH)
        folder.AddFromConfig([doc], '{0}/file.yaml'.format(_GOOD_PATH))

        units = folder.local_namespace.GetUnitsForMeasurement('temperature')
        self.assertEmpty(folder.GetFindings())
        self.assertCountEqual(['kelvins', 'degrees_celsius'], units)
        self.assertEqual(units['kelvins'], unit_lib.Unit('kelvins', True))
        self.assertEqual(units['degrees_celsius'],
                         unit_lib.Unit('degrees_celsius', False))
コード例 #11
0
 def testUnitFolderAddInvalidUnitFails(self):
     folder = unit_lib.UnitFolder(_GOOD_PATH)
     folder.AddUnit('invalid', unit_lib.Unit('bad-unit'))
     self.assertIsNone(
         folder.local_namespace.GetUnitsForMeasurement('invalid'))
     self.assertIsInstance(folder.GetFindings()[0],
                           findings_lib.InvalidUnitNameError)
コード例 #12
0
    def testFindingAddedForInvalidNamespace(self):
        folder = unit_lib.UnitFolder(_GOOD_PATH)
        namespace = folder.local_namespace
        namespace.parent_namespace = unit_lib.UnitNamespace('fake_parent')

        namespace.InsertUnit('temperature',
                             unit_lib.Unit('degrees_celsius', False))
        unit_universe = unit_lib.UnitUniverse([folder])

        findings_universe = findings_lib.FindingsUniverse([folder])
        findings = findings_universe.GetFindings()

        self.assertLen(findings, 1)
        self.assertTrue(
            unit_universe.HasFindingTypes(
                [findings_lib.InvalidUnitNamespaceError]))
        self.assertFalse(unit_universe.IsValid())
コード例 #13
0
 def testUnitFolderAddInvalidUnitFails(self):
     folder = unit_lib.UnitFolder(_GOOD_PATH)
     folder.AddUnit(unit_lib.Unit('bad-unit', 'invalid'))
     self.assertNotIn('bad-unit', folder.local_namespace.units)
     self.assertIsInstance(folder.GetFindings()[0],
                           findings_lib.IllegalCharacterError)
コード例 #14
0
 def testUnitFolderAddValidUnit(self):
     folder = unit_lib.UnitFolder(_GOOD_PATH)
     folder.AddUnit(unit_lib.Unit('unit', 'measurement'))
     self.assertIn('unit', folder.local_namespace.units)
     self.assertEmpty(folder.GetFindings())
コード例 #15
0
 def testUnitWithIllegalNameHasFindings(self):
     unit = unit_lib.Unit('BADUNIT', 'invalid')
     self.assertIsInstance(unit.GetFindings()[0],
                           findings_lib.IllegalCharacterError)
コード例 #16
0
 def testUnitWithIllegalKeyTypeHasFindings(self):
     unit = unit_lib.Unit(False, 'invalid')
     self.assertIsInstance(unit.GetFindings()[0],
                           findings_lib.IllegalKeyTypeError)