Coverage for tests / tests_config / test_definitions.py: 100%
58 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-09 16:40 +0100
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-09 16:40 +0100
1# SPDX-FileCopyrightText: Copyright INRIA
2#
3# SPDX-License-Identifier: LGPL-3.0-only
4#
5# Copyright INRIA
6#
7# This file is part of PhysioBlocks, a library mostly developed by the
8# [Ananke project-team](https://team.inria.fr/ananke) at INRIA.
9#
10# Authors:
11# - Colin Drieu
12# - Dominique Chapelle
13# - François Kimmig
14# - Philippe Moireau
15#
16# PhysioBlocks is free software: you can redistribute it and/or modify it under the
17# terms of the GNU Lesser General Public License as published by the Free Software
18# Foundation, version 3 of the License.
19#
20# PhysioBlocks is distributed in the hope that it will be useful, but WITHOUT ANY
21# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
22# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
23#
24# You should have received a copy of the GNU Lesser General Public License along with
25# PhysioBlocks. If not, see <https://www.gnu.org/licenses/>.
27from copy import deepcopy
29import pytest
31from physioblocks.configuration.base import Configuration
33ROOT_ID = "root"
34ITEMS_ID = "items"
35ITEM_A_ID = "a"
36ITEM_B_ID = "b"
37TYPE_1_ID = "type_1"
38VAL_ID = "val"
39TYPE_2_ID = "type_2"
40SUB_TYPE_1_ID = "sub_type_2_1"
41SUB_TYPE_2_ID = "sub_type_2_2"
42FIRST = "first"
43SECOND = "second"
44WRONG_KEY = "wrong"
47@pytest.fixture
48def configuration() -> Configuration:
49 root_item = Configuration(ROOT_ID)
50 root_item[VAL_ID] = True
51 root_item[ITEM_A_ID] = [
52 Configuration(TYPE_1_ID, {VAL_ID: FIRST}),
53 Configuration(TYPE_1_ID, {VAL_ID: SECOND}),
54 ]
55 child_2 = Configuration(TYPE_2_ID)
57 child_2[ITEMS_ID] = [Configuration(SUB_TYPE_1_ID), Configuration(SUB_TYPE_2_ID)]
58 root_item[ITEM_B_ID] = child_2
60 return root_item
63class TestConfiguration:
64 def test_get_set_items(self, configuration: Configuration):
65 assert ITEM_A_ID in configuration
66 assert configuration[VAL_ID] is True
67 configuration[VAL_ID] = False
68 assert configuration[VAL_ID] is False
70 for key in configuration:
71 assert key in [VAL_ID, ITEM_A_ID, ITEM_B_ID]
73 def test_items(self, configuration: Configuration):
74 assert configuration.items() == configuration.configuration_items.items()
76 def test_keys(self, configuration: Configuration):
77 assert configuration.keys() == configuration.configuration_items.keys()
79 def test_equals(self, configuration: Configuration):
80 assert configuration != configuration[VAL_ID]
81 config_copy = deepcopy(configuration)
82 assert configuration == config_copy
83 config_ne_label = deepcopy(config_copy)
84 config_ne_label.label = "Other"
85 assert configuration != config_ne_label
86 config_ne_len = deepcopy(config_copy)
87 config_ne_len.configuration_items.pop(VAL_ID)
88 assert configuration != config_ne_len
89 config_ne_key = deepcopy(config_copy)
90 config_ne_key.configuration_items.pop(VAL_ID)
91 config_ne_key["Other"] = True
92 assert configuration != config_ne_key
93 config_ne_val = deepcopy(config_copy)
94 config_ne_val.configuration_items[VAL_ID] = False
95 assert configuration != config_ne_val
97 def test_copy(self, configuration: Configuration):
98 config_copy = configuration.copy()
99 assert configuration is not config_copy
100 assert configuration.configuration_items is not config_copy.configuration_items
101 assert configuration == config_copy