openflexure-microscope-server/tests/test_microscope.py
2018-11-08 11:31:42 +00:00

70 lines
No EOL
1.7 KiB
Python

#!/usr/bin/env python
from openflexure_microscope.camera.pi import StreamingCamera
from openflexure_stage import OpenFlexureStage
from openflexure_microscope import Microscope
import os
import io
import sys
import time
import numpy as np
import uuid
from PIL import Image
import unittest
from pprint import pprint
import logging, sys
logging.basicConfig(stream=sys.stderr, level=logging.INFO)
success_string = """
/O
| |
_____) \\
(__0) \\______
(____0)
(____0) EVERYTHING IS OK!
(__o)___________
"""
class TestMicroscope(unittest.TestCase):
def test_movement(self):
move_distance = 500
for axis in range(3):
for direction in [1, -1]:
pos_i = microscope.stage.position
logging.debug(pos_i)
logging.info("Moving axis {} by {}".format(axis, move_distance*direction))
move = [0, 0, 0]
move[axis] = move_distance*direction
microscope.stage.move_rel(move)
pos_f = microscope.stage.position
diff = np.subtract(pos_f, pos_i)
logging.debug("{} > {}".format(pos_i, pos_f))
self.assertTrue(np.array_equal(diff, move))
if __name__ == '__main__':
with StreamingCamera() as camera, OpenFlexureStage("/dev/ttyUSB0") as stage:
microscope = Microscope(camera, stage)
suites = [
unittest.TestLoader().loadTestsFromTestCase(TestMicroscope),
]
alltests = unittest.TestSuite(suites)
result = unittest.TextTestRunner(verbosity=2).run(alltests)
if result.wasSuccessful():
print(success_string)
microscope.close()