adding files

This commit is contained in:
2026-03-21 23:51:53 +01:00
commit 8cb0240ca2
19 changed files with 2162 additions and 0 deletions

118
test_model.py Normal file
View File

@@ -0,0 +1,118 @@
import unittest
import dro
class Observer:
def __init__(self):
self.reset()
self.nbr_of_calls = 0
self.has_been_called = False
def update(self, updated = None):
self.nbr_of_calls += 1
self.has_been_called = True
self.updated = updated
def reset(self):
self.nbr_of_calls = 0
self.has_been_called = False
class TestModel(unittest.TestCase):
#def check_pos(self, actual, expected):
# self.assertTrue(int(self.model.get_position_as_string('x')) == 1)
def setUp(self):
self.model = dro.Model()
def test_init(self):
self.assertEqual(self.model.get_position('x'), 0)
self.assertEqual(self.model.get_position('z'), 0)
self.assertEqual(self.model.get_effective_position('x'), 0)
self.assertEqual(self.model.get_effective_position('z'), 0)
def test_wrong_axis(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('apa', 1)
self.assertFalse(o.has_been_called)
def test_set_pos(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('x', 1)
self.assertTrue(o.updated == dro.Updated.POS_X)
self.model.set_position('z', -11)
self.assertTrue(o.updated == dro.Updated.POS_Z)
self.assertEqual(o.nbr_of_calls, 2)
self.assertEqual(int(self.model.get_effective_position('x')), 1)
self.assertEqual(int(self.model.get_effective_position('z')), -11)
def test_set_offset(self):
o = Observer()
self.model.attatch(o)
self.model.set_offset('x', -1)
self.assertTrue(o.updated == dro.Updated.POS_X)
self.model.set_offset('z', 12.0)
self.assertTrue(o.updated == dro.Updated.POS_Z)
self.assertEqual(o.nbr_of_calls, 2)
self.assertEqual(int(self.model.get_effective_position('x')), -1)
self.assertEqual(int(self.model.get_effective_position('z')), 12.0)
def test_toogle_x_mode(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('x', -11.49)
self.model.set_offset('x', 0.49)
self.model.set_toggle_x_mode()
self.assertEqual(self.model.get_position('x'), -11.49)
self.assertEqual(self.model.get_effective_position('x'), -22)
self.assertTrue(o.updated == dro.Updated.X_MODE)
def test_toogle_x_mode_z_unchanged(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('z', 11.49)
self.model.set_offset('z', -0.49)
self.model.set_toggle_x_mode()
self.assertEqual(self.model.get_position('z'), 11.49)
self.assertEqual(self.model.get_effective_position('z'), 11.0)
self.assertTrue(o.updated == dro.Updated.X_MODE)
def test_set_position_no_notify_if_unchanged(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('x', 10)
self.assertEqual(o.nbr_of_calls, 1)
self.model.set_position('x', 10)
self.assertEqual(o.nbr_of_calls, 1) # No change, no notify
self.model.set_position('x', 20)
self.assertEqual(o.nbr_of_calls, 2) # Changed, should notify
def test_set_position_no_notify_if_small_change(self):
o = Observer()
self.model.attatch(o)
self.model.set_position('x', 10)
self.assertEqual(o.nbr_of_calls, 1)
self.model.set_position('x', 10+0.003)
self.assertEqual(o.nbr_of_calls, 1) # No change, no notify
def test_steps_to_position(self):
self.model.set_scale('x', 2.5/200) # 200 steps per unit
pos = self.model.steps_to_position('x', 500)
self.assertEqual(pos, 6.25) # 200 * 1.5 = 300 steps
if __name__ == '__main__':
unittest.main()