Spaces:
Running
Running
alessandro trinca tornidor
test: updated tests to match pronunciation_accuracy float return type
baf2993
| import unittest | |
| import numpy as np | |
| from aip_trainer.utils.serialize import serialize | |
| test_dict_list_dict = { | |
| "type": "FeatureCollection", | |
| "name": "volcanoes", | |
| "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}, | |
| "features": [ | |
| {"type": "Feature", "properties": {"Volcano_Number": 283010, "Volcano_Name": "Izu-Tobu", "prop_none": None}, | |
| "geometry": {"type": "Point", "coordinates": [139.098, 34.9]}}, | |
| {"type": "Feature", | |
| "properties": {"Volcano_Number": 283020, "Volcano_Name": "Hakoneyama", "ndarray": np.array([1])}, | |
| "geometry": {"type": "Point", "coordinates": [139.021, 35.233]}} | |
| ] | |
| } | |
| class TestSerialize(unittest.TestCase): | |
| def test_serialize(self): | |
| from bson import ObjectId | |
| # remove keys with values as bson.ObjectId | |
| d1 = {"_id": ObjectId()} | |
| self.assertDictEqual(serialize(d1), dict()) | |
| # test: serialize nd.float*, number as key => str | |
| np_int_4 = np.asarray([87], dtype=np.integer)[0] | |
| d2 = {"b": np.float32(45.0), 3: 33, 1.56: np_int_4, 3.5: 44.0, "d": "b", "tuple": (1, 2)} | |
| expected_d2 = { | |
| 'b': 45.0, | |
| 3: 33, | |
| 1.56: 87, | |
| 3.5: 44.0, | |
| 'd': 'b', | |
| "tuple": [1, 2] | |
| } | |
| serialized_d2 = serialize(d2) | |
| self.assertDictEqual(serialized_d2, expected_d2) | |
| # # nested dict of list of dict, serialize nd.array | |
| d3 = {"e": [{"q": 123}, {"q": 456}], "a": np.arange(1.1, 16.88).reshape(4, 4)} | |
| expected_d3 = { | |
| "e": [{"q": 123}, {"q": 456}], | |
| 'a': [[1.1, 2.1, 3.1, 4.1], [5.1, 6.1, 7.1, 8.1], [9.1, 10.1, 11.1, 12.1], [13.1, 14.1, 15.1, 16.1]] | |
| } | |
| self.assertDictEqual(serialize(d3), expected_d3) | |
| def test_serialize_dict_exception(self): | |
| from json import JSONDecodeError | |
| e = JSONDecodeError(msg="x", doc="what we are?", pos=111) | |
| exception = serialize({"k": e}) | |
| self.assertDictEqual( | |
| exception, | |
| {'k': {'msg': 'x', 'type': "<class 'json.decoder.JSONDecodeError'>", 'doc': 'what we are?', 'pos': 111, | |
| 'lineno': 1, 'colno': 112}} | |
| ) | |
| def test_serialize_bytes(self): | |
| self.assertDictEqual( | |
| serialize({"k": b"x"}), | |
| {'k': {'value': 'eA==', 'type': 'bytes'}} | |
| ) | |
| def test_serialize_dict_list_dict(self): | |
| serialized_dict_no_none = serialize(test_dict_list_dict, include_none=False) | |
| self.assertDictEqual(serialized_dict_no_none, { | |
| 'type': 'FeatureCollection', | |
| 'name': 'volcanoes', | |
| 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:OGC:1.3:CRS84'}}, | |
| 'features': [ | |
| {'type': 'Feature', 'properties': {'Volcano_Number': 283010, 'Volcano_Name': 'Izu-Tobu'}, | |
| 'geometry': {'type': 'Point', 'coordinates': [139.098, 34.9]}}, | |
| {'type': 'Feature', | |
| 'properties': {'Volcano_Number': 283020, 'Volcano_Name': 'Hakoneyama', 'ndarray': [1]}, | |
| 'geometry': {'type': 'Point', 'coordinates': [139.021, 35.233]}} | |
| ] | |
| }) | |
| serialized_dict_wiht_none = serialize(test_dict_list_dict, include_none=True) | |
| self.assertDictEqual(serialized_dict_wiht_none, { | |
| 'type': 'FeatureCollection', | |
| 'name': 'volcanoes', | |
| 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:OGC:1.3:CRS84'}}, | |
| 'features': [ | |
| {'type': 'Feature', | |
| 'properties': {'Volcano_Number': 283010, 'Volcano_Name': 'Izu-Tobu', 'prop_none': None}, | |
| 'geometry': {'type': 'Point', 'coordinates': [139.098, 34.9]}}, | |
| {'type': 'Feature', | |
| 'properties': {'Volcano_Number': 283020, 'Volcano_Name': 'Hakoneyama', 'ndarray': [1]}, | |
| 'geometry': {'type': 'Point', 'coordinates': [139.021, 35.233]}} | |
| ] | |
| }) | |
| if __name__ == '__main__': | |
| unittest.main() | |