1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-06-18 14:26:09 +01:00

utils/types: better enum class member setting

- What used to be enum.values is now enum.levels.
- Add enum.names and enum.values that are lists of enum's levels' names
  and values respectively.
- Add a check on creation to make sure that provided level names do not
  conflict with the atomatically created members.
This commit is contained in:
Sergei Trofimov
2017-08-09 15:24:57 +01:00
parent 8d27b50a7c
commit a9959550af
4 changed files with 24 additions and 8 deletions
tests
wa
framework
utils

@ -107,6 +107,14 @@ class TestEnumLevel(TestCase):
e = enum(['one', 'two', 'three'], start=-10, step=10)
assert_list_equal(e.values, [-10, 0, 10])
def test_enum_name_conflicts(self):
assert_raises(ValueError, enum, ['names', 'one', 'two'])
e = enum(['NAMES', 'one', 'two'])
assert_in('names', e.levels)
assert_list_equal(e.names, ['names', 'one', 'two'])
assert_equal(e.NAMES, 'names')
def test_enum_behavior(self):
e = enum(['one', 'two', 'three'])
@ -118,9 +126,9 @@ class TestEnumLevel(TestCase):
assert_not_equal(e.one, '0')
# ditto for enum membership tests
assert_in('one', e.values)
assert_in(2, e.values)
assert_not_in('five', e.values)
assert_in('one', e.levels)
assert_in(2, e.levels)
assert_not_in('five', e.levels)
# The same level object returned, only when
# passing in a valid level name/value.