Coverage for tests/test_skyFrame.py: 94%

127 statements  

« prev     ^ index     » next       coverage.py v7.16.1, created at 2026-09-23 09:34 +0000

1import math 

2import unittest 

3 

4from numpy.testing import assert_allclose 

5 

6import astshim as ast 

7from astshim.test import MappingTestCase 

8 

9 

10class TestSkyFrame(MappingTestCase): 

11 

12 def test_FrameBasics(self): 

13 frame = ast.SkyFrame() 

14 self.assertEqual(frame.className, "SkyFrame") 

15 self.assertEqual(frame.nIn, 2) 

16 self.assertEqual(frame.nAxes, 2) 

17 self.assertEqual(frame.maxAxes, 2) 

18 self.assertEqual(frame.minAxes, 2) 

19 

20 # default values for Frame properties (methods below test 

21 # setters and getters of SkyFrame properties) 

22 self.assertEqual(frame.alignSystem, "ICRS") 

23 self.assertEqual(frame.dut1, 0.0) 

24 self.assertEqual(frame.epoch, 2000.0) 

25 self.assertEqual(frame.obsAlt, 0.0) 

26 self.assertEqual(frame.obsLat, "N0:00:00.00") 

27 self.assertEqual(frame.obsLon, "E0:00:00.00") 

28 self.assertTrue(frame.permute) 

29 self.assertFalse(frame.preserveAxes) 

30 self.assertEqual(frame.system, "ICRS") 

31 self.assertEqual(frame.title, "ICRS coordinates") 

32 

33 self.assertGreater(abs(frame.getBottom(1)), 1e99) 

34 self.assertGreater(abs(frame.getTop(1)), 1e99) 

35 self.assertGreater(frame.getTop(1), frame.getBottom(1)) 

36 self.assertFalse(frame.getDirection(1)) 

37 self.assertEqual(frame.getInternalUnit(1), "rad") 

38 # A sexagesimal format is not a units expression, so NormUnit equals 

39 # Unit. See the comment in test_frame.py about AST versions; before 

40 # 9.5.0 this reported the Axis InternalUnit, which is radians. 

41 if ast.astVersion() >= 9005000: 41 ↛ 42line 41 didn't jump to line 42 because the condition on line 41 was never true

42 self.assertEqual(frame.getNormUnit(1), frame.getUnit(1)) 

43 self.assertEqual(frame.getNormUnit(1), "hh:mm:ss.s") 

44 else: 

45 self.assertEqual(frame.getNormUnit(1), "rad") 

46 self.assertEqual(frame.getSymbol(1), "RA") 

47 self.assertEqual(frame.getUnit(1), "hh:mm:ss.s") 

48 

49 self.assertAlmostEqual(frame.getBottom(2), -math.pi / 2) 

50 self.assertAlmostEqual(frame.getTop(2), math.pi / 2) 

51 self.assertTrue(frame.getDirection(2)) 

52 self.assertEqual(frame.getInternalUnit(2), "rad") 

53 if ast.astVersion() >= 9005000: 53 ↛ 54line 53 didn't jump to line 54 because the condition on line 53 was never true

54 self.assertEqual(frame.getNormUnit(2), frame.getUnit(2)) 

55 self.assertEqual(frame.getNormUnit(2), "ddd:mm:ss") 

56 else: 

57 self.assertEqual(frame.getNormUnit(2), "rad") 

58 self.assertEqual(frame.getSymbol(2), "Dec") 

59 self.assertEqual(frame.getUnit(2), "ddd:mm:ss") 

60 

61 self.checkCopy(frame) 

62 self.checkPersistence(frame) 

63 

64 def test_SkyFrameLonLat(self): 

65 

66 frame = ast.SkyFrame() 

67 

68 self.assertEqual(frame.lonAxis, 1) 

69 self.assertEqual(frame.latAxis, 2) 

70 self.assertTrue(frame.getIsLonAxis(1)) 

71 self.assertTrue(frame.getIsLatAxis(2)) 

72 self.assertFalse(frame.getIsLonAxis(2)) 

73 self.assertFalse(frame.getIsLatAxis(1)) 

74 

75 # permute axes 

76 frame.permAxes([2, 1]) 

77 self.assertEqual(frame.lonAxis, 2) 

78 self.assertEqual(frame.latAxis, 1) 

79 self.assertTrue(frame.getIsLonAxis(2)) 

80 self.assertTrue(frame.getIsLatAxis(1)) 

81 self.assertFalse(frame.getIsLonAxis(1)) 

82 self.assertFalse(frame.getIsLatAxis(2)) 

83 

84 # permute again to restore original state 

85 frame.permAxes([2, 1]) 

86 self.assertEqual(frame.lonAxis, 1) 

87 self.assertEqual(frame.latAxis, 2) 

88 self.assertTrue(frame.getIsLonAxis(1)) 

89 self.assertTrue(frame.getIsLatAxis(2)) 

90 self.assertFalse(frame.getIsLonAxis(2)) 

91 self.assertFalse(frame.getIsLatAxis(1)) 

92 

93 def test_SkyFrameAlignOffset(self): 

94 frame = ast.SkyFrame() 

95 

96 self.assertFalse(frame.alignOffset) 

97 frame.alignOffset = True 

98 self.assertTrue(frame.alignOffset) 

99 

100 def test_SkyFrameAsTime(self): 

101 frame = ast.SkyFrame() 

102 

103 for axis, defAsTime in ((1, True), (2, False)): 

104 self.assertEqual(frame.getAsTime(axis), defAsTime) 

105 frame.setAsTime(axis, not defAsTime) 

106 self.assertEqual(frame.getAsTime(axis), not defAsTime) 

107 

108 def test_SkyFrameEquinox(self): 

109 frame = ast.SkyFrame() 

110 

111 self.assertAlmostEqual(frame.equinox, 2000) 

112 newEquinox = 2345.6 

113 frame.equinox = newEquinox 

114 self.assertAlmostEqual(frame.equinox, newEquinox) 

115 

116 def test_SkyFrameNegLon(self): 

117 frame = ast.SkyFrame() 

118 

119 self.assertFalse(frame.negLon) 

120 frame.negLon = True 

121 self.assertTrue(frame.negLon) 

122 

123 def test_SkyFrameProjection(self): 

124 frame = ast.SkyFrame() 

125 

126 self.assertEqual(frame.projection, "") 

127 newProjection = "Arbitrary description" 

128 frame.projection = newProjection 

129 self.assertEqual(frame.projection, newProjection) 

130 

131 def test_SkyFrameSkyRef(self): 

132 frame = ast.SkyFrame() 

133 

134 assert_allclose(frame.getSkyRef(), [0, 0]) 

135 newSkyRef = [-4.5, 1.23] 

136 frame.setSkyRef(newSkyRef) 

137 assert_allclose(frame.getSkyRef(), newSkyRef) 

138 

139 def test_SkyFrameSkyRefIs(self): 

140 frame = ast.SkyFrame() 

141 

142 self.assertEqual(frame.skyRefIs, "Ignored") 

143 for newSkyRefIs in ("Origin", "Pole", "Ignored"): 

144 frame.skyRefIs = newSkyRefIs 

145 self.assertEqual(frame.skyRefIs, newSkyRefIs) 

146 

147 def test_SkyFrameSkyRefP(self): 

148 frame = ast.SkyFrame() 

149 

150 defSkyRefP = [0.0, math.pi/2] 

151 assert_allclose(frame.getSkyRefP(), defSkyRefP) 

152 newSkyRefP = [0.1234, 0.5643] 

153 frame.setSkyRefP(newSkyRefP) 

154 assert_allclose(frame.getSkyRefP(), newSkyRefP) 

155 

156 def test_SkyFrameSkyTol(self): 

157 frame = ast.SkyFrame() 

158 

159 # the default is arbitrary so do not to assume a specific value 

160 defSkyTol = frame.skyTol 

161 newSkyTol = defSkyTol*1.2345 

162 frame.skyTol = newSkyTol 

163 self.assertAlmostEqual(frame.skyTol, newSkyTol) 

164 

165 def test_SkyFrameSkyOffsetMap(self): 

166 frame = ast.SkyFrame() 

167 

168 mapping = frame.skyOffsetMap() 

169 self.assertEqual(mapping.className, "UnitMap") 

170 

171 

172if __name__ == "__main__": 172 ↛ 173line 172 didn't jump to line 173 because the condition on line 172 was never true

173 unittest.main()