Coverage for tests/test_normMap.py: 34%

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

36 statements  

1from math import pi 

2import sys 

3import unittest 

4 

5import numpy as np 

6from numpy.testing import assert_allclose 

7 

8import astshim as ast 

9from astshim.test import MappingTestCase 

10 

11 

12class TestNormMap(MappingTestCase): 

13 

14 def test_NormMapFrame(self): 

15 """Check NormMap(Frame): output = input 

16 """ 

17 normmap = ast.NormMap(ast.Frame(2)) 

18 self.assertEqual(normmap.className, "NormMap") 

19 self.assertEqual(normmap.nIn, 2) 

20 self.assertEqual(normmap.nOut, 2) 

21 

22 self.checkBasicSimplify(normmap) 

23 self.checkCopy(normmap) 

24 

25 indata = np.array([ 

26 [100.0, 2000.0, 3000.0], 

27 [-100.0, -1000.0, -2000.0], 

28 ], dtype=float) 

29 outdata = normmap.applyForward(indata) 

30 assert_allclose(outdata, indata) 

31 

32 self.checkMappingPersistence(normmap, indata) 

33 

34 def testNormMapMap(self): 

35 """Check that NormMap(Mapping) is an error""" 

36 with self.assertRaises(TypeError): 

37 ast.NormMap(ast.UnitMap(1)) 

38 

39 def test_NormMapSkyFrame(self): 

40 """Check NormMap(SkYFrame): 

41 

42 longitude wrapped to [0, 2 pi] 

43 if pi < |latitude| < 2 pi: 

44 offset longitude by pi and set latitutude = 2 pi - latitude 

45 else: 

46 wrap pi to range [-pi, pi] 

47 

48 This test intentionally stays a small delta away from boundaries 

49 (except 0) because the expected behavior is not certain 

50 and not important. 

51 """ 

52 normmap = ast.NormMap(ast.SkyFrame()) 

53 self.assertEqual(normmap.className, "NormMap") 

54 self.assertEqual(normmap.nIn, 2) 

55 self.assertEqual(normmap.nOut, 2) 

56 

57 self.checkBasicSimplify(normmap) 

58 

59 # I'm not sure why 100 is needed; I expected ~10 (2 pi) 

60 eps = 100 * sys.float_info.epsilon 

61 

62 indata = (np.array([ 

63 [0, 0], 

64 [-eps, 0], # lon out of range 

65 [2 * pi - eps, 0], 

66 [2 * pi + eps, 0], # lon out of range 

67 [0, -pi / 2 + eps], 

68 [0, -pi / 2 - eps], # lat too small; offset lat by pi 

69 [0, pi / 2 - eps], 

70 [0, pi / 2 + eps], # lat too big; offset lat by pi 

71 ], dtype=float)).T.copy() # applyForward can't accept a view 

72 pred_outdata = np.array([ 

73 [0, 0], 

74 [2 * pi - eps, 0], 

75 [2 * pi - eps, 0], 

76 [eps, 0], 

77 [0, -pi / 2 + eps], 

78 [pi, -pi / 2 + eps], 

79 [0, pi / 2 - eps], 

80 [pi, pi / 2 - eps], 

81 ]).T 

82 outdata = normmap.applyForward(indata) 

83 assert_allclose(outdata, pred_outdata) 

84 

85 self.checkMappingPersistence(normmap, indata) 

86 

87 

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

89 unittest.main()