* Bug 16095 fixed: matrix_handles.prop = [] restored
[scilab.git] / scilab / modules / graphics / tests / unit_tests / set.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2018 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- TEST WITH GRAPHIC -->
9 // <-- NO CHECK REF -->
10 //
11 // Unitary tests for set(h), h.prop = and h("prop") =
12 //
13
14 clf;
15 plot();
16 f = gcf();
17
18 // SETS MULTIPLE PROPERTIES
19 // ========================
20 // .. of a scalar handle
21 set(f, "figure_name", "set() test", "axes_size", [500 400]);
22 assert_checkequal(f.figure_name, "set() test");
23 assert_checkequal(f.axes_size, [500 400]);
24
25 // .. of a vector of handles
26 set(f.children, "foreground", 2, "rotation_angles", [0 90], "view","2d");
27 assert_checkequal(f.children.foreground, [2 2]');
28 assert_checkequal(f.children.view, ["2d" "2d"]');
29 assert_checkequal(f.children.rotation_angles, [0 270 ; 0 270]);
30
31 // SCALAR HANDLE
32 // =============
33 // Scalar property value
34 set(f, "rotation_style", "multiple");
35 assert_checkequal(f.rotation_style, "multiple");
36 f.rotation_style = "unary";
37 assert_checkequal(f.rotation_style, "unary");
38 f("rotation_style") = "multiple";
39 assert_checkequal(f.rotation_style, "multiple");
40
41 // Row property value
42 set(f, "axes_size", [600, 500]); sleep(200)
43 assert_checkequal(f.axes_size, [600 500]);
44 f.axes_size = [700 600]; sleep(200)
45 assert_checkequal(f.axes_size, [700 600]);
46 f.axes_size = [650 550]; sleep(200)
47 assert_checkequal(f.axes_size, [650 550]);
48
49 // Matrix property value
50 cm = jetcolormap(50);
51 set(f, "color_map", cm);
52 assert_checkequal(f.color_map, cm);
53 cm = jetcolormap(51);
54 f.color_map = cm;
55 assert_checkequal(f.color_map, cm);
56 cm = jetcolormap(52);
57 f.color_map = cm;
58 assert_checkequal(f.color_map, cm);
59
60
61 // ARRAY OF HANDLES
62 // ================
63 e = gce().children;  // Set of curves
64
65 // Empty property => filled with a scalar => re-initialized to empty
66 e.display_function_data = "test";
67 assert_checkequal(e.display_function_data, emptystr(41,1)+"test");
68 e.display_function_data = [];
69 assert_checkequal(e.display_function_data, []);
70
71 // Scalar property value (curve.thickness): repeated assignment
72 L = list(e(1:3) , 2, [2 2 2]', ..
73          e(1:3)', 3, [3 3 3]', ..
74          matrix(e(1:6),2,3), 2, [2 2 2 2 2 2]');
75 for i = 0:(size(L)/3-1)
76     h = L(1+3*i);
77     v = L(2+3*i);
78     vref = L(3+3*i);
79     set(h, "thickness",v);
80     assert_checkequal(h.thickness, vref);
81     h.thickness = 2*v;
82     assert_checkequal(h.thickness, 2*vref);
83     h("thickness") = v;
84     assert_checkequal(h.thickness, vref);
85 end
86 // Scalar property value (curve.thickness): distributive assignment
87 L = list(e(1:3) , [2 3 4]', [2 3 4]', ..
88          e(1:3)', [1 2 3],  [1 2 3]', ..
89          matrix(e(1:6),2,3), [2 4 6; 3 5 7], (2:7)', ..
90          matrix(e(1:6),2,3), 1:6, (1:6)', ..
91          matrix(e(1:6),2,3), (1:6)', (1:6)', ..
92          );
93 for i = 0:(size(L)/3-1)
94     h = L(1+3*i);
95     v = L(2+3*i);
96     vref = L(3+3*i);
97     set(h, "thickness",v);
98     assert_checkequal(h.thickness, vref);
99     h.thickness = 2*v;
100     assert_checkequal(h.thickness, 2*vref);
101     h("thickness") = v;
102     assert_checkequal(h.thickness, vref);
103 end
104
105 // Row property value (axes.grid): repeated assignments
106 a = gcf().children;
107 L = list(a , [1 2], [1 2 ; 1 2], ..
108          a', [2 3], [2 3 ; 2 3], ..
109         );
110 for i = 0:(size(L)/3-1)
111     h = L(1+3*i);
112     v = L(2+3*i);
113     vref = L(3+3*i);
114     set(h, "grid",v);
115     assert_checkequal(h.grid, vref);
116     h.grid = v;
117     assert_checkequal(h.grid, vref);
118     h("grid") = v;
119     assert_checkequal(h.grid, vref);
120 end
121
122 // Row property value (axes.grid): row-wise assignments
123 L = list(a , [1 5 ; 3 5], [1 5 ; 3 5], ..
124          a' , [1 5 ; 3 5], [1 5 ; 3 5], ..
125         );
126 for i = 0:(size(L)/3-1)
127     h = L(1+3*i);
128     v = L(2+3*i);
129     vref = L(3+3*i);
130     set(h, "grid",v);
131     assert_checkequal(h.grid, vref);
132     h.grid = v;
133     assert_checkequal(h.grid, vref);
134     h("grid") = v;
135     assert_checkequal(h.grid, vref);
136 end
137
138 // Matrix property value (axes.data_bounds): repeated rowed assignments
139 L = list(a , [1 1.5 0 0.5], [1 0 ; 1.5 0.5 ; 1 0 ; 1.5 0.5], ..
140          a', [1 1.5 0 0.5], [1 0 ; 1.5 0.5 ; 1 0 ; 1.5 0.5], ..
141         );
142 for i = 0:(size(L)/3-1)
143     h = L(1+3*i);
144     v = L(2+3*i);
145     vref = L(3+3*i);
146     set(h, "data_bounds",v);
147     assert_checkequal(h.data_bounds, vref);
148     h.data_bounds = v;
149     assert_checkequal(h.data_bounds, vref);
150     h("data_bounds") = v;
151     assert_checkequal(h.data_bounds, vref);
152 end
153
154 // Matrix property value (axes.data_bounds): rowed-wise assignments
155 L = list(a , [1 1.5 0 0.5 ; 1.5 2.2 -0.5 1], [1 0 ; 1.5 0.5 ; 1.5 -0.5 ; 2.2 1], ..
156          a', [1 1.5 0 0.5 ; 1.5 2.2 -0.5 1], [1 0 ; 1.5 0.5 ; 1.5 -0.5 ; 2.2 1], ..
157         );  // beware about http://bugzilla.scilab.org/15079 for vref
158 for i = 0:(size(L)/3-1)
159     h = L(1+3*i);
160     v = L(2+3*i);
161     vref = L(3+3*i);
162     set(h, "data_bounds",v);
163     assert_checkequal(h.data_bounds, vref);
164     h.data_bounds = v;
165     assert_checkequal(h.data_bounds, vref);
166     h("data_bounds") = v;
167     assert_checkequal(h.data_bounds, vref);
168 end