mirror of
https://github.com/sinseman44/PyCNC.git
synced 2026-01-12 02:40:04 +00:00
144 lines
5.1 KiB
Python
144 lines
5.1 KiB
Python
import unittest
|
|
|
|
from cnc.coordinates import *
|
|
|
|
|
|
class TestCoordinates(unittest.TestCase):
|
|
def setUp(self):
|
|
self.default = Coordinates(96, 102, 150, 228)
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def test_constructor(self):
|
|
# constructor rounds values to 10 digits after the point
|
|
self.assertRaises(TypeError, Coordinates)
|
|
c = Coordinates(1.00000000005, 2.00000000004, -3.5000000009, 0.0)
|
|
self.assertEqual(c.x, 1.0000000001)
|
|
self.assertEqual(c.y, 2.0)
|
|
self.assertEqual(c.z, -3.5000000009)
|
|
self.assertEqual(c.e, 0.0)
|
|
|
|
def test_zero(self):
|
|
c = Coordinates(0, 0, 0, 0)
|
|
self.assertTrue(c.is_zero())
|
|
|
|
def test_aabb(self):
|
|
# aabb - Axis Aligned Bounded Box.
|
|
# original method checks if point belongs aabb.
|
|
p1 = Coordinates(0, 0, 0, 0)
|
|
p2 = Coordinates(2, 2, 2, 0)
|
|
c = Coordinates(1, 1, 1, 0)
|
|
self.assertTrue(c.is_in_aabb(p1, p2))
|
|
self.assertTrue(c.is_in_aabb(p2, p1))
|
|
c = Coordinates(0, 0, 0, 0)
|
|
self.assertTrue(c.is_in_aabb(p1, p2))
|
|
c = Coordinates(2, 2, 2, 0)
|
|
self.assertTrue(c.is_in_aabb(p1, p2))
|
|
c = Coordinates(2, 3, 2, 0)
|
|
self.assertFalse(c.is_in_aabb(p1, p2))
|
|
c = Coordinates(-1, 1, 1, 0)
|
|
self.assertFalse(c.is_in_aabb(p1, p2))
|
|
c = Coordinates(1, 1, 3, 0)
|
|
self.assertFalse(c.is_in_aabb(p1, p2))
|
|
|
|
def test_length(self):
|
|
c = Coordinates(-1, 0, 0, 0)
|
|
self.assertEqual(c.length(), 1)
|
|
c = Coordinates(0, 3, -4, 0)
|
|
self.assertEqual(c.length(), 5)
|
|
c = Coordinates(3, 4, 12, 0)
|
|
self.assertEqual(c.length(), 13)
|
|
c = Coordinates(1, 1, 1, 1)
|
|
self.assertEqual(c.length(), 2)
|
|
|
|
def test_round(self):
|
|
# round works in another way then Python's round.
|
|
# This round() rounds digits with specified step.
|
|
c = Coordinates(1.5, -1.4, 3.05, 3.5)
|
|
r = c.round(1, 1, 1, 1)
|
|
self.assertEqual(r.x, 2.0)
|
|
self.assertEqual(r.y, -1.0)
|
|
self.assertEqual(r.z, 3.0)
|
|
self.assertEqual(r.e, 4.0)
|
|
r = c.round(0.25, 0.25, 0.25, 0.25)
|
|
self.assertEqual(r.x, 1.5)
|
|
self.assertEqual(r.y, -1.5)
|
|
self.assertEqual(r.z, 3.0)
|
|
self.assertEqual(r.e, 3.5)
|
|
|
|
def test_max(self):
|
|
self.assertEqual(self.default.find_max(), max(self.default.x,
|
|
self.default.y,
|
|
self.default.z,
|
|
self.default.e))
|
|
|
|
# build-in function overriding tests
|
|
def test_add(self):
|
|
r = self.default + Coordinates(1, 2, 3, 4)
|
|
self.assertEqual(r.x, self.default.x + 1)
|
|
self.assertEqual(r.y, self.default.y + 2)
|
|
self.assertEqual(r.z, self.default.z + 3)
|
|
self.assertEqual(r.e, self.default.e + 4)
|
|
|
|
def test_sub(self):
|
|
r = self.default - Coordinates(1, 2, 3, 4)
|
|
self.assertEqual(r.x, self.default.x - 1)
|
|
self.assertEqual(r.y, self.default.y - 2)
|
|
self.assertEqual(r.z, self.default.z - 3)
|
|
self.assertEqual(r.e, self.default.e - 4)
|
|
|
|
def test_mul(self):
|
|
r = self.default * 2
|
|
self.assertEqual(r.x, self.default.x * 2)
|
|
self.assertEqual(r.y, self.default.y * 2)
|
|
self.assertEqual(r.z, self.default.z * 2)
|
|
self.assertEqual(r.e, self.default.e * 2)
|
|
|
|
def test_div(self):
|
|
r = self.default / 2
|
|
self.assertEqual(r.x, self.default.x / 2)
|
|
self.assertEqual(r.y, self.default.y / 2)
|
|
self.assertEqual(r.z, self.default.z / 2)
|
|
self.assertEqual(r.e, self.default.e / 2)
|
|
|
|
def test_truediv(self):
|
|
r = self.default / 3.0
|
|
self.assertEqual(r.x, self.default.x / 3.0)
|
|
self.assertEqual(r.y, self.default.y / 3.0)
|
|
self.assertEqual(r.z, self.default.z / 3.0)
|
|
self.assertEqual(r.e, self.default.e / 3.0)
|
|
|
|
def test_eq(self):
|
|
a = Coordinates(self.default.x, self.default.y, self.default.z,
|
|
self.default.e)
|
|
self.assertTrue(a == self.default)
|
|
a = Coordinates(-self.default.x, self.default.y, self.default.z,
|
|
self.default.e)
|
|
self.assertFalse(a == self.default)
|
|
a = Coordinates(self.default.x, -self.default.y, self.default.z,
|
|
self.default.e)
|
|
self.assertFalse(a == self.default)
|
|
a = Coordinates(self.default.x, self.default.y, -self.default.z,
|
|
self.default.e)
|
|
self.assertFalse(a == self.default)
|
|
a = Coordinates(self.default.x, self.default.y, self.default.z,
|
|
-self.default.e)
|
|
self.assertFalse(a == self.default)
|
|
|
|
def test_str(self):
|
|
self.assertTrue(isinstance(str(self.default), str))
|
|
|
|
def test_abs(self):
|
|
c = Coordinates(-1, -2.5, -99, -23)
|
|
# noinspection PyTypeChecker
|
|
r = abs(c)
|
|
self.assertEqual(r.x, 1.0)
|
|
self.assertEqual(r.y, 2.5)
|
|
self.assertEqual(r.z, 99.0)
|
|
self.assertEqual(r.e, 23.0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|