This repository has been archived on 2022-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
pyurbantz/urbantz/tests/test_coordinates.py

89 lines
2.8 KiB
Python

from unittest import TestCase
from math import trunc, floor, ceil, radians
from urbantz.utils import Coordinates
class TestCoordinates(TestCase):
"""
Unit tests for :class:`urbantz.utils.Coordinates`
"""
@classmethod
def setUpClass(cls):
cls.coords = Coordinates(lat=12.57, lng=-13.49)
def test_init(self):
self.assertEqual(self.coords.lat, 12.57)
self.assertEqual(self.coords.lng, -13.49)
def test_repr(self):
self.assertEqual(
repr(self.coords),
'Coordinates(lat=12.57, lng=-13.49)',
)
def test_str(self):
self.assertEqual(str(self.coords), '12.57, -13.49')
def test_hash(self):
self.assertEqual(hash(self.coords), hash((12.57, -13.49)))
def test_tuple(self):
self.assertTupleEqual(tuple(self.coords), (12.57, -13.49))
def test_len(self):
self.assertEqual(len(self.coords), 2)
def test_length_hint(self):
self.assertEqual(self.coords.__length_hint__(), 2)
def test_pos(self):
self.assertEqual(+self.coords, self.coords)
def test_neg(self):
self.assertTupleEqual(tuple(-self.coords), (-12.57, 13.49))
def test_abs(self):
self.assertTupleEqual(tuple(abs(self.coords)), (12.57, 13.49))
def test_round(self):
self.assertTupleEqual(tuple(round(self.coords)), (13, -13))
self.assertTupleEqual(tuple(round(self.coords, 1)), (12.6, -13.5))
def test_trunc(self):
self.assertTupleEqual(tuple(trunc(self.coords)), (12, -13))
def test_floor(self):
self.assertTupleEqual(tuple(floor(self.coords)), (12, -14))
def test_ceil(self):
self.assertTupleEqual(tuple(ceil(self.coords)), (13, -13))
def test_add(self):
other = Coordinates(lat=7.43, lng=-6.51)
self.assertEqual(self.coords + other, Coordinates(lat=20, lng=-20))
with self.assertRaises(TypeError):
self.coords + 4
def test_sub(self):
other = Coordinates(lat=2.57, lng=-3.49)
self.assertEqual(self.coords - other, Coordinates(lat=10, lng=-10))
with self.assertRaises(TypeError):
self.coords - "lol"
def test_toJSON(self):
self.assertListEqual(self.coords.toJSON(), [-13.49, 12.57])
def test_fromJSON(self):
self.assertEqual(Coordinates.fromJSON([-13.49, 12.57]), self.coords)
def test_to_radians(self):
self.assertTupleEqual(self.coords.to_radians(), (radians(12.57), radians(-13.49)))
def test_distance(self):
other = Coordinates(lat=2.57, lng=-3.49)
self.assertEqual(self.coords.distance(other), other.distance(self.coords))
self.assertEqual(self.coords.distance(other), 1564640.3229974532)
with self.assertRaises(NotImplementedError):
self.coords.distance("lol")