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 time
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})
time.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()
for i in range(320*240):
o = cam['image'][i]
# Value computed with gimp help ...
if (o['r'] < 5 and o['g'] > 110 and o['b'] < 5):
res.append(i)
self.assertEqual(len(res), 0)
# Now, illuminate the scene
light_stream.publish({"emit": True})
time.sleep(2.0)
cam = cam_stream.get()
# search the green block in the image
for i in range(320*240):
o = cam['image'][i]
# Value computed with gimp help ...
if (o['r'] < 5 and o['g'] > 110 and o['b'] < 5):
res.append(i)
self.assertTrue(len(res) > 10000)
########################## Run these tests ##########################
if __name__ == "__main__":
import unittest
from morse.testing.testing import MorseTestRunner
suite = unittest.TestLoader().loadTestsFromTestCase(LightTest)
sys.exit(not MorseTestRunner().run(suite).wasSuccessful())