1// =============================================================================
2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3// Copyright (C) 2013 - Pedro SOUZA
4//
5//  This file is distributed under the same license as the Scilab package.
6// =============================================================================
7// <-- TEST WITH GRAPHIC -->
8// test Light object
9// Check each default property
10figure();
11a=gca();
12l = light();
13assert_checkequal(l.type, "Light");
14assert_checkequal(l.parent.type, "Axes");
15assert_checkequal(l.children, []);
16assert_checkequal(l.visible, "on");
17assert_checkequal(l.light_type, "point");
18clf();
19subplot(2, 1, 1);
20a1=gca();
21subplot(2, 1, 2);
22a2=gca();
23l = light(a1);
24assert_checkequal(l.type, "Light");
25assert_checkequal(l.parent.type, "Axes");
26assert_checkequal(l.parent.UID, a1.UID);
27assert_checkequal(l.children, []);
28assert_checkequal(l.visible, "on");
29assert_checkequal(l.light_type, "point");
30clf();
31a=gca();
32l = light(a, visible="off", type="directional", position=[5 4 3], direction=[2 1 0], ambient_color=[0.3 0.3 0.3], diffuse_color=[0.2 0.2 0.2], specular_color=[0.1 0.1 0.1]);
33assert_checkequal(l.type, "Light");
34assert_checkequal(l.parent.type, "Axes");
35assert_checkequal(l.children, []);
36assert_checkequal(l.visible, "off");
37assert_checkequal(l.light_type, "directional");
38assert_checktrue(l.position - [5 4 3] < 1d-7);
39assert_checktrue(l.direction - [2 1 0] < 1d-7);
40assert_checktrue(l.ambient_color - [0.3 0.3 0.3] < 1d-7);
41assert_checktrue(l.diffuse_color - [0.2 0.2 0.2] < 1d-7);
42assert_checktrue(l.specular_color - [0.1 0.1 0.1] < 1d-7);
43// check valid parameter type
44errmsg=msprintf(_("Wrong type for ''%s'' property: Real matrix expected.\n"), "ambient_color");
45ierr = execstr("l.ambient_color = ''asd''", "errcatch");
46assert_checkequal(lasterror(), errmsg);
47errmsg=msprintf(_("Wrong type for ''%s'' property: Real matrix expected.\n"), "diffuse_color");
48ierr = execstr("l.diffuse_color = ''asd''", "errcatch");
49assert_checkequal(lasterror(), errmsg);
50errmsg=msprintf(_("Wrong type for ''%s'' property: Real matrix expected.\n"), "specular_color");
51ierr = execstr("l.specular_color = ''asd''", "errcatch");
52assert_checkequal(lasterror(), errmsg);
53errmsg=msprintf(_("Wrong type for ''%s'' property: Real matrix expected.\n"), "position");
54ierr = execstr("l.position = ''asd''", "errcatch");
55assert_checkequal(lasterror(), errmsg);
56errmsg=msprintf(_("Wrong type for ''%s'' property: Real matrix expected.\n"), "direction");
57ierr = execstr("l.direction = ''asd''", "errcatch");
58assert_checkequal(lasterror(), errmsg);
59errmsg=msprintf(_("Wrong type for ''%s'' property: String expected.\n"),  "light_type");
60ierr = execstr("l.light_type = 0", "errcatch");
61assert_checkequal(lasterror(), errmsg);
62// check parameter  vector size
63errmsg=msprintf(_("Wrong size for ''%s'' property: %d elements expected.\n"), "ambient_color", 3);
64ierr = execstr("l.ambient_color = [1 1]", "errcatch");
65assert_checkequal(lasterror(), errmsg);
66errmsg=msprintf(_("Wrong size for ''%s'' property: %d elements expected.\n"), "diffuse_color", 3);
67ierr = execstr("l.diffuse_color = [1 1]", "errcatch");
68assert_checkequal(lasterror(), errmsg);
69errmsg=msprintf(_("Wrong size for ''%s'' property: %d elements expected.\n"), "specular_color", 3);
70ierr = execstr("l.specular_color = [1 1]", "errcatch");
71assert_checkequal(lasterror(), errmsg);
72errmsg=msprintf(_("Wrong size for ''%s'' property: %d elements expected.\n"), "position", 3);
73ierr = execstr("l.position = [1 1]", "errcatch");
74assert_checkequal(lasterror(), errmsg);
75errmsg=msprintf(_("Wrong size for ''%s'' property: %d elements expected.\n"), "direction", 3);
76ierr = execstr("l.direction = [1 1]", "errcatch");
77assert_checkequal(lasterror(), errmsg);
78// check parameter bounds
79errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
80ierr = execstr("l.ambient_color = [-1 0 0]", "errcatch");
81assert_checkequal(lasterror(), errmsg);
82errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
83ierr = execstr("l.ambient_color = [0 -1 0]", "errcatch");
84assert_checkequal(lasterror(), errmsg);
85errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
86ierr = execstr("l.ambient_color = [0 0 -1]", "errcatch");
87assert_checkequal(lasterror(), errmsg);
88errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
89ierr = execstr("l.ambient_color = [1.5 0 0]", "errcatch");
90assert_checkequal(lasterror(), errmsg);
91errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
92ierr = execstr("l.ambient_color = [0 1.5 0]", "errcatch");
93assert_checkequal(lasterror(), errmsg);
94errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "ambient_color");
95ierr = execstr("l.ambient_color = [0 0 1.5]", "errcatch");
96assert_checkequal(lasterror(), errmsg);
97////////
98errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
99ierr = execstr("l.diffuse_color = [-1 0 0]", "errcatch");
100assert_checkequal(lasterror(), errmsg);
101errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
102ierr = execstr("l.diffuse_color = [0 -1 0]", "errcatch");
103assert_checkequal(lasterror(), errmsg);
104errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
105ierr = execstr("l.diffuse_color = [0 0 -1]", "errcatch");
106assert_checkequal(lasterror(), errmsg);
107errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
108ierr = execstr("l.diffuse_color = [1.5 0 0]", "errcatch");
109assert_checkequal(lasterror(), errmsg);
110errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
111ierr = execstr("l.diffuse_color = [0 1.5 0]", "errcatch");
112assert_checkequal(lasterror(), errmsg);
113errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "diffuse_color");
114ierr = execstr("l.diffuse_color = [0 0 1.5]", "errcatch");
115assert_checkequal(lasterror(), errmsg);
116/////////////
117errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
118ierr = execstr("l.specular_color = [-1 0 0]", "errcatch");
119assert_checkequal(lasterror(), errmsg);
120errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
121ierr = execstr("l.specular_color = [0 -1 0]", "errcatch");
122assert_checkequal(lasterror(), errmsg);
123errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
124ierr = execstr("l.specular_color = [0 0 -1]", "errcatch");
125assert_checkequal(lasterror(), errmsg);
126errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
127ierr = execstr("l.specular_color = [1.5 0 0]", "errcatch");
128assert_checkequal(lasterror(), errmsg);
129errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
130ierr = execstr("l.specular_color = [0 1.5 0]", "errcatch");
131assert_checkequal(lasterror(), errmsg);
132errmsg=msprintf(_("Wrong values for ''%s'' property: values between [0, 1] expected.\n"), "specular_color");
133ierr = execstr("l.specular_color = [0 0 1.5]", "errcatch");
134assert_checkequal(lasterror(), errmsg);
135// check light_type input
136errmsg=msprintf(_("Wrong value for ''%s'' property: ''directional'' or ''point'' expected.\n"), "light_type");
137ierr = execstr("l.light_type = ''pointt''", "errcatch");
138assert_checkequal(lasterror(), errmsg);
139errmsg=msprintf(_("Wrong value for ''%s'' property: ''directional'' or ''point'' expected.\n"), "light_type");
140ierr = execstr("l.light_type = ''ddirectional''", "errcatch");
141assert_checkequal(lasterror(), errmsg);
142delete(l);
143assert_checkequal(a.children, []);
144close();
145