Belle II Software  release-05-02-19
module_setparameters.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """Tests for :func:`basf2.set_module_parameters`"""
5 
6 import basf2
7 import unittest
8 
9 
10 class SetModuleParameters(unittest.TestCase):
11  """Test fixture to check setting of parameters for modules in a path by name"""
12 
13  def setUp(self):
14  """Setup a path with a few EventInfoSetter modules with special names"""
15 
16  self.m1 = basf2.register_module("EventInfoSetter")
17  self.m1.set_name("evt1")
18 
19  self.m2 = basf2.register_module("EventInfoSetter")
20  self.m2.set_name("evt2")
21 
22  self.m3 = basf2.register_module("EventInfoSetter")
23  self.m3.set_name("evt1")
24 
25  self.path = basf2.create_path()
26 
27  self.subpath = basf2.create_path()
28  self.path.add_module(self.m1)
29  self.path.add_module(self.m2)
30  self.subpath.add_module(self.m3)
31 
32  def check_parameters(self, module, **params):
33  """Check if the parameters of a module are set explicitly to a given value
34 
35  module: basf2.Module instance
36  params: named parameters of to check for
37  """
38  for p in module.available_params():
39  if p.name in params:
40  self.assertTrue(p.setInSteering)
41  self.assertEqual(p.values, params[p.name])
42 
43  def check_unset(self, module):
44  """Check that all parameters of a given module are not set explicitely"""
45  for p in module.available_params():
46  self.assertFalse(p.setInSteering)
47 
48  def test_simple(self):
49  """Check setting the parameters for one module and that it does not affect the other modules"""
50  self.check_unset(self.m1)
51  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3])
52  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
53  self.check_unset(self.m2)
54  self.check_unset(self.m3)
55  basf2.set_module_parameters(self.path, "evt2", evtNumList=[4])
56  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
57  self.check_parameters(self.m2, evtNumList=[4])
58  self.check_unset(self.m3)
59 
60  def test_double(self):
61  """Check that it also works if more than one module with the name exists"""
62  self.path.add_module(self.m3)
63  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3])
64  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
65  self.check_unset(self.m2)
66  self.check_parameters(self.m3, evtNumList=[1, 2, 3])
67 
68  def test_empty(self):
69  """Make sure that not supplying any parameters gives a ValueError"""
70  with self.assertRaises(ValueError):
71  basf2.set_module_parameters(self.path, "evt1")
72 
73  def test_missing(self):
74  """Make sure that not finding any module of the given name raises a KeyError"""
75  with self.assertRaises(KeyError):
76  basf2.set_module_parameters(self.path, "evt3", evtNumList=[0])
77 
79  """Make sure that being unable to set the parameter raises a RuntimeError"""
80  with self.assertRaises(RuntimeError):
81  basf2.set_module_parameters(self.path, "evt1", foo="bar")
82 
83  def test_condition(self):
84  """check that modules in a condition sub path are not affected by default"""
85  self.m2.if_true(self.subpath)
86  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3])
87  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
88  self.check_unset(self.m2)
89  self.check_unset(self.m3)
90 
92  """check that modules in a condition sub path are affected in recursive mode"""
93  self.m2.if_true(self.subpath)
94  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3], recursive=True)
95  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
96  self.check_unset(self.m2)
97  self.check_parameters(self.m3, evtNumList=[1, 2, 3])
98 
99  def test_subevent(self):
100  """check that modules in a for_each sub path are not affected by default"""
101  self.path.for_each("foo", "foos", self.subpath)
102  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3])
103  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
104  self.check_unset(self.m2)
105  self.check_unset(self.m3)
106 
108  """check that modules in a for_each sub path are affected in recursive mode"""
109  self.path.for_each("foo", "foos", self.subpath)
110  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3], recursive=True)
111  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
112  self.check_unset(self.m2)
113  self.check_parameters(self.m3, evtNumList=[1, 2, 3])
114 
116  """check that it also works with a conditions and a for_each sub path in recursive mode"""
117  sub2 = basf2.create_path()
118  m4 = sub2.add_module("EventInfoSetter")
119  m4.set_name("evt1")
120  self.m2.if_true(self.subpath)
121  self.path.for_each("foo", "foos", sub2)
122  basf2.set_module_parameters(self.path, "evt1", evtNumList=[1, 2, 3], recursive=True)
123  self.check_parameters(self.m1, evtNumList=[1, 2, 3])
124  self.check_unset(self.m2)
125  self.check_parameters(self.m3, evtNumList=[1, 2, 3])
126  self.check_parameters(m4, evtNumList=[1, 2, 3])
127 
128 
129 if __name__ == '__main__':
130  unittest.main()
module_setparameters.SetModuleParameters.check_unset
def check_unset(self, module)
Definition: module_setparameters.py:43
module_setparameters.SetModuleParameters.check_parameters
def check_parameters(self, module, **params)
Definition: module_setparameters.py:32
module_setparameters.SetModuleParameters.test_simple
def test_simple(self)
Definition: module_setparameters.py:48
module_setparameters.SetModuleParameters.path
path
main test path
Definition: module_setparameters.py:25
module_setparameters.SetModuleParameters.test_condition_recursive
def test_condition_recursive(self)
Definition: module_setparameters.py:91
module_setparameters.SetModuleParameters.test_subevent_recursive
def test_subevent_recursive(self)
Definition: module_setparameters.py:107
module_setparameters.SetModuleParameters.test_missing
def test_missing(self)
Definition: module_setparameters.py:73
module_setparameters.SetModuleParameters.setUp
def setUp(self)
Definition: module_setparameters.py:13
module_setparameters.SetModuleParameters.m1
m1
first test module
Definition: module_setparameters.py:16
module_setparameters.SetModuleParameters.subpath
subpath
secondary test path
Definition: module_setparameters.py:27
module_setparameters.SetModuleParameters.test_undefined_param
def test_undefined_param(self)
Definition: module_setparameters.py:78
module_setparameters.SetModuleParameters.test_empty
def test_empty(self)
Definition: module_setparameters.py:68
module_setparameters.SetModuleParameters.m3
m3
third test module
Definition: module_setparameters.py:22
module_setparameters.SetModuleParameters.test_subevent
def test_subevent(self)
Definition: module_setparameters.py:99
module_setparameters.SetModuleParameters.m2
m2
second test module
Definition: module_setparameters.py:19
module_setparameters.SetModuleParameters.test_condition
def test_condition(self)
Definition: module_setparameters.py:83
module_setparameters.SetModuleParameters.test_condition_subevent
def test_condition_subevent(self)
Definition: module_setparameters.py:115
module_setparameters.SetModuleParameters.test_double
def test_double(self)
Definition: module_setparameters.py:60
module_setparameters.SetModuleParameters
Definition: module_setparameters.py:10