Coverage for tests/test_state.py : 13%

Hot-keys 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
1import math
2import unittest
4from lsst.ts.observatory.model import ObservatoryState
5import lsst.utils.tests
7class ObservatoryStateTest(unittest.TestCase):
9 def setUp(self):
10 self.obs_state_default = ObservatoryState()
12 self.ra_truth = 41.010349
13 self.dec_truth = -19.985964
14 self.ang_truth = 175.993874013319
15 self.alt_truth = 79.6715648342188
16 self.az_truth = 353.018554127083
17 self.pa_truth = 173.584814234084
18 self.rot_truth = -2.40905977923582
19 self.telalt_truth = 79.6715648342188
20 self.telaz_truth = -6.98144587291673
21 self.telrot_truth = -2.40905977923582
22 self.domalt_truth = 79.6715648342188
23 self.domaz_truth = -6.98144587291673
24 self.telalt_peakspeed_truth = -3.5
25 self.telaz_peakspeed_truth = -5.52367616573824
26 self.telrot_peakspeed_truth = 0.0
27 self.domalt_peakspeed_truth = -1.75
28 self.domaz_peakspeed_truth = -1.5
30 self.timestamp = 1672534239.91224
31 self.ra_rad_truth = math.radians(self.ra_truth)
32 self.dec_rad_truth = math.radians(self.dec_truth)
33 self.ang_rad_truth = math.radians(self.ang_truth)
34 self.band_filter_truth = 'y'
35 self.tracking_truth = True
36 self.alt_rad_truth = math.radians(self.alt_truth)
37 self.az_rad_truth = math.radians(self.az_truth)
38 self.pa_rad_truth = math.radians(self.pa_truth)
39 self.rot_rad_truth = math.radians(self.rot_truth)
40 self.telalt_rad_truth = math.radians(self.telalt_truth)
41 self.telaz_rad_truth = math.radians(self.telaz_truth)
42 self.telrot_rad_truth = math.radians(self.telrot_truth)
43 self.domalt_rad_truth = math.radians(self.domalt_truth)
44 self.domaz_rad_truth = math.radians(self.domaz_truth)
45 self.telalt_peakspeed_rad_truth = math.radians(self.telalt_peakspeed_truth)
46 self.telaz_peakspeed_rad_truth = math.radians(self.telaz_peakspeed_truth)
47 self.telrot_peakspeed_rad_truth = math.radians(self.telrot_peakspeed_truth)
48 self.domalt_peakspeed_rad_truth = math.radians(self.domalt_peakspeed_truth)
49 self.domaz_peakspeed_rad_truth = math.radians(self.domaz_peakspeed_truth)
50 self.mounted_filters_truth = ['g', 'r', 'i', 'y', 'u']
51 self.unmounted_filters_truth = ['z']
53 self.obs_state_new = ObservatoryState(self.timestamp,
54 self.ra_rad_truth,
55 self.dec_rad_truth,
56 self.ang_rad_truth,
57 self.band_filter_truth,
58 self.tracking_truth,
59 self.alt_rad_truth,
60 self.az_rad_truth,
61 self.pa_rad_truth,
62 self.rot_rad_truth,
63 self.telalt_rad_truth,
64 self.telaz_rad_truth,
65 self.telrot_rad_truth,
66 self.domalt_rad_truth,
67 self.domaz_rad_truth,
68 self.mounted_filters_truth,
69 self.unmounted_filters_truth)
70 self.obs_state_new.telalt_peakspeed_rad = self.telalt_peakspeed_rad_truth
71 self.obs_state_new.telaz_peakspeed_rad = self.telaz_peakspeed_rad_truth
72 self.obs_state_new.telrot_peakspeed_rad = self.telrot_peakspeed_rad_truth
73 self.obs_state_new.domalt_peakspeed_rad = self.domalt_peakspeed_rad_truth
74 self.obs_state_new.domaz_peakspeed_rad = self.domaz_peakspeed_rad_truth
76 def check_observatory_state(self, obs_state, position_only=False):
77 self.assertEqual(obs_state.time, self.timestamp)
78 self.assertEqual(obs_state.ra, self.ra_truth)
79 self.assertEqual(obs_state.dec, self.dec_truth)
80 self.assertEqual(obs_state.ang, self.ang_truth)
81 self.assertEqual(obs_state.filter, self.band_filter_truth)
82 self.assertTrue(obs_state.tracking)
83 self.assertEqual(obs_state.alt, self.alt_truth)
84 self.assertEqual(obs_state.az, self.az_truth)
85 self.assertEqual(obs_state.pa, self.pa_truth)
86 self.assertEqual(obs_state.rot, self.rot_truth)
87 if not position_only:
88 self.assertEqual(obs_state.telalt, self.telalt_truth)
89 self.assertEqual(obs_state.telaz, self.telaz_truth)
90 self.assertEqual(obs_state.telrot, self.telrot_truth)
91 self.assertEqual(obs_state.domalt, self.domalt_truth)
92 self.assertEqual(obs_state.domaz, self.domaz_truth)
93 self.assertEqual(obs_state.telalt_peakspeed,
94 self.telalt_peakspeed_truth)
95 self.assertEqual(obs_state.telaz_peakspeed,
96 self.telaz_peakspeed_truth)
97 self.assertEqual(obs_state.telrot_peakspeed,
98 self.telrot_peakspeed_truth)
99 self.assertEqual(obs_state.domalt_peakspeed,
100 self.domalt_peakspeed_truth)
101 self.assertAlmostEqual(obs_state.domaz_peakspeed,
102 self.domaz_peakspeed_truth, places=1)
103 self.assertListEqual(obs_state.mountedfilters,
104 self.mounted_filters_truth)
105 self.assertListEqual(obs_state.unmountedfilters,
106 self.unmounted_filters_truth)
107 else:
108 self.assertEqual(obs_state.telalt, self.alt_truth)
109 self.assertEqual(obs_state.telaz, self.az_truth)
110 self.assertEqual(obs_state.telrot, self.rot_truth)
111 self.assertEqual(obs_state.domalt, self.alt_truth)
112 self.assertEqual(obs_state.domaz, self.az_truth)
113 self.assertEqual(obs_state.telalt_peakspeed, 0.0)
114 self.assertEqual(obs_state.telaz_peakspeed, 0.0)
115 self.assertEqual(obs_state.telrot_peakspeed, 0.0)
116 self.assertEqual(obs_state.domalt_peakspeed, 0.0)
117 self.assertEqual(obs_state.domaz_peakspeed, 0.0)
118 self.assertListEqual(obs_state.mountedfilters,
119 ['g', 'r', 'i', 'z', 'y'])
120 self.assertListEqual(obs_state.unmountedfilters,
121 ['u'])
123 def test_basic_information_after_default_creation(self):
124 self.assertEqual(self.obs_state_default.time, 0.0)
125 self.assertEqual(self.obs_state_default.ra_rad, 0.0)
126 self.assertEqual(self.obs_state_default.dec_rad, 0.0)
127 self.assertEqual(self.obs_state_default.ang_rad, 0.0)
128 self.assertEqual(self.obs_state_default.filter, 'r')
129 self.assertFalse(self.obs_state_default.tracking)
130 self.assertEqual(self.obs_state_default.alt_rad, 1.5)
131 self.assertEqual(self.obs_state_default.az_rad, 0.0)
132 self.assertEqual(self.obs_state_default.pa_rad, 0.0)
133 self.assertEqual(self.obs_state_default.rot_rad, 0.0)
134 self.assertEqual(self.obs_state_default.telalt_rad, 1.5)
135 self.assertEqual(self.obs_state_default.telaz_rad, 0.0)
136 self.assertEqual(self.obs_state_default.telrot_rad, 0.0)
137 self.assertEqual(self.obs_state_default.domalt_rad, 1.5)
138 self.assertEqual(self.obs_state_default.domaz_rad, 0.0)
139 self.assertListEqual(self.obs_state_default.mountedfilters,
140 ['g', 'r', 'i', 'z', 'y'])
141 self.assertListEqual(self.obs_state_default.unmountedfilters, ['u'])
143 def test_string_representation(self):
144 truth_str = "t=0.0 ra=0.000 dec=0.000 ang=0.000 filter=r "\
145 "track=False alt=85.944 az=0.000 pa=0.000 rot=0.000 "\
146 "telaz=0.000 telrot=0.000 "\
147 "mounted=['g', 'r', 'i', 'z', 'y'] "\
148 "unmounted=['u']"
149 self.assertEqual(str(self.obs_state_default), truth_str)
151 def test_state_set(self):
152 self.obs_state_default.set(self.obs_state_new)
153 self.check_observatory_state(self.obs_state_default)
155 def test_state_set_position(self):
156 self.obs_state_default.set_position(self.obs_state_new)
157 self.check_observatory_state(self.obs_state_default, position_only=True)
159 def test_swap_filter(self):
160 self.obs_state_default.swap_filter('u', 'z')
161 self.assertListEqual(self.obs_state_default.mountedfilters,
162 self.mounted_filters_truth)
163 self.assertListEqual(self.obs_state_default.unmountedfilters,
164 self.unmounted_filters_truth)
166class MemoryTestClass(lsst.utils.tests.MemoryTestCase):
167 pass
169def setup_module(module):
170 lsst.utils.tests.init()
172if __name__ == "__main__": 172 ↛ 173line 172 didn't jump to line 173, because the condition on line 172 was never true
173 lsst.utils.tests.init()
174 unittest.main()