Coverage for tests/test_keyMap.py: 7%

193 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2024-06-13 02:50 -0700

1import unittest 

2 

3from numpy.testing import assert_allclose 

4 

5import astshim as ast 

6from astshim.test import ObjectTestCase 

7 

8 

9class TestKeyMap(ObjectTestCase): 

10 

11 def test_KeyMapKey(self): 

12 keyMap = ast.KeyMap("SortBy=AgeDown") 

13 keyMap.putI("ikey", 5) 

14 keyMap.putS("skey", -3) 

15 keyMap.putB("bkey", 2) 

16 keyMap.putD("dkey", 3.14) 

17 keyMap.putF("fkey", 2.78) 

18 

19 self.assertEqual(len(keyMap), 5) 

20 

21 self.assertEqual(keyMap.key(0), "ikey") 

22 self.assertEqual(keyMap.key(1), "skey") 

23 self.assertEqual(keyMap.key(2), "bkey") 

24 self.assertEqual(keyMap.key(3), "dkey") 

25 self.assertEqual(keyMap.key(4), "fkey") 

26 

27 def test_KeyMapScalars(self): 

28 keyMap = ast.KeyMap() 

29 zoomMap = ast.ZoomMap(2, 5) 

30 keyMap.putI("ikey", 5) 

31 keyMap.putS("skey", -3) 

32 keyMap.putB("bkey", 2) 

33 keyMap.putD("dkey", 3.14) 

34 keyMap.putF("fkey", 2.78) 

35 keyMap.putC("ckey", "strvalue") 

36 keyMap.putA("akey", zoomMap) 

37 

38 self.assertEqual(len(keyMap), 7) 

39 self.assertEqual(keyMap.length("ikey"), 1) 

40 self.assertEqual(keyMap.length("skey"), 1) 

41 self.assertEqual(keyMap.length("bkey"), 1) 

42 self.assertEqual(keyMap.length("dkey"), 1) 

43 self.assertEqual(keyMap.length("fkey"), 1) 

44 self.assertEqual(keyMap.length("ckey"), 1) 

45 self.assertEqual(keyMap.length("akey"), 1) 

46 

47 self.assertEqual(keyMap.type("ikey"), ast.DataType.IntType) 

48 self.assertEqual(keyMap.type("skey"), ast.DataType.ShortIntType) 

49 self.assertEqual(keyMap.type("bkey"), ast.DataType.ByteType) 

50 self.assertEqual(keyMap.type("dkey"), ast.DataType.DoubleType) 

51 self.assertEqual(keyMap.type("fkey"), ast.DataType.FloatType) 

52 self.assertEqual(keyMap.type("ckey"), ast.DataType.StringType) 

53 self.assertEqual(keyMap.type("akey"), ast.DataType.ObjectType) 

54 self.assertEqual(keyMap.type("no"), ast.DataType.BadType) 

55 

56 self.assertEqual(keyMap.getI("ikey"), [5]) 

57 self.assertEqual(keyMap.getI("ikey", 0), 5) 

58 self.assertEqual(keyMap.getS("skey"), [-3]) 

59 self.assertEqual(keyMap.getS("skey", 0), -3) 

60 self.assertEqual(keyMap.getB("bkey"), [2]) 

61 self.assertEqual(keyMap.getB("bkey", 0), 2) 

62 assert_allclose(keyMap.getD("dkey"), [3.14]) 

63 self.assertAlmostEqual(keyMap.getD("dkey", 0), 3.14) 

64 assert_allclose(keyMap.getF("fkey"), [2.78]) 

65 self.assertAlmostEqual(keyMap.getF("fkey", 0), 2.78) 

66 self.assertEqual(keyMap.getC("ckey"), ["strvalue"]) 

67 self.assertEqual(keyMap.getC("ckey", 0), "strvalue") 

68 self.assertEqual([obj.show() for obj in keyMap.getA("akey")], [zoomMap.show()]) 

69 self.assertEqual(keyMap.getA("akey", 0).show(), zoomMap.show()) 

70 

71 self.assertEqual(keyMap.getC("CkEy"), []) # invalid key (case is wrong) 

72 with self.assertRaises(Exception): 

73 keyMap.getC("CKey", 0) # invalid key (case is wrong) 

74 with self.assertRaises(Exception): 

75 keyMap.getC("ckey", 1) # invalid index 

76 

77 def test_KeyMapCaseBlind(self): 

78 keyMap = ast.KeyMap("KeyCase=0") 

79 keyMap.putC("ckey", "strvalue") 

80 

81 self.assertEqual(keyMap.getC("CKey"), ["strvalue"]) 

82 self.assertEqual(keyMap.getC("CKey", 0), "strvalue") 

83 

84 def test_KeyMapRename(self): 

85 keyMap = ast.KeyMap() 

86 keyMap.putC("ckey", "strvalue") 

87 keyMap.rename("ckey", "new") 

88 self.assertEqual(len(keyMap), 1) 

89 self.assertEqual(keyMap.getC("ckey"), []) 

90 self.assertEqual(keyMap.getC("new"), ["strvalue"]) 

91 

92 def test_KeyMapRemove(self): 

93 keyMap = ast.KeyMap() 

94 keyMap.putC("ckey", "strvalue") 

95 keyMap.remove("ckey") 

96 self.assertEqual(len(keyMap), 0) 

97 self.assertEqual(keyMap.getC("ckey"), []) 

98 

99 def test_KeyMapDefinedHasKey(self): 

100 keyMap = ast.KeyMap() 

101 keyMap.putC("ckey", "strvalue") 

102 keyMap.putU("ukey") 

103 

104 self.assertTrue(keyMap.hasKey("ckey")) 

105 self.assertTrue(keyMap.defined("ckey")) 

106 self.assertTrue(keyMap.hasKey("ukey")) 

107 self.assertFalse(keyMap.defined("ukey")) 

108 self.assertFalse(keyMap.hasKey("no")) 

109 self.assertFalse(keyMap.defined("no")) 

110 

111 def testKeyMapKeys(self): 

112 keyMap = ast.KeyMap("SortBy=AgeDown") 

113 keyMap.putI("ikey", 5) 

114 keyMap.putS("skey", -3) 

115 keyMap.putB("bkey", 2) 

116 keyMap.putD("dkey", 3.14) 

117 keyMap.putF("fkey", 2.78) 

118 keyMap.putC("ckey", "strvalue") 

119 

120 desKeys = ["ikey", "skey", "bkey", "dkey", "fkey", "ckey"] 

121 

122 for i, key in enumerate(keyMap.keys()): 

123 self.assertEqual(key, desKeys[i]) 

124 

125 def test_KeyMapVectors(self): 

126 keyMap = ast.KeyMap() 

127 zoomMap = ast.ZoomMap(2, 5) 

128 shiftMap = ast.ShiftMap([3.3, -4.1]) 

129 keyMap.putI("ikey", [5, 2]) 

130 keyMap.putS("skey", [-3, -1]) 

131 keyMap.putB("bkey", [0, 2, 4, 8]) 

132 keyMap.putD("dkey", [3.14, 0.005, 9.123e5]) 

133 keyMap.putF("fkey", [2.78, 999.9]) 

134 keyMap.putC("ckey", ["val0", "val1", "a longer value"]) 

135 keyMap.putA("akey", [zoomMap, shiftMap]) 

136 

137 self.assertEqual(len(keyMap), 7) 

138 self.assertEqual(keyMap.length("ikey"), 2) 

139 self.assertEqual(keyMap.length("skey"), 2) 

140 self.assertEqual(keyMap.length("bkey"), 4) 

141 self.assertEqual(keyMap.length("dkey"), 3) 

142 self.assertEqual(keyMap.length("fkey"), 2) 

143 self.assertEqual(keyMap.length("ckey"), 3) 

144 self.assertEqual(keyMap.length("akey"), 2) 

145 

146 self.assertEqual(keyMap.type("ikey"), ast.DataType.IntType) 

147 self.assertEqual(keyMap.type("skey"), ast.DataType.ShortIntType) 

148 self.assertEqual(keyMap.type("bkey"), ast.DataType.ByteType) 

149 self.assertEqual(keyMap.type("dkey"), ast.DataType.DoubleType) 

150 self.assertEqual(keyMap.type("fkey"), ast.DataType.FloatType) 

151 self.assertEqual(keyMap.type("ckey"), ast.DataType.StringType) 

152 self.assertEqual(keyMap.type("akey"), ast.DataType.ObjectType) 

153 self.assertEqual(keyMap.type("no"), ast.DataType.BadType) 

154 

155 self.assertEqual(keyMap.getI("ikey"), [5, 2]) 

156 self.assertEqual(keyMap.getS("skey"), [-3, -1]) 

157 self.assertEqual(keyMap.getB("bkey"), [0, 2, 4, 8]) 

158 self.assertEqual(keyMap.getB("bkey", 0), 0) 

159 self.assertEqual(keyMap.getB("bkey", 3), 8) 

160 assert_allclose(keyMap.getD("dkey"), [3.14, 0.005, 9.123e5]) 

161 assert_allclose(keyMap.getF("fkey"), [2.78, 999.9]) 

162 self.assertEqual(keyMap.getC("ckey"), ["val0", "val1", "a longer value"]) 

163 self.assertEqual([obj.show() for obj in keyMap.getA("akey")], [zoomMap.show(), shiftMap.show()]) 

164 

165 for i, val in enumerate(keyMap.getI("ikey")): 

166 self.assertEqual(keyMap.getI("ikey", i), val) 

167 for i, val in enumerate(keyMap.getS("skey")): 

168 self.assertEqual(keyMap.getS("skey", i), val) 

169 for i, val in enumerate(keyMap.getB("bkey")): 

170 self.assertEqual(keyMap.getB("bkey", i), val) 

171 for i, val in enumerate(keyMap.getD("dkey")): 

172 self.assertAlmostEqual(keyMap.getD("dkey", i), val) 

173 for i, val in enumerate(keyMap.getF("fkey")): 

174 self.assertAlmostEqual(keyMap.getF("fkey", i), val, places=5) 

175 for i, val in enumerate(keyMap.getC("ckey")): 

176 self.assertEqual(keyMap.getC("ckey", i), val) 

177 for i, val in enumerate(keyMap.getA("akey")): 

178 self.assertEqual(keyMap.getA("akey", i).show(), val.show()) 

179 

180 clen = keyMap.length("ckey") 

181 with self.assertRaises(Exception): 

182 keyMap.getC("ckey", clen) # invalid index 

183 with self.assertRaises(Exception): 

184 keyMap.replace("ckey", clen, "anything") # invalid index 

185 

186 keyMap.replace("ikey", 1, 3) 

187 self.assertEqual(keyMap.getI("ikey"), [5, 3]) 

188 keyMap.replace("ikey", 0, -3) 

189 self.assertEqual(keyMap.getI("ikey"), [-3, 3]) 

190 keyMap.append("ikey", 5) 

191 self.assertEqual(keyMap.getI("ikey"), [-3, 3, 5]) 

192 

193 keyMap.replace("skey", 1, 2) 

194 self.assertEqual(keyMap.getS("skey"), [-3, 2]) 

195 keyMap.replace("skey", 0, 47) 

196 self.assertEqual(keyMap.getS("skey"), [47, 2]) 

197 keyMap.append("skey", -35) 

198 self.assertEqual(keyMap.getS("skey"), [47, 2, -35]) 

199 

200 keyMap.replace("bkey", 0, 36) 

201 self.assertEqual(keyMap.getB("bkey"), [36, 2, 4, 8]) 

202 keyMap.replace("bkey", 2, 0) 

203 self.assertEqual(keyMap.getB("bkey"), [36, 2, 0, 8]) 

204 keyMap.replace("bkey", 1, 11) 

205 self.assertEqual(keyMap.getB("bkey"), [36, 11, 0, 8]) 

206 keyMap.replace("bkey", 3, 77) 

207 self.assertEqual(keyMap.getB("bkey"), [36, 11, 0, 77]) 

208 keyMap.append("bkey", 2) 

209 self.assertEqual(keyMap.getB("bkey"), [36, 11, 0, 77, 2]) 

210 

211 keyMap.replace("dkey", 1, 33.3) 

212 assert_allclose(keyMap.getD("dkey"), [3.14, 33.3, 9.123e5]) 

213 keyMap.replace("dkey", 2, 152) 

214 assert_allclose(keyMap.getD("dkey"), [3.14, 33.3, 152]) 

215 keyMap.replace("dkey", 0, 0.01) 

216 assert_allclose(keyMap.getD("dkey"), [0.01, 33.3, 152]) 

217 

218 keyMap.replace("fkey", 1, 3.012) 

219 assert_allclose(keyMap.getF("fkey"), [2.78, 3.012]) 

220 keyMap.replace("fkey", 0, -32.1) 

221 assert_allclose(keyMap.getF("fkey"), [-32.1, 3.012]) 

222 keyMap.append("fkey", 98.6) 

223 assert_allclose(keyMap.getF("fkey"), [-32.1, 3.012, 98.6]) 

224 

225 

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

227 unittest.main()