Coverage for tests/test_ticket1911.py: 17%
40 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-24 23:51 -0700
« prev ^ index » next coverage.py v7.5.0, created at 2024-04-24 23:51 -0700
1# This file is part of pex_config.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This software is dual licensed under the GNU General Public License and also
10# under a 3-clause BSD license. Recipients may choose which of these licenses
11# to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12# respectively. If you choose the GPL option then the following text applies
13# (but note that there is still no warranty even if you opt for BSD instead):
14#
15# This program is free software: you can redistribute it and/or modify
16# it under the terms of the GNU General Public License as published by
17# the Free Software Foundation, either version 3 of the License, or
18# (at your option) any later version.
19#
20# This program is distributed in the hope that it will be useful,
21# but WITHOUT ANY WARRANTY; without even the implied warranty of
22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23# GNU General Public License for more details.
24#
25# You should have received a copy of the GNU General Public License
26# along with this program. If not, see <http://www.gnu.org/licenses/>.
28import unittest
30import lsst.pex.config as pexConf
33class SubConfigDefaultsTest(unittest.TestCase):
34 def setUp(self):
35 class Configurable:
36 class ConfigClass(pexConf.Config):
37 v = pexConf.Field(dtype=int, doc="dummy int field for registry configurable", default=0)
39 def __init__(self, cfg):
40 self.value = cfg.v
42 self.registry = pexConf.makeRegistry("registry for Configurable", Configurable.ConfigClass)
43 self.registry.register("C1", Configurable)
44 self.registry.register("C2", Configurable)
46 def testCustomDefaults(self):
47 class Config1(pexConf.Config):
48 r1 = self.registry.makeField("single-item registry field")
49 r2 = self.registry.makeField("single-item registry field", multi=True)
51 def setDefaults(self):
52 self.r1.name = "C1"
53 self.r2.names = ["C2"]
55 typemap = {"B": Config1}
57 class Config2(pexConf.Config):
58 c = pexConf.ConfigField(dtype=Config1, doc="holder for Config1")
59 b = pexConf.ConfigChoiceField(typemap=typemap, doc="choice holder for Config1")
61 c1 = Config1()
62 self.assertEqual(c1.r1.name, "C1")
63 self.assertEqual(list(c1.r2.names), ["C2"])
64 print(c1.r1.target)
65 print(c1.r2.targets)
66 c1.validate()
67 c2 = Config2()
68 self.assertEqual(Config2.c.default, Config1)
69 self.assertEqual(c2.c.r1.name, "C1")
70 self.assertEqual(list(c2.c.r2.names), ["C2"])
71 self.assertEqual(type(c2.b["B"]), Config1)
72 c2.b.name = "B"
73 self.assertEqual(c2.b.active.r1.name, "C1")
74 self.assertEqual(list(c2.b.active.r2.names), ["C2"])
75 c2.c = Config1
78if __name__ == "__main__": 78 ↛ 79line 78 didn't jump to line 79, because the condition on line 78 was never true
79 unittest.main()