Coverage for tests/test_ticket1911.py: 17%
40 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-06 03:53 -0700
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-06 03:53 -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 """Test ticket 1911."""
36 def setUp(self):
37 class Configurable:
38 class ConfigClass(pexConf.Config):
39 v = pexConf.Field(dtype=int, doc="dummy int field for registry configurable", default=0)
41 def __init__(self, cfg):
42 self.value = cfg.v
44 self.registry = pexConf.makeRegistry("registry for Configurable", Configurable.ConfigClass)
45 self.registry.register("C1", Configurable)
46 self.registry.register("C2", Configurable)
48 def testCustomDefaults(self):
49 class Config1(pexConf.Config):
50 r1 = self.registry.makeField("single-item registry field")
51 r2 = self.registry.makeField("single-item registry field", multi=True)
53 def setDefaults(self):
54 self.r1.name = "C1"
55 self.r2.names = ["C2"]
57 typemap = {"B": Config1}
59 class Config2(pexConf.Config):
60 c = pexConf.ConfigField(dtype=Config1, doc="holder for Config1")
61 b = pexConf.ConfigChoiceField(typemap=typemap, doc="choice holder for Config1")
63 c1 = Config1()
64 self.assertEqual(c1.r1.name, "C1")
65 self.assertEqual(list(c1.r2.names), ["C2"])
66 print(c1.r1.target)
67 print(c1.r2.targets)
68 c1.validate()
69 c2 = Config2()
70 self.assertEqual(Config2.c.default, Config1)
71 self.assertEqual(c2.c.r1.name, "C1")
72 self.assertEqual(list(c2.c.r2.names), ["C2"])
73 self.assertEqual(type(c2.b["B"]), Config1)
74 c2.b.name = "B"
75 self.assertEqual(c2.b.active.r1.name, "C1")
76 self.assertEqual(list(c2.b.active.r2.names), ["C2"])
77 c2.c = Config1
80if __name__ == "__main__": 80 ↛ 81line 80 didn't jump to line 81, because the condition on line 80 was never true
81 unittest.main()