def test_handle_surface_data(self):
     for data, validated in self.surface_data:
         atom_logic = AtomsLogic(10, 10, self.__class__.server_mock)
         z = 70
         self.__set_tool_is_coming_down(atom_logic, z)
         atom_logic.set_is_surface(False)
         if validated == 'valid':
             atom_logic.handle_server_data(data)
             self.assertTrue(atom_logic.is_surface())
             self.assertEqual(z - CORRECTION_Z, atom_logic.surface_data[0,
                                                                        0])
         else:
             atom_logic.handle_server_data(data)
             self.assertFalse(atom_logic.is_surface())
             self.assertNotEqual(z - CORRECTION_Z,
                                 atom_logic.surface_data[0, 0])
         self.assertFalse(atom_logic.is_atom())
Esempio n. 2
0
 def test_z_touch_surface_with_scan_mode(self):
     atom_logic = AtomsLogic(10, 10, self.__class__.server_mock)
     atom_logic.set_is_surface(True)
     assert atom_logic.is_scan_mode()
     assert atom_logic.is_surface()
     z = 70
     with self.assertRaises(TouchingSurface) as e:
         atom_logic.set_val_to_dto(DTO_Z, (1, 3, z))
     self.assertEqual("touching the surface", str(e.exception))
     assert atom_logic.tool_is_coming_down()
     self.assertNotEqual(atom_logic.get_dto_val(DTO_Z), z)
Esempio n. 3
0
    def test_x_touch_side_surface_with_scan_mode(self):
        atom_logic = AtomsLogic(10, 10, self.__class__.server_mock)
        atom_logic.set_is_surface(False)
        atom_logic.server.send_data_to_all_clients = MagicMock()
        assert atom_logic.is_scan_mode()
        assert not atom_logic.is_surface()
        x = 1
        y = 3
        z = 40
        atom_logic.surface_data[y, x] = 50
        atom_logic.set_val_to_dto(DTO_Z, (0, 0, z))

        atom_logic.update_tool_coordinate()
        tool_x, tool_y, tool_z = atom_logic.get_tool_coordinate()
        self.assertNotEqual(x, tool_x)
        self.assertEqual(z, tool_z)
        self.assertNotEqual(y, tool_y)
        atom_logic.server. \
            send_data_to_all_clients. \
            assert_called_once_with(f'{{"sensor": "servo_z", "value": "{str(MAX - z)}"}}')

        atom_logic.set_val_to_dto(DTO_Y, (0, y, z))
        assert not atom_logic.tool_is_coming_down()

        with self.assertRaises(TouchingSurface) as e:
            atom_logic.set_val_to_dto(DTO_X, (x, y, z))
        self.assertEqual("touching the surface", str(e.exception))
        assert not atom_logic.tool_is_coming_down()
        self.assertNotEqual(atom_logic.get_dto_val(DTO_X), x)

        atom_logic.update_tool_coordinate()
        tool_x, tool_y, tool_z = atom_logic.get_tool_coordinate()
        self.assertNotEqual(x, tool_x)
        self.assertEqual(z, tool_z)
        self.assertEqual(y, tool_y)
        atom_logic.server. \
            send_data_to_all_clients. \
            assert_called_with(json.dumps(atom_logic.dto_y.to_dict()))
Esempio n. 4
0
class TestAtomCollection(TestCase):
    server_mock = None

    @classmethod
    def setUpClass(cls):
        cls.server_mock = Mock()
        attrs = {
            'type_object': 'Server',
            'external_handle_func': '',
        }
        cls.server_mock.configure_mock(**attrs)

    @classmethod
    def tearDownClass(cls):
        cls.server_mock = None

    def setUp(self) -> None:
        self.atom_logic = AtomsLogic(10, 10, self.__class__.server_mock)
        self.atom_logic.set_is_surface(False)
        self.atom_logic.server.send_data_to_all_clients = MagicMock()
        assert self.atom_logic.is_scan_mode()
        assert not self.atom_logic.is_surface()
        self.atom_logic.set_is_atom(True)
        atom_coord = (1, 3, 40)
        self.atom_logic.set_val_to_dto(DTO_X, atom_coord)
        self.atom_logic.set_val_to_dto(DTO_Y, atom_coord)
        self.atom_logic.set_val_to_dto(DTO_Z, atom_coord)
        self.atom_logic.update_tool_coordinate()

    def tearDown(self) -> None:
        self.atom_logic = None

    def test_append_unique_atom(self):
        self.assertEqual(0, len(self.atom_logic.atom_collection.atoms_list))

        is_append = self.atom_logic.atom_collection.append_unique_atom()
        self.assertTrue(is_append)
        self.assertEqual(1, len(self.atom_logic.atom_collection.atoms_list))

        is_append = self.atom_logic.atom_collection.append_unique_atom()
        self.assertFalse(is_append)
        self.assertEqual(1, len(self.atom_logic.atom_collection.atoms_list))

    def test_set_atom_captured(self):
        self.assertEqual(0, len(self.atom_logic.atom_collection.atoms_list))

        is_append = self.atom_logic.atom_collection.append_unique_atom()
        self.assertTrue(is_append)
        self.assertEqual(1, len(self.atom_logic.atom_collection.atoms_list))
        x, y, z = self.atom_logic.get_tool_coordinate()

        self.atom_logic.set_is_atom_captured(True)
        self.assertTrue(self.atom_logic.atom_captured_event)
        atom = self.atom_logic.atom_collection.atoms_list[0]
        self.assertTrue(atom.is_captured)
        self.assertTrue(self.atom_logic.is_atom_captured())
        self.assertEqual(atom.coordinates, (x, y, z))

        self.atom_logic.set_is_atom_captured(False)
        self.assertTrue(self.atom_logic.atom_release_event)
        atom = self.atom_logic.atom_collection.atoms_list[0]
        self.assertFalse(atom.is_captured)
        self.assertFalse(self.atom_logic.is_atom_captured())
        self.assertEqual(atom.coordinates, (x, y, z))

        self.atom_logic.set_val_to_dto(DTO_Z, (x, y, z + 1))
        self.atom_logic.update_tool_coordinate()
        self.atom_logic.set_is_atom_captured(True)
        self.assertTrue(self.atom_logic.atom_captured_event)
        atom = self.atom_logic.atom_collection.atoms_list[0]
        self.assertTrue(atom.is_captured)
        self.assertTrue(self.atom_logic.is_atom_captured())
        self.assertEqual(atom.coordinates, (x, y, z))

        self.atom_logic.set_is_atom_captured(False)
        self.assertTrue(self.atom_logic.atom_release_event)
        atom = self.atom_logic.atom_collection.atoms_list[0]
        self.assertFalse(atom.is_captured)
        self.assertFalse(self.atom_logic.is_atom_captured())
        self.assertEqual(atom.coordinates, (x, y, z + 1))

        self.assertEqual(len(self.atom_logic.atom_collection.atoms_list), 1)