pyEDSM/edsm/test_base.py
alterNERDtive 0f452ae401 Positinable.distanceTo is now single dispatch
… but a) that only works for methods in 3.8 so I had to use a wrapper
and b) I don’t know if/how I can actually check for an instance of
Positionable as argument … so it’s kind of half of what I wanted it to
be.
2020-01-17 17:52:58 +01:00

75 lines
2.8 KiB
Python

import unittest
from .base import Positionable
from .models import Commander, System
class BaseTest(unittest.TestCase):
class Thing(Positionable):
def __init__(self, coords):
self.x = coords['x']
self.y = coords['y']
self.z = coords['z']
@property
def coords(self):
return {'x': self.x, 'y': self.y, 'z': self.z}
@classmethod
def setUpClass(cls):
cls.nullCoords = {'x': 0, 'y': 0, 'z': 0}
cls.coords1 = {'x': 471.8999, 'y': 246.4735, 'z': 896.999}
cls.coords2 = {'x': 939.4226, 'y': 376.74, 'z': 629.0827}
cls.nullThing = cls.Thing(cls.nullCoords)
cls.thing1 = cls.Thing(cls.coords1)
cls.thing2 = cls.Thing(cls.coords2)
def test_Positionable_distanceTo_withCoords(self):
self.assertEqual(1043.09, self.thing1.distanceTo(self.nullCoords))
self.assertEqual(1043.1, self.thing1.distanceTo(self.nullCoords, roundTo=1))
self.assertEqual(1191.72, self.thing2.distanceTo(self.nullCoords))
self.assertEqual(1192, self.thing2.distanceTo(self.nullCoords, roundTo=0))
n = self.thing1.distanceTo(self.thing2.coords)
self.assertEqual(554.37, n)
self.assertEqual(n, self.thing2.distanceTo(self.thing1.coords))
n = self.thing1.distanceTo(self.thing2.coords, roundTo=0)
self.assertEqual(554, n)
self.assertEqual(n, self.thing2.distanceTo(self.thing1.coords, roundTo=0))
def test_Positionable_distanceTo_withPositionable(self):
self.assertEqual(1043.09, self.thing1.distanceTo(self.nullThing))
self.assertEqual(1043.1, self.thing1.distanceTo(self.nullThing, roundTo=1))
self.assertEqual(1191.72, self.thing2.distanceTo(self.nullThing))
self.assertEqual(1192, self.thing2.distanceTo(self.nullThing, roundTo=0))
n = self.thing1.distanceTo(self.thing2)
self.assertEqual(554.37, n)
self.assertEqual(n, self.thing2.distanceTo(self.thing1))
n = self.thing1.distanceTo(self.thing2, roundTo=0)
self.assertEqual(554, n)
self.assertEqual(n, self.thing2.distanceTo(self.thing1, roundTo=0))
def test_Positionable_distanceTo_invalidCoords(self):
invalidCoords = {'x': 0, 'y': 0}
self.assertRaises(ValueError, self.thing1.distanceTo, invalidCoords)
invalidCoords = {'x': 0, 'z': 0}
self.assertRaises(ValueError, self.thing1.distanceTo, invalidCoords)
invalidCoords = {'z': 0, 'y': 0}
self.assertRaises(ValueError, self.thing1.distanceTo, invalidCoords)
def test_Positionable_distanceTo_invalidCoordsObject(self):
self.assertRaises(ValueError, self.thing1.distanceTo, "hello world")
def test_Positionable_distanceTo_sameCoords(self):
self.assertEqual(0, self.thing1.distanceTo(self.thing1.coords))
def test_Positionable_distanceTo_self(self):
self.assertEqual(0, self.thing1.distanceTo(self.thing1))
self.assertEqual(0, System("Sol").distanceTo(System("Sol")))