From e5a288869e4a533ccadbb44fe55488de7ee73d41 Mon Sep 17 00:00:00 2001 From: Hoca Chen Date: Sat, 8 Mar 2025 23:56:13 +0800 Subject: [PATCH 1/3] add the Unit Test for Probe command group --- .../UnitTest/TestProbeCommandGroup.py | 64 +++++++++++++++++++ sentio_prober_control/UnitTest/__init__.py | 0 2 files changed, 64 insertions(+) create mode 100644 sentio_prober_control/UnitTest/TestProbeCommandGroup.py create mode 100644 sentio_prober_control/UnitTest/__init__.py diff --git a/sentio_prober_control/UnitTest/TestProbeCommandGroup.py b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py new file mode 100644 index 0000000..f9c9384 --- /dev/null +++ b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py @@ -0,0 +1,64 @@ +import unittest +from unittest.mock import MagicMock +from sentio_prober_control.Communication.CommunicatorBase import CommunicatorBase +from sentio_prober_control.Sentio.Enumerations import ProbeSentio, ProbeXYReference, ProbeZReference +from sentio_prober_control.Sentio.Response import Response +from sentio_prober_control.Sentio.CommandGroups.ProbeCommandGroup import ProbeCommandGroup +from sentio_prober_control.Communication.CommunicatorTcpIp import CommunicatorTcpIp +from sentio_prober_control.Sentio.ProberSentio import SentioProber +class TestProbeCommandGroup(unittest.TestCase): + def setUp(self): + # Mock the concrete TCP/IP communicator instead of CommunicatorBase + self.mock_comm = MagicMock(spec=CommunicatorTcpIp) + + # Ensure the mock provides `send` and `read_line` methods + self.test_prober = SentioProber(self.mock_comm) + def test_async_step_probe_site(self): + self.mock_comm.read_line.return_value = "0,123,OK" + cmd_id = self.test_prober.probe.async_step_probe_site(ProbeSentio.East, 1) + self.mock_comm.send.assert_called_with("start_step_positioner_site East,1") + self.assertEqual(cmd_id, 123) + + #----Command is different of document--- + # def test_get_probe_site(self): + # self.mock_comm.read_line.return_value = "0,0,site1,1000,2000" + # result = self.test_prober.probe.get_probe_site(ProbeSentio.East, 0) + # self.mock_comm.send.assert_called_with("get_positioner_site East,0") + # self.assertEqual(result, (0, "site1", 1000.0, 2000.0)) + + def test_get_probe_xy(self): + self.mock_comm.read_line.return_value = "0,0,1500,2500" + result = self.test_prober.probe.get_probe_xy(ProbeSentio.West, ProbeXYReference.Current) + self.mock_comm.send.assert_called_with("get_positioner_xy West,Current") + self.assertEqual(result, (1500.0, 2500.0)) + # + def test_get_probe_z(self): + self.mock_comm.read_line.return_value = "0,0,500" + result = self.test_prober.probe.get_probe_z(ProbeSentio.North, ProbeZReference.Zero) + self.mock_comm.send.assert_called_with("get_positioner_z North, Zero") + self.assertEqual(result, 500.0) + + # ---missing the relative--- + # def test_move_probe_xy(self): + # self.mock_comm.read_line.return_value = "0,0,3000,4000" + # + # # Fix enum error by verifying `ProbeXYReference.Relative` exists + # try: + # print("Available ProbeXYReference Enums:", list(ProbeXYReference)) + # xy_ref = ProbeXYReference.Relative # Ensure it's valid + # except AttributeError: + # raise Exception("ProbeXYReference.Relative does not exist!") + # + # result = self.probe_group.move_probe_xy(ProbeSentio.South, xy_ref, 3000, 4000) + # self.mock_comm.send.assert_called_with("move_positioner_xy South,Relative,3000,4000") + # self.assertEqual(result, (3000.0, 4000.0)) + + def test_move_probe_z(self): + self.mock_comm.read_line.return_value = "0,0,1200" + result = self.test_prober.probe.move_probe_z(ProbeSentio.West, ProbeZReference.Contact, 1200) + self.mock_comm.send.assert_called_with("move_positioner_z West, Contact, 1200") + self.assertEqual(result, 1200.0) + + +if __name__ == "__main__": + unittest.main() diff --git a/sentio_prober_control/UnitTest/__init__.py b/sentio_prober_control/UnitTest/__init__.py new file mode 100644 index 0000000..e69de29 From 1956a5b08eb1b8a28bf39ee4260dded420b5e952 Mon Sep 17 00:00:00 2001 From: Hoca Chen Date: Sun, 9 Mar 2025 00:01:03 +0800 Subject: [PATCH 2/3] add one more unit test --- .../UnitTest/TestProbeCommandGroup.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/sentio_prober_control/UnitTest/TestProbeCommandGroup.py b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py index f9c9384..9c752f1 100644 --- a/sentio_prober_control/UnitTest/TestProbeCommandGroup.py +++ b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py @@ -39,19 +39,11 @@ def test_get_probe_z(self): self.assertEqual(result, 500.0) # ---missing the relative--- - # def test_move_probe_xy(self): - # self.mock_comm.read_line.return_value = "0,0,3000,4000" - # - # # Fix enum error by verifying `ProbeXYReference.Relative` exists - # try: - # print("Available ProbeXYReference Enums:", list(ProbeXYReference)) - # xy_ref = ProbeXYReference.Relative # Ensure it's valid - # except AttributeError: - # raise Exception("ProbeXYReference.Relative does not exist!") - # - # result = self.probe_group.move_probe_xy(ProbeSentio.South, xy_ref, 3000, 4000) - # self.mock_comm.send.assert_called_with("move_positioner_xy South,Relative,3000,4000") - # self.assertEqual(result, (3000.0, 4000.0)) + def test_move_probe_xy(self): + self.mock_comm.read_line.return_value = "0,0,3000,4000" + result = self.test_prober.probe.move_probe_xy(ProbeSentio.South, ProbeXYReference.Home, 3000, 4000) + self.mock_comm.send.assert_called_with("move_positioner_xy South,Home,3000,4000") + self.assertEqual(result, (3000.0, 4000.0)) def test_move_probe_z(self): self.mock_comm.read_line.return_value = "0,0,1200" From 2bd624cb9a16cedcc4502323cf949059dac71881 Mon Sep 17 00:00:00 2001 From: Hoca Chen Date: Sun, 9 Mar 2025 20:52:01 +0800 Subject: [PATCH 3/3] modify unit test --- sentio_prober_control/UnitTest/TestProbeCommandGroup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sentio_prober_control/UnitTest/TestProbeCommandGroup.py b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py index 9c752f1..8106552 100644 --- a/sentio_prober_control/UnitTest/TestProbeCommandGroup.py +++ b/sentio_prober_control/UnitTest/TestProbeCommandGroup.py @@ -19,7 +19,7 @@ def test_async_step_probe_site(self): self.mock_comm.send.assert_called_with("start_step_positioner_site East,1") self.assertEqual(cmd_id, 123) - #----Command is different of document--- + #----Command is different of document, waiting the fix by another PR--- # def test_get_probe_site(self): # self.mock_comm.read_line.return_value = "0,0,site1,1000,2000" # result = self.test_prober.probe.get_probe_site(ProbeSentio.East, 0) @@ -35,7 +35,7 @@ def test_get_probe_xy(self): def test_get_probe_z(self): self.mock_comm.read_line.return_value = "0,0,500" result = self.test_prober.probe.get_probe_z(ProbeSentio.North, ProbeZReference.Zero) - self.mock_comm.send.assert_called_with("get_positioner_z North, Zero") + self.mock_comm.send.assert_called_with("get_positioner_z North,Zero") self.assertEqual(result, 500.0) # ---missing the relative--- @@ -48,7 +48,7 @@ def test_move_probe_xy(self): def test_move_probe_z(self): self.mock_comm.read_line.return_value = "0,0,1200" result = self.test_prober.probe.move_probe_z(ProbeSentio.West, ProbeZReference.Contact, 1200) - self.mock_comm.send.assert_called_with("move_positioner_z West, Contact, 1200") + self.mock_comm.send.assert_called_with("move_positioner_z West,Contact,1200") self.assertEqual(result, 1200.0)