Coverage for tests/test_keyMap.py: 8%
193 statements
« prev ^ index » next coverage.py v6.4.1, created at 2022-07-09 05:46 -0700
« prev ^ index » next coverage.py v6.4.1, created at 2022-07-09 05:46 -0700
1import unittest
3from numpy.testing import assert_allclose
5import astshim as ast
6from astshim.test import ObjectTestCase
9class TestKeyMap(ObjectTestCase):
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)
19 self.assertEqual(len(keyMap), 5)
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")
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)
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)
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)
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())
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
77 def test_KeyMapCaseBlind(self):
78 keyMap = ast.KeyMap("KeyCase=0")
79 keyMap.putC("ckey", "strvalue")
81 self.assertEqual(keyMap.getC("CKey"), ["strvalue"])
82 self.assertEqual(keyMap.getC("CKey", 0), "strvalue")
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"])
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"), [])
99 def test_KeyMapDefinedHasKey(self):
100 keyMap = ast.KeyMap()
101 keyMap.putC("ckey", "strvalue")
102 keyMap.putU("ukey")
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"))
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")
120 desKeys = ["ikey", "skey", "bkey", "dkey", "fkey", "ckey"]
122 for i, key in enumerate(keyMap.keys()):
123 self.assertEqual(key, desKeys[i])
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])
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)
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)
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()])
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())
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
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])
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])
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])
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])
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])
226if __name__ == "__main__": 226 ↛ 227line 226 didn't jump to line 227, because the condition on line 226 was never true
227 unittest.main()