aboutsummaryrefslogtreecommitdiff
path: root/tests/mlia/test_core_mixins.py
diff options
context:
space:
mode:
authorDiego Russo <diego.russo@arm.com>2022-05-30 13:34:14 +0100
committerDiego Russo <diego.russo@arm.com>2022-05-30 13:34:14 +0100
commit0efca3cadbad5517a59884576ddb90cfe7ac30f8 (patch)
treeabed6cb6fbf3c439fc8d947f505b6a53d5daeb1e /tests/mlia/test_core_mixins.py
parent0777092695c143c3a54680b5748287d40c914c35 (diff)
downloadmlia-0efca3cadbad5517a59884576ddb90cfe7ac30f8.tar.gz
Add MLIA codebase0.3.0-rc.1
Add MLIA codebase including sources and tests. Change-Id: Id41707559bd721edd114793618d12ccd188d8dbd
Diffstat (limited to 'tests/mlia/test_core_mixins.py')
-rw-r--r--tests/mlia/test_core_mixins.py99
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/mlia/test_core_mixins.py b/tests/mlia/test_core_mixins.py
new file mode 100644
index 0000000..d66213d
--- /dev/null
+++ b/tests/mlia/test_core_mixins.py
@@ -0,0 +1,99 @@
+# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
+# SPDX-License-Identifier: Apache-2.0
+"""Tests for the module mixins."""
+import pytest
+
+from mlia.core.common import AdviceCategory
+from mlia.core.context import Context
+from mlia.core.context import ExecutionContext
+from mlia.core.mixins import ContextMixin
+from mlia.core.mixins import ParameterResolverMixin
+
+
+def test_context_mixin(dummy_context: Context) -> None:
+ """Test ContextMixin."""
+
+ class SampleClass(ContextMixin):
+ """Sample class."""
+
+ sample_object = SampleClass()
+ sample_object.set_context(dummy_context)
+ assert sample_object.context == dummy_context
+
+
+class TestParameterResolverMixin:
+ """Tests for parameter resolver mixin."""
+
+ @staticmethod
+ def test_parameter_resolver_mixin(dummy_context: ExecutionContext) -> None:
+ """Test ParameterResolverMixin."""
+
+ class SampleClass(ParameterResolverMixin):
+ """Sample class."""
+
+ def __init__(self) -> None:
+ """Init sample object."""
+ self.context = dummy_context
+
+ self.context.update(
+ advice_category=AdviceCategory.OPERATORS,
+ event_handlers=[],
+ config_parameters={"section": {"param": 123}},
+ )
+
+ sample_object = SampleClass()
+ value = sample_object.get_parameter("section", "param")
+ assert value == 123
+
+ with pytest.raises(
+ Exception, match="Parameter param expected to have type <class 'str'>"
+ ):
+ value = sample_object.get_parameter("section", "param", expected_type=str)
+
+ with pytest.raises(Exception, match="Parameter no_param is not set"):
+ value = sample_object.get_parameter("section", "no_param")
+
+ @staticmethod
+ def test_parameter_resolver_mixin_no_config(
+ dummy_context: ExecutionContext,
+ ) -> None:
+ """Test ParameterResolverMixin without config params."""
+
+ class SampleClassNoConfig(ParameterResolverMixin):
+ """Sample context without config params."""
+
+ def __init__(self) -> None:
+ """Init sample object."""
+ self.context = dummy_context
+
+ with pytest.raises(Exception, match="Configuration parameters are not set"):
+ sample_object_no_config = SampleClassNoConfig()
+ sample_object_no_config.get_parameter("section", "param", expected_type=str)
+
+ @staticmethod
+ def test_parameter_resolver_mixin_bad_section(
+ dummy_context: ExecutionContext,
+ ) -> None:
+ """Test ParameterResolverMixin without config params."""
+
+ class SampleClassBadSection(ParameterResolverMixin):
+ """Sample context with bad section in config."""
+
+ def __init__(self) -> None:
+ """Init sample object."""
+ self.context = dummy_context
+ self.context.update(
+ advice_category=AdviceCategory.OPERATORS,
+ event_handlers=[],
+ config_parameters={"section": ["param"]},
+ )
+
+ with pytest.raises(
+ Exception,
+ match="Parameter section section has wrong format, "
+ "expected to be a dictionary",
+ ):
+ sample_object_bad_section = SampleClassBadSection()
+ sample_object_bad_section.get_parameter(
+ "section", "param", expected_type=str
+ )