| #!/usr/bin/env python3 |
| # Copyright 2022 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Add an interface class for defining TestCase Enums.""" |
| |
| from __future__ import annotations |
| |
| from enum import Enum |
| |
| |
| class TestCase(Enum): |
| ... |
| # The `value` should be a tuple with first value being the description. |
| # Any additional info can be placed in extra tuple positions. |
| # |
| # Example: |
| # One = ("One's description", ...) |
| |
| @classmethod |
| def all(cls) -> list[TestCase]: |
| return [level for level in cls] |
| |
| @classmethod |
| def all_values(cls, s=slice(None)) -> list[str]: |
| return [level.value[s] for level in cls] |
| |
| def __str__(self) -> str: |
| return self.name |
| |
| def description(self) -> str: |
| """Get the description for the given test case.""" |
| assert type(self.value) == tuple |
| assert len(self.value) >= 1 |
| assert type(self.value[0]) == str |
| return self.value[0] |
| |
| def extra(self) -> tuple: |
| """Get extra value tuple info.""" |
| assert type(self.value) == tuple |
| assert len(self.value) >= 1 |
| assert type(self.value[0]) == str |
| return self.value[1:] |