forked from stepjam/PyRep
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_lights.py
109 lines (92 loc) · 4.34 KB
/
test_lights.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import unittest
import numpy as np
from tests.core import TestCore
from pyrep.objects.light import Light
class TestLights(TestCore):
def setUp(self):
super().setUp()
[self.pyrep.step() for _ in range(10)]
self.spot_light = Light('spot_light')
self.omni_light = Light('omni_light')
self.directed_light = Light('directed_light')
self.lights = [self.spot_light, self.omni_light, self.directed_light]
self.light_types = [1, 2, 3]
# turn on and off
def test_turn_on_and_off(self):
for light in self.lights:
light.turn_on()
self.assertTrue(light.is_on())
light.turn_off()
self.assertTrue(light.is_off())
# light color
def test_get_set_light_diffuse(self):
for light in self.lights:
orig_diffuse = light.get_diffuse()
new_diffuse = np.array([0.2, 0.5, 0.9])
light.set_diffuse(new_diffuse)
self.assertTrue(np.allclose(light.get_diffuse(), new_diffuse))
light.set_diffuse(orig_diffuse)
self.assertTrue(np.allclose(light.get_diffuse(), orig_diffuse))
def test_get_set_light_specular(self):
for light in self.lights:
orig_specular = light.get_specular()
new_specular = np.array([0.2, 0.5, 0.9])
light.set_specular(new_specular)
self.assertTrue(np.allclose(light.get_specular(), new_specular))
light.set_specular(orig_specular)
self.assertTrue(np.allclose(light.get_specular(), orig_specular))
# light intensity properties
def test_get_set_cast_shadows(self):
for light in self.lights:
orig = light.get_intensity_properties()[0]
new = not orig
light.set_intensity_properties(cast_shadows=new)
self.assertTrue(light.get_intensity_properties()[0] is new)
light.set_intensity_properties(cast_shadows=orig)
self.assertTrue(np.allclose(light.get_intensity_properties()[0], orig))
def test_get_set_spot_exponent(self):
for light in self.lights:
orig = light.get_intensity_properties()[1]
new = orig + 2
light.set_intensity_properties(spot_exponent=new)
self.assertEqual(light.get_intensity_properties()[1], new)
light.set_intensity_properties(spot_exponent=orig)
self.assertEqual(light.get_intensity_properties()[1], orig)
def test_get_set_spot_cutoff(self):
for light in self.lights:
orig = light.get_intensity_properties()[2]
new = orig - 0.5
light.set_intensity_properties(spot_cutoff=new)
self.assertEqual(light.get_intensity_properties()[2], new)
light.set_intensity_properties(spot_cutoff=orig)
self.assertEqual(light.get_intensity_properties()[2], orig)
# ToDo: re-add these tests once attenuation factor setting is supported in CoppeliaSim.
# setObjectFloatParams() does not change the properties of the light even with in-scene lua code.
'''
def test_get_set_const_atten_factor(self):
for light in self.lights:
orig = light.get_intensity_properties()[3]
new = orig + 1.5
light.set_intensity_properties(const_atten_factor=new)
assert light.get_intensity_properties()[3] == new
light.set_intensity_properties(const_atten_factor=orig)
assert light.get_intensity_properties()[3] == orig
def test_get_set_linear_atten_factor(self):
for light in self.lights:
orig = light.get_intensity_properties()[4]
new = orig + 1.5
light.set_intensity_properties(linear_atten_factor=new)
assert light.get_intensity_properties()[4] == new
light.set_intensity_properties(linear_atten_factor=orig)
assert light.get_intensity_properties()[4] == orig
def test_get_set_quad_atten_factor(self):
for light in self.lights:
orig = light.get_intensity_properties()[5]
new = orig + 1.5
light.set_intensity_properties(quad_atten_factor=new)
assert light.get_intensity_properties()[5] == new
light.set_intensity_properties(quad_atten_factor=orig)
assert light.get_intensity_properties()[5] == orig
'''
if __name__ == '__main__':
unittest.main()