def make_import_dict(self, row): def row_value(row, key, default, _type): if key in row and row[key] not in (None, ""): return _type(row[key]) return default data = {} data["created"] = datetime.fromtimestamp(row_value(row, "created", 0, int)) data["modified"] = datetime.fromtimestamp(row_value(row, "updated", 0, int)) data["lat"] = row_value(row, "lat", None, float) data["lon"] = row_value(row, "lon", None, float) try: radio = row["radio"].lower() if radio == "umts": radio = "wcdma" data["radio"] = Radio[radio] except KeyError: # pragma: no cover return None if data["radio"] == Radio.cdma: # pragma: no cover # ignore CDMA networks return None for field in ("mcc", "mnc", "lac", "cid", "psc"): data[field] = row_value(row, field, None, int) data["range"] = int(row_value(row, "range", 0, float)) data["total_measures"] = row_value(row, "samples", 0, int) if self.cell_type == "ocid": data["changeable"] = row_value(row, "changeable", True, bool) elif self.cell_type == "cell": # pragma: no cover data["max_lat"] = geocalc.latitude_add(data["lat"], data["lon"], data["range"]) data["min_lat"] = geocalc.latitude_add(data["lat"], data["lon"], -data["range"]) data["max_lon"] = geocalc.longitude_add(data["lat"], data["lon"], data["range"]) data["min_lon"] = geocalc.longitude_add(data["lat"], data["lon"], -data["range"]) validated = self.cell_model.validate(data) if validated is None: return None for field in ("radio", "mcc", "mnc", "lac", "cid"): if validated[field] is None: return None return validated
def test_adds_meters_to_latitude(self): self.assertAlmostEqual(latitude_add(1.0, 1.0, 1000), 1.009000009, 9)
def test_returns_max_lat(self): self.assertEqual(latitude_add(1.0, 1.0, 10 ** 10), constants.MAX_LAT)
def test_returns_min_lat(self): self.assertEqual(latitude_add(1.0, 1.0, -(10 ** 10)), constants.MIN_LAT)
def test_returns_max_lat(self): self.assertEqual(latitude_add(1.0, 1.0, 10**10), constants.MAX_LAT)
def test_returns_min_lat(self): self.assertEqual(latitude_add(1.0, 1.0, -(10**10)), constants.MIN_LAT)
def max_lat(self): return geocalc.latitude_add(self.lat, self.lon, self.range)
def test_adds_meters_to_latitude(self): assert round(latitude_add(1.0, 1.0, 1000), 7) == 1.0090437
def test_returns_max_lat(self): assert latitude_add(85.0, 0.0, 1000000) == constants.MAX_LAT
def test_returns_min_lat(self): assert latitude_add(-85.0, 0.0, -1000000) == constants.MIN_LAT