Hide keyboard shortcuts

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 

3 

4from lsst.ts.observatory.model import ObservatoryState 

5import lsst.utils.tests 

6 

7class ObservatoryStateTest(unittest.TestCase): 

8 

9 def setUp(self): 

10 self.obs_state_default = ObservatoryState() 

11 

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 

29 

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'] 

52 

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 

75 

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']) 

122 

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']) 

142 

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) 

150 

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) 

154 

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) 

158 

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) 

165 

166class MemoryTestClass(lsst.utils.tests.MemoryTestCase): 

167 pass 

168 

169def setup_module(module): 

170 lsst.utils.tests.init() 

171 

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()