Coverage for tests/testSite.py : 9%

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
1from __future__ import with_statement
2from __future__ import division
3from builtins import str
4import numpy as np
5import unittest
6import warnings
7import lsst.utils.tests
9from lsst.sims.utils import Site
12def setup_module(module):
13 lsst.utils.tests.init()
16class SiteTest(unittest.TestCase):
18 def setUp(self):
19 # LSST default values taken from LSE-30
20 self.height = 2650.0
21 self.longitude = -70.7494
22 self.latitude = -30.2444
23 self.temperature = 11.5
24 self.humidity = 0.4
25 self.pressure = 750.0
26 self.lapseRate = 0.0065
28 def testLSST_values(self):
29 """
30 Test that LSST values are set correctly
31 """
32 site = Site(name='LSST')
33 self.assertEqual(site.name, 'LSST')
34 self.assertEqual(site.longitude, self.longitude)
35 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
36 self.assertEqual(site.latitude, self.latitude)
37 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
38 self.assertEqual(site.temperature, self.temperature)
39 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
40 self.assertEqual(site.pressure, self.pressure)
41 self.assertEqual(site.humidity, self.humidity)
42 self.assertEqual(site.lapseRate, self.lapseRate)
43 self.assertEqual(site.height, self.height)
45 def testNoDefaults(self):
46 """
47 Test that, if name is not 'LSST', values are set to None
48 """
49 with warnings.catch_warnings(record=True) as ww:
50 site = Site(name='bob')
52 msg = str(ww[0].message)
54 self.assertIn('longitude', msg)
55 self.assertIn('latitude', msg)
56 self.assertIn('temperature', msg)
57 self.assertIn('pressure', msg)
58 self.assertIn('height', msg)
59 self.assertIn('lapseRate', msg)
60 self.assertIn('humidity', msg)
62 self.assertEqual(site.name, 'bob')
63 self.assertIsNone(site.longitude)
64 self.assertIsNone(site.longitude_rad)
65 self.assertIsNone(site.latitude)
66 self.assertIsNone(site.latitude_rad)
67 self.assertIsNone(site.temperature)
68 self.assertIsNone(site.temperature_kelvin)
69 self.assertIsNone(site.pressure)
70 self.assertIsNone(site.humidity)
71 self.assertIsNone(site.lapseRate)
72 self.assertIsNone(site.height)
74 def testOverrideLSSTdefaults(self):
75 """
76 Test that, even if LSST is specified, we are capable of overriding
77 defaults
78 """
79 site = Site(name='LSST', longitude=26.0)
80 self.assertEqual(site.name, 'LSST')
81 self.assertEqual(site.longitude, 26.0)
82 self.assertEqual(site.longitude_rad, np.radians(26.0))
83 self.assertEqual(site.latitude, self.latitude)
84 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
85 self.assertEqual(site.temperature, self.temperature)
86 self.assertEqual(site.pressure, self.pressure)
87 self.assertEqual(site.humidity, self.humidity)
88 self.assertEqual(site.lapseRate, self.lapseRate)
89 self.assertEqual(site.height, self.height)
91 site = Site(name='LSST', latitude=88.0)
92 self.assertEqual(site.name, 'LSST')
93 self.assertEqual(site.longitude, self.longitude)
94 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
95 self.assertEqual(site.latitude, 88.0)
96 self.assertEqual(site.latitude_rad, np.radians(88.0))
97 self.assertEqual(site.temperature, self.temperature)
98 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
99 self.assertEqual(site.pressure, self.pressure)
100 self.assertEqual(site.humidity, self.humidity)
101 self.assertEqual(site.lapseRate, self.lapseRate)
102 self.assertEqual(site.height, self.height)
104 site = Site(name='LSST', height=4.0)
105 self.assertEqual(site.name, 'LSST')
106 self.assertEqual(site.longitude, self.longitude)
107 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
108 self.assertEqual(site.latitude, self.latitude)
109 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
110 self.assertEqual(site.temperature, self.temperature)
111 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
112 self.assertEqual(site.pressure, self.pressure)
113 self.assertEqual(site.humidity, self.humidity)
114 self.assertEqual(site.lapseRate, self.lapseRate)
115 self.assertEqual(site.height, 4.0)
117 site = Site(name='LSST', temperature=7.0)
118 self.assertEqual(site.name, 'LSST')
119 self.assertEqual(site.longitude, self.longitude)
120 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
121 self.assertEqual(site.latitude, self.latitude)
122 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
123 self.assertEqual(site.temperature, 7.0)
124 self.assertEqual(site.temperature_kelvin, 280.15)
125 self.assertEqual(site.pressure, self.pressure)
126 self.assertEqual(site.humidity, self.humidity)
127 self.assertEqual(site.lapseRate, self.lapseRate)
128 self.assertEqual(site.height, self.height)
130 site = Site(name='LSST', pressure=14.0)
131 self.assertEqual(site.name, 'LSST')
132 self.assertEqual(site.longitude, self.longitude)
133 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
134 self.assertEqual(site.latitude, self.latitude)
135 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
136 self.assertEqual(site.temperature, self.temperature)
137 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
138 self.assertEqual(site.pressure, 14.0)
139 self.assertEqual(site.humidity, self.humidity)
140 self.assertEqual(site.lapseRate, self.lapseRate)
141 self.assertEqual(site.height, self.height)
143 site = Site(name='LSST', humidity=2.1)
144 self.assertEqual(site.name, 'LSST')
145 self.assertEqual(site.longitude, self.longitude)
146 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
147 self.assertEqual(site.latitude, self.latitude)
148 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
149 self.assertEqual(site.temperature, self.temperature)
150 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
151 self.assertEqual(site.pressure, self.pressure)
152 self.assertEqual(site.humidity, 2.1)
153 self.assertEqual(site.lapseRate, self.lapseRate)
154 self.assertEqual(site.height, self.height)
156 site = Site(name='LSST', lapseRate=3.2)
157 self.assertEqual(site.name, 'LSST')
158 self.assertEqual(site.longitude, self.longitude)
159 self.assertEqual(site.longitude_rad, np.radians(self.longitude))
160 self.assertEqual(site.latitude, self.latitude)
161 self.assertEqual(site.latitude_rad, np.radians(self.latitude))
162 self.assertEqual(site.temperature, self.temperature)
163 self.assertEqual(site.temperature_kelvin, self.temperature + 273.15)
164 self.assertEqual(site.pressure, self.pressure)
165 self.assertEqual(site.humidity, self.humidity)
166 self.assertEqual(site.lapseRate, 3.2)
167 self.assertEqual(site.height, self.height)
169 def testPartialParams(self):
170 """
171 test that unspecified parameters get set to None
172 """
173 with warnings.catch_warnings(record=True) as ww:
174 site = Site(longitude=45.0, temperature=20.0)
176 msg = str(ww[0].message)
177 self.assertIn('latitude', msg)
178 self.assertIn('height', msg)
179 self.assertIn('pressure', msg)
180 self.assertIn('lapseRate', msg)
181 self.assertIn('humidity', msg)
182 self.assertNotIn('longitue', msg)
183 self.assertNotIn('temperature', msg)
185 self.assertIsNone(site.name)
186 self.assertIsNone(site.latitude)
187 self.assertIsNone(site.latitude_rad)
188 self.assertIsNone(site.height)
189 self.assertIsNone(site.pressure)
190 self.assertIsNone(site.humidity)
191 self.assertIsNone(site.lapseRate)
192 self.assertEqual(site.longitude, 45.0)
193 self.assertEqual(site.longitude_rad, np.pi / 4.0)
194 self.assertEqual(site.temperature, 20.0)
195 self.assertEqual(site.temperature_kelvin, 293.15)
197 def test_eq(self):
198 """
199 Test that we have correctly implemented __eq__ in Site
200 """
201 reference_site = Site(name='ref', longitude=112.12,
202 latitude=-83.121, temperature=112.1,
203 height=3124.2, pressure=891.2,
204 humidity=0.341, lapseRate=0.008)
206 other_site = Site(name='ref', longitude=112.12,
207 latitude=-83.121, temperature=112.1,
208 height=3124.2, pressure=891.2,
209 humidity=0.341, lapseRate=0.008)
211 self.assertEqual(reference_site, other_site)
212 self.assertFalse(reference_site != other_site)
213 self.assertTrue(reference_site == other_site)
215 # just in case we ever change the class to convert
216 # to radians only on demand, call for latitude/longitude
217 # in radians and then check that the two instances are
218 # still equal (since __eq__ just loops over the contents
219 # of self.__dict__, this could fail if other_site has not
220 # yet assigned a value to longitude/latitude_rad
221 reference_site.latitude_rad
222 self.assertEqual(reference_site, other_site)
223 self.assertFalse(reference_site != other_site)
224 self.assertTrue(reference_site == other_site)
226 reference_site.longitude_rad
227 self.assertEqual(reference_site, other_site)
228 self.assertFalse(reference_site != other_site)
229 self.assertTrue(reference_site == other_site)
231 reference_site.temperature_kelvin
232 self.assertEqual(reference_site, other_site)
233 self.assertFalse(reference_site != other_site)
234 self.assertTrue(reference_site == other_site)
236 # now test that __ne__ works correctly
237 other_site = Site(name='other', longitude=112.12,
238 latitude=-83.121, temperature=112.1,
239 height=3124.2, pressure=891.2,
240 humidity=0.341, lapseRate=0.008)
242 self.assertNotEqual(reference_site, other_site)
243 self.assertFalse(reference_site == other_site)
244 self.assertTrue(reference_site != other_site)
246 other_site = Site(name='ref', longitude=112.13,
247 latitude=-83.121, temperature=112.1,
248 height=3124.2, pressure=891.2,
249 humidity=0.341, lapseRate=0.008)
251 self.assertNotEqual(reference_site, other_site)
252 self.assertFalse(reference_site == other_site)
253 self.assertTrue(reference_site != other_site)
255 other_site = Site(name='ref', longitude=112.12,
256 latitude=-83.122, temperature=112.1,
257 height=3124.2, pressure=891.2,
258 humidity=0.341, lapseRate=0.008)
260 self.assertNotEqual(reference_site, other_site)
261 self.assertFalse(reference_site == other_site)
262 self.assertTrue(reference_site != other_site)
264 other_site = Site(name='ref', longitude=112.12,
265 latitude=-83.121, temperature=112.2,
266 height=3124.2, pressure=891.2,
267 humidity=0.341, lapseRate=0.008)
269 self.assertNotEqual(reference_site, other_site)
270 self.assertFalse(reference_site == other_site)
271 self.assertTrue(reference_site != other_site)
273 other_site = Site(name='ref', longitude=112.12,
274 latitude=-83.121, temperature=112.1,
275 height=3124.3, pressure=891.2,
276 humidity=0.341, lapseRate=0.008)
278 self.assertNotEqual(reference_site, other_site)
279 self.assertFalse(reference_site == other_site)
280 self.assertTrue(reference_site != other_site)
282 other_site = Site(name='ref', longitude=112.12,
283 latitude=-83.121, temperature=112.1,
284 height=3124.2, pressure=891.3,
285 humidity=0.341, lapseRate=0.008)
287 self.assertNotEqual(reference_site, other_site)
288 self.assertFalse(reference_site == other_site)
289 self.assertTrue(reference_site != other_site)
291 other_site = Site(name='ref', longitude=112.12,
292 latitude=-83.121, temperature=112.1,
293 height=3124.2, pressure=891.2,
294 humidity=0.342, lapseRate=0.008)
296 self.assertNotEqual(reference_site, other_site)
297 self.assertFalse(reference_site == other_site)
298 self.assertTrue(reference_site != other_site)
300 other_site = Site(name='ref', longitude=112.12,
301 latitude=-83.121, temperature=112.1,
302 height=3124.2, pressure=891.2,
303 humidity=0.341, lapseRate=0.009)
305 self.assertNotEqual(reference_site, other_site)
306 self.assertFalse(reference_site == other_site)
307 self.assertTrue(reference_site != other_site)
309 # test blank Sites
310 ref_site = Site()
311 other_site = Site()
312 self.assertEqual(ref_site, other_site)
313 self.assertTrue(ref_site == other_site)
314 self.assertFalse(ref_site != other_site)
317class MemoryTestClass(lsst.utils.tests.MemoryTestCase):
318 pass
320if __name__ == "__main__": 320 ↛ 321line 320 didn't jump to line 321, because the condition on line 320 was never true
321 lsst.utils.tests.init()
322 unittest.main()