Source code for base.light_testing

#! /usr/bin/env python
"""
This script tests the 'data stream' oriented feature of the socket interface.
"""

from morse.testing.testing import MorseTestCase

try:
    # Include this import to be able to use your test file as a regular 
    # builder script, ie, usable with: 'morse [run|exec] <your test>.py
    from morse.builder import *
    from morse.builder.actuators import Light
except ImportError:
    pass

import sys
import base64
from pymorse import Morse

[docs]class LightTest(MorseTestCase):
[docs] def setUpEnv(self): atrv = ATRV() cam = VideoCamera() cam.properties(capturing = True, cam_width = 320, cam_height = 240, \ cam_focal = 25.0000, Vertical_Flip = True) cam.translate(x=0.2, z=0.9) atrv.append(cam) cam.add_stream('socket') light = Light('light') light.translate(x=0.2, z=1.1) light.properties(Distance = 50.0) atrv.append(light) light.add_stream('socket') block = PassiveObject('environments/indoors-1/boxes', 'GreenBox') block.translate(x=2, y=0, z=1) env = Environment('empty')
[docs] def test_light(self): with Morse() as morse: cam_stream = morse.atrv.cam light_stream = morse.atrv.light light_stream.publish({"emit": False}) morse.sleep(1.0) # Light is shutdown. There is no light source on the scene, # so camera can't distinguish color res = [] # search the green block in the image cam = cam_stream.get() img = base64.b64decode( cam['image'] ) for i in range(0, 320*240*4, 4): # Value computed with gimp help ... if (img[i] < 10 and img[i+1] > 170 and img[i+2] < 30): res.append(i) self.assertEqual(len(res), 0) # Now, illuminate the scene light_stream.publish({"emit": True}) morse.sleep(2.0) cam = cam_stream.get() img = base64.b64decode( cam['image'] ) # search the green block in the image for i in range(0, 320*240*4, 4): # Value computed with gimp help ... if (img[i] < 10 and img[i+1] > 170 and img[i+2] < 30): res.append(i) self.assertGreater(len(res), 7000)
########################## Run these tests ########################## if __name__ == "__main__": from morse.testing.testing import main main(LightTest)