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

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/>. 

26 

27from copy import deepcopy 

28 

29import pytest 

30 

31from physioblocks.configuration.base import Configuration 

32 

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" 

45 

46 

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) 

56 

57 child_2[ITEMS_ID] = [Configuration(SUB_TYPE_1_ID), Configuration(SUB_TYPE_2_ID)] 

58 root_item[ITEM_B_ID] = child_2 

59 

60 return root_item 

61 

62 

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 

69 

70 for key in configuration: 

71 assert key in [VAL_ID, ITEM_A_ID, ITEM_B_ID] 

72 

73 def test_items(self, configuration: Configuration): 

74 assert configuration.items() == configuration.configuration_items.items() 

75 

76 def test_keys(self, configuration: Configuration): 

77 assert configuration.keys() == configuration.configuration_items.keys() 

78 

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 

96 

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