Coverage for tests/test_ticket1911.py: 17%
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
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
29import lsst.pex.config as pexConf
32class 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
41 self.registry = pexConf.makeRegistry("registry for Configurable", Configurable.ConfigClass)
42 self.registry.register("C1", Configurable)
43 self.registry.register("C2", Configurable)
45 def testCustomDefaults(self):
46 class Config1(pexConf.Config):
47 r1 = self.registry.makeField("single-item registry field")
48 r2 = self.registry.makeField("single-item registry field", multi=True)
50 def setDefaults(self):
51 self.r1.name = "C1"
52 self.r2.names = ["C2"]
53 typemap = {"B": Config1}
55 class Config2(pexConf.Config):
56 c = pexConf.ConfigField(dtype=Config1, doc="holder for Config1")
57 b = pexConf.ConfigChoiceField(typemap=typemap, doc="choice holder for Config1")
58 c1 = Config1()
59 self.assertEqual(c1.r1.name, "C1")
60 self.assertEqual(list(c1.r2.names), ["C2"])
61 print(c1.r1.target)
62 print(c1.r2.targets)
63 c1.validate()
64 c2 = Config2()
65 self.assertEqual(Config2.c.default, Config1)
66 self.assertEqual(c2.c.r1.name, "C1")
67 self.assertEqual(list(c2.c.r2.names), ["C2"])
68 self.assertEqual(type(c2.b["B"]), Config1)
69 c2.b.name = "B"
70 self.assertEqual(c2.b.active.r1.name, "C1")
71 self.assertEqual(list(c2.b.active.r2.names), ["C2"])
72 c2.c = Config1
75if __name__ == "__main__": 75 ↛ 76line 75 didn't jump to line 76, because the condition on line 75 was never true
76 unittest.main()