1 /***************************************************************************
3 * Copyright 2010-2014 BMW Car IT GmbH
4 * Copyright (C) 2012 DENSO CORPORATION and Robert Bosch Car Multimedia Gmbh
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ****************************************************************************/
21 #include <gtest/gtest.h>
26 #include "ilm_client.h"
27 #include "ilm_control.h"
30 class IlmCommandTest : public TestBase, public ::testing::Test {
34 ASSERT_EQ(ILM_SUCCESS, ilm_initWithNativedisplay((t_ilm_nativedisplay)wlDisplay));
39 //print_lmc_get_scene();
40 t_ilm_layer* layers = NULL;
42 EXPECT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&numLayer, &layers));
43 for (t_ilm_int i=0; i<numLayer; i++)
45 EXPECT_EQ(ILM_SUCCESS, ilm_layerRemove(layers[i]));
49 t_ilm_surface* surfaces = NULL;
50 t_ilm_int numSurfaces=0;
51 EXPECT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&numSurfaces, &surfaces));
52 for (t_ilm_int i=0; i<numSurfaces; i++)
54 EXPECT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surfaces[i]));
57 EXPECT_EQ(ILM_SUCCESS, ilm_commitChanges());
58 EXPECT_EQ(ILM_SUCCESS, ilm_destroy());
62 TEST_F(IlmCommandTest, SetGetSurfaceDimension) {
65 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 10, 10, ILM_PIXELFORMAT_RGBA_8888, &surface));
67 t_ilm_uint dim[2] = {15, 25};
68 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetDimension(surface, dim));
69 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
71 t_ilm_uint dimreturned[2];
72 EXPECT_EQ(ILM_SUCCESS, ilm_surfaceGetDimension(surface, dimreturned));
73 EXPECT_EQ(dim[0], dimreturned[0]);
74 EXPECT_EQ(dim[1], dimreturned[1]);
77 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
80 TEST_F(IlmCommandTest, SetGetSurfaceDimension_InvalidInput) {
81 uint surface = 0xdeadbeef;
82 t_ilm_uint dim[2] = {15, 25};
84 ASSERT_NE(ILM_SUCCESS, ilm_surfaceSetDimension(surface, dim));
85 EXPECT_NE(ILM_SUCCESS, ilm_surfaceGetDimension(surface, dim));
88 TEST_F(IlmCommandTest, SetGetLayerDimension) {
91 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
93 t_ilm_uint dim[2] = {115, 125};
94 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetDimension(layer, dim));
95 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
97 t_ilm_uint dimreturned[2];
98 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetDimension(layer, dimreturned));
99 EXPECT_EQ(dim[0], dimreturned[0]);
100 EXPECT_EQ(dim[1], dimreturned[1]);
103 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
106 TEST_F(IlmCommandTest, SetGetLayerDimension_InvalidInput) {
107 uint layer = 0xdeadbeef;
108 t_ilm_uint dim[2] = {115, 125};
110 ASSERT_NE(ILM_SUCCESS, ilm_layerSetDimension(layer, dim));
111 ASSERT_NE(ILM_SUCCESS, ilm_layerGetDimension(layer, dim));
114 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
117 TEST_F(IlmCommandTest, SetGetSurfacePosition) {
120 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 10, 10, ILM_PIXELFORMAT_RGBA_8888, &surface));
122 t_ilm_uint pos[2] = {15, 25};
123 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetPosition(surface, pos));
124 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
126 t_ilm_uint posreturned[2];
127 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPosition(surface, posreturned));
128 EXPECT_EQ(pos[0], posreturned[0]);
129 EXPECT_EQ(pos[1], posreturned[1]);
132 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
135 TEST_F(IlmCommandTest, SetGetSurfacePosition_InvalidInput) {
136 uint surface = 0xdeadbeef;
137 t_ilm_uint pos[2] = {15, 25};
138 ASSERT_NE(ILM_SUCCESS, ilm_surfaceSetPosition(surface, pos));
139 ASSERT_NE(ILM_SUCCESS, ilm_surfaceGetPosition(surface, pos));
142 TEST_F(IlmCommandTest, SetGetLayerPosition) {
145 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
147 t_ilm_uint pos[2] = {115, 125};
148 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetPosition(layer, pos));
149 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
151 t_ilm_uint posreturned[2];
152 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetPosition(layer, posreturned));
153 ASSERT_EQ(pos[0], posreturned[0]);
154 ASSERT_EQ(pos[1], posreturned[1]);
157 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
160 TEST_F(IlmCommandTest, SetGetLayerPosition_InvalidInput) {
161 uint layer = 0xdeadbeef;
162 t_ilm_uint pos[2] = {15, 25};
163 ASSERT_NE(ILM_SUCCESS, ilm_layerSetPosition(layer, pos));
164 ASSERT_NE(ILM_SUCCESS, ilm_layerGetPosition(layer, pos));
167 TEST_F(IlmCommandTest, SetGetSurfaceOrientation) {
169 ilmOrientation returned;
170 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
172 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_NINETY));
173 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
174 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOrientation(surface, &returned));
175 ASSERT_EQ(ILM_NINETY, returned);
177 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_ONEHUNDREDEIGHTY));
178 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
179 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOrientation(surface, &returned));
180 ASSERT_EQ(ILM_ONEHUNDREDEIGHTY, returned);
182 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_TWOHUNDREDSEVENTY));
183 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
184 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOrientation(surface, &returned));
185 ASSERT_EQ(ILM_TWOHUNDREDSEVENTY, returned);
187 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_ZERO));
188 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
189 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOrientation(surface, &returned));
190 ASSERT_EQ(ILM_ZERO, returned);
193 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
196 TEST_F(IlmCommandTest, SetGetLayerOrientation) {
198 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
199 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
200 ilmOrientation returned;
202 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_NINETY));
203 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
204 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOrientation(layer, &returned));
205 ASSERT_EQ(ILM_NINETY, returned);
207 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_ONEHUNDREDEIGHTY));
208 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
209 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOrientation(layer, &returned));
210 ASSERT_EQ(ILM_ONEHUNDREDEIGHTY, returned);
212 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_TWOHUNDREDSEVENTY));
213 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
214 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOrientation(layer, &returned));
215 ASSERT_EQ(ILM_TWOHUNDREDSEVENTY, returned);
217 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_ZERO));
218 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
219 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOrientation(layer, &returned));
220 ASSERT_EQ(ILM_ZERO, returned);
223 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
226 TEST_F(IlmCommandTest, SetGetSurfaceOpacity) {
231 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
232 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
234 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface1, 0.88));
235 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
236 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOpacity(surface1, &opacity));
237 EXPECT_NEAR(0.88, opacity, 0.01);
239 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface2, 0.001));
240 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
241 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetOpacity(surface2, &opacity));
242 EXPECT_NEAR(0.001, opacity, 0.01);
245 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
246 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
249 TEST_F(IlmCommandTest, SetGetSurfaceOpacity_InvalidInput) {
250 t_ilm_uint surface = 0xdeadbeef;
253 ASSERT_NE(ILM_SUCCESS, ilm_surfaceSetOpacity(surface, 0.88));
254 ASSERT_NE(ILM_SUCCESS, ilm_surfaceGetOpacity(surface, &opacity));
257 TEST_F(IlmCommandTest, SetGetLayerOpacity) {
262 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer1, 800, 480));
263 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer2, 800, 480));
265 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOpacity(layer1, 0.88));
266 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
267 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOpacity(layer1, &opacity));
268 EXPECT_NEAR(0.88, opacity, 0.01);
270 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOpacity(layer2, 0.001));
271 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
272 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetOpacity(layer2, &opacity));
273 EXPECT_NEAR(0.001, opacity, 0.01);
276 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer1));
277 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer2));
280 TEST_F(IlmCommandTest, SetGetLayerOpacity_InvalidInput) {
281 t_ilm_layer layer = 0xdeadbeef;
284 ASSERT_NE(ILM_SUCCESS, ilm_layerSetOpacity(layer, 0.88));
285 ASSERT_NE(ILM_SUCCESS, ilm_layerGetOpacity(layer, &opacity));
288 TEST_F(IlmCommandTest, SetGetSurfaceVisibility) {
290 t_ilm_bool visibility;
292 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
294 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, ILM_TRUE));
295 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
296 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetVisibility(surface, &visibility));
297 ASSERT_EQ(ILM_TRUE, visibility);
299 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, ILM_FALSE));
300 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
301 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetVisibility(surface, &visibility));
302 ASSERT_EQ(ILM_FALSE, visibility);
304 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, ILM_TRUE));
305 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
306 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetVisibility(surface, &visibility));
307 ASSERT_EQ(ILM_TRUE, visibility);
310 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
313 TEST_F(IlmCommandTest, SetGetSurfaceVisibility_InvalidInput) {
314 uint surface = 0xdeadbeef;
315 t_ilm_bool visibility;
317 ASSERT_NE(ILM_SUCCESS, ilm_surfaceGetVisibility(surface, &visibility));
318 ASSERT_NE(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, ILM_TRUE));
319 ASSERT_NE(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, ILM_FALSE));
322 TEST_F(IlmCommandTest, SetGetLayerVisibility) {
324 t_ilm_bool visibility;
326 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
328 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetVisibility(layer, ILM_TRUE));
329 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
330 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetVisibility(layer, &visibility));
331 ASSERT_EQ(ILM_TRUE, visibility);
333 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetVisibility(layer, ILM_FALSE));
334 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
335 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetVisibility(layer, &visibility));
336 ASSERT_EQ(ILM_FALSE, visibility);
338 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetVisibility(layer, ILM_TRUE));
339 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
340 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetVisibility(layer, &visibility));
341 ASSERT_EQ(ILM_TRUE, visibility);
344 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
347 TEST_F(IlmCommandTest, SetGetLayerVisibility_InvalidInput) {
348 uint layer = 0xdeadbeef;
349 t_ilm_bool visibility;
351 ASSERT_NE(ILM_SUCCESS, ilm_layerGetVisibility(layer, &visibility));
352 ASSERT_NE(ILM_SUCCESS, ilm_layerSetVisibility(layer, ILM_TRUE));
353 ASSERT_NE(ILM_SUCCESS, ilm_layerSetVisibility(layer, ILM_FALSE));
356 TEST_F(IlmCommandTest, SetSurfaceSourceRectangle) {
357 t_ilm_uint surface = 0xbeef;
358 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
359 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
361 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(surface, 89, 6538, 638, 4));
362 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
364 ilmSurfaceProperties surfaceProperties;
365 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface, &surfaceProperties));
366 ASSERT_EQ(89u, surfaceProperties.sourceX);
367 ASSERT_EQ(6538u, surfaceProperties.sourceY);
368 ASSERT_EQ(638u, surfaceProperties.sourceWidth);
369 ASSERT_EQ(4u, surfaceProperties.sourceHeight);
372 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
375 TEST_F(IlmCommandTest, SetSurfaceSourceRectangle_InvalidInput) {
376 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(0xdeadbeef, 89, 6538, 638, 4));
377 ASSERT_NE(ILM_SUCCESS, ilm_commitChanges());
380 TEST_F(IlmCommandTest, ilm_getScreenIDs) {
381 t_ilm_uint numberOfScreens = 0;
382 t_ilm_uint* screenIDs = NULL;
383 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&numberOfScreens, &screenIDs));
384 ASSERT_GT(numberOfScreens, 0u);
387 TEST_F(IlmCommandTest, ilm_getScreenResolution_SingleScreen) {
388 t_ilm_uint numberOfScreens = 0;
389 t_ilm_uint* screenIDs = NULL;
390 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&numberOfScreens, &screenIDs));
391 ASSERT_TRUE(numberOfScreens>0);
393 uint firstScreen = screenIDs[0];
394 t_ilm_uint width = 0, height = 0;
395 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenResolution(firstScreen, &width, &height));
396 ASSERT_GT(width, 0u);
397 ASSERT_GT(height, 0u);
400 TEST_F(IlmCommandTest, ilm_getScreenResolution_MultiScreen) {
401 t_ilm_uint numberOfScreens = 0;
402 t_ilm_uint* screenIDs = NULL;
403 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&numberOfScreens, &screenIDs));
404 ASSERT_TRUE(numberOfScreens>0);
406 for (uint screenIndex = 0; screenIndex < numberOfScreens; ++screenIndex)
408 uint screen = screenIDs[screenIndex];
409 t_ilm_uint width = 0, height = 0;
410 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenResolution(screen, &width, &height));
411 ASSERT_GT(width, 0u);
412 ASSERT_GT(height, 0u);
416 TEST_F(IlmCommandTest, ilm_getLayerIDs) {
420 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer1, 800, 480));
421 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer2, 800, 480));
422 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
426 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
428 ASSERT_EQ(layer1, IDs[0]);
429 ASSERT_EQ(layer2, IDs[1]);
433 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer1));
434 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer2));
437 TEST_F(IlmCommandTest, ilm_getLayerIDsOfScreen) {
438 t_ilm_layer layer1 = 3246;
439 t_ilm_layer layer2 = 46586;
440 t_ilm_uint roLength = 2;
441 t_ilm_layer idRenderOrder[2] = {layer1, layer2};
442 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer1, 800, 480));
443 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer2, 800, 480));
444 ASSERT_EQ(ILM_SUCCESS, ilm_displaySetRenderOrder(0, idRenderOrder, roLength));
445 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
447 t_ilm_int length = 0;
448 t_ilm_layer* IDs = 0;
449 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDsOnScreen(0, &length, &IDs));
451 ASSERT_EQ(2, length);
452 EXPECT_EQ(layer1, IDs[0]);
453 EXPECT_EQ(layer2, IDs[1]);
456 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer1));
457 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer2));
460 TEST_F(IlmCommandTest, ilm_getSurfaceIDs) {
461 uint surface1 = 3246;
462 uint surface2 = 46586;
464 t_ilm_int old_length;
466 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&old_length, &IDs));
467 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
468 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
469 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
473 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&length, &IDs));
475 ASSERT_EQ(old_length+2, length);
476 ASSERT_EQ(surface1, IDs[old_length]);
477 ASSERT_EQ(surface2, IDs[old_length+1]);
481 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
482 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
485 TEST_F(IlmCommandTest, ilm_surfaceCreate_Remove) {
486 uint surface1 = 3246;
487 uint surface2 = 46586;
488 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
489 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
490 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
494 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&length, &IDs));
496 ASSERT_EQ(length, 2);
497 ASSERT_EQ(surface1, IDs[0]);
498 ASSERT_EQ(surface2, IDs[1]);
500 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
501 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
502 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&length, &IDs));
503 ASSERT_EQ(length, 1);
504 ASSERT_EQ(surface2, IDs[0]);
506 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
507 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
508 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&length, &IDs));
509 ASSERT_EQ(length, 0);
512 TEST_F(IlmCommandTest, ilm_layerCreate_Remove) {
515 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer1, 800, 480));
516 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer2, 800, 480));
517 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
521 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
523 ASSERT_EQ(length, 2);
524 ASSERT_EQ(layer1, IDs[0]);
525 ASSERT_EQ(layer2, IDs[1]);
528 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer1));
529 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
530 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
531 ASSERT_EQ(length, 1);
532 ASSERT_EQ(layer2, IDs[0]);
535 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer2));
536 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
537 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
538 ASSERT_EQ(length, 0);
542 TEST_F(IlmCommandTest, ilm_layerRemove_InvalidInput) {
545 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
548 t_ilm_int new_length;
549 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(0xdeadbeef));
550 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
551 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&new_length, &IDs));
552 ASSERT_EQ(length, new_length);
556 TEST_F(IlmCommandTest, ilm_layerRemove_InvalidUse) {
557 uint layer = 0xdeadbeef;
559 t_ilm_int orig_length;
561 t_ilm_int new_length;
563 // get the initial number of layers
564 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&orig_length, &IDs));
568 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
569 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
570 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
571 ASSERT_EQ(length, orig_length+1);
574 // remove the new layer
575 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
576 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
577 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&length, &IDs));
578 ASSERT_EQ(length, orig_length);
581 // try to remove the same layer once more
582 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
583 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
584 ASSERT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&new_length, &IDs));
585 ASSERT_EQ(length, new_length);
589 TEST_F(IlmCommandTest, ilm_layerGetType) {
590 t_ilm_uint layer = 0xbeef;
593 // add a layer and check its type
594 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
595 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
596 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetType(layer, &type));
597 ASSERT_EQ(ILM_LAYERTYPE_SOFTWARE2D, type);
600 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(0xbeef));
603 TEST_F(IlmCommandTest, ilm_layerGetType_InvalidInput) {
606 // check type of a non-existing layer
607 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetType(0xdeadbeef, &type));
608 ASSERT_EQ(ILM_LAYERTYPE_UNKNOWN, type);
611 TEST_F(IlmCommandTest, ilm_layerGetCapabilities) {
612 t_ilm_uint layer = 0xbeef;
613 t_ilm_layercapabilities caps;
615 t_ilm_layercapabilities exp_caps = 0;
617 // add a layer and check its capabilities
618 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
619 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
620 ASSERT_EQ(ILM_SUCCESS, ilm_layerGetCapabilities(layer, &caps));
621 ASSERT_EQ(exp_caps, caps);
624 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(0xbeef));
627 TEST_F(IlmCommandTest, ilm_layerTypeGetCapabilities) {
628 t_ilm_layercapabilities caps;
630 t_ilm_layercapabilities exp_caps = 0;
632 // check ILM_LAYERTYPE_UNKNOWN
634 ASSERT_EQ(ILM_SUCCESS, ilm_layerTypeGetCapabilities(ILM_LAYERTYPE_UNKNOWN, &caps));
635 ASSERT_EQ(exp_caps, caps);
637 // check ILM_LAYERTYPE_HARDWARE
639 ASSERT_EQ(ILM_SUCCESS, ilm_layerTypeGetCapabilities(ILM_LAYERTYPE_HARDWARE, &caps));
640 ASSERT_EQ(exp_caps, caps);
642 // check ILM_LAYERTYPE_SOFTWARE2D
644 ASSERT_EQ(ILM_SUCCESS, ilm_layerTypeGetCapabilities(ILM_LAYERTYPE_SOFTWARE2D, &caps));
645 ASSERT_EQ(exp_caps, caps);
647 // check ILM_LAYERTYPE_SOFTWARE2_5D
649 ASSERT_EQ(ILM_SUCCESS, ilm_layerTypeGetCapabilities(ILM_LAYERTYPE_SOFTWARE2_5D, &caps));
650 ASSERT_EQ(exp_caps, caps);
653 TEST_F(IlmCommandTest, ilm_surface_initialize) {
654 uint surface_10 = 10;
655 uint surface_20 = 20;
656 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceInitialize(&surface_10));
657 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceInitialize(&surface_20));
661 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDs(&length, &IDs));
663 ASSERT_EQ(length, 2);
664 ASSERT_EQ(surface_10, IDs[0]);
665 ASSERT_EQ(surface_20, IDs[1]);
668 TEST_F(IlmCommandTest, ilm_layerAddSurface_ilm_layerRemoveSurface_ilm_getSurfaceIDsOnLayer) {
670 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
671 uint surface1 = 3246;
672 uint surface2 = 46586;
673 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
674 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
675 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
679 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
680 ASSERT_EQ(length, 0);
683 ASSERT_EQ(ILM_SUCCESS, ilm_layerAddSurface(layer, surface1));
684 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
685 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
686 ASSERT_EQ(length, 1);
687 ASSERT_EQ(surface1, IDs[0]);
690 ASSERT_EQ(ILM_SUCCESS, ilm_layerAddSurface(layer, surface2));
691 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
692 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
693 ASSERT_EQ(length, 2);
694 ASSERT_EQ(surface1, IDs[0]);
695 ASSERT_EQ(surface2, IDs[1]);
698 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemoveSurface(layer, surface1));
699 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
700 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
701 ASSERT_EQ(length, 1);
702 ASSERT_EQ(surface2, IDs[0]);
705 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemoveSurface(layer, surface2));
706 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
707 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
708 ASSERT_EQ(length, 0);
712 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
713 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
714 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
717 TEST_F(IlmCommandTest, ilm_getSurfaceIDsOnLayer_InvalidInput) {
718 uint layer = 0xdeadbeef;
722 ASSERT_NE(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, &IDs));
725 TEST_F(IlmCommandTest, ilm_getSurfaceIDsOnLayer_InvalidResources) {
727 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
728 uint surface1 = 0xbeef1;
729 uint surface2 = 0xbeef2;
730 uint surface3 = 0xbeef3;
731 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
732 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
733 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface3));
734 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
741 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, IDs, 3));
742 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
744 ASSERT_NE(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &length, NULL));
747 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
748 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
749 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface3));
750 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
753 TEST_F(IlmCommandTest, ilm_getPropertiesOfSurface_ilm_surfaceSetSourceRectangle_ilm_surfaceSetDestinationRectangle) {
754 t_ilm_uint surface = 0xbeef;
755 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
756 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
758 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface, 0.8765));
759 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(surface, 89, 6538, 638, 4));
760 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetDestinationRectangle(surface, 54, 47, 947, 9));
761 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_NINETY));
762 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, true));
763 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
765 ilmSurfaceProperties surfaceProperties;
766 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface, &surfaceProperties));
767 ASSERT_NEAR(0.8765, surfaceProperties.opacity, 0.1);
768 ASSERT_EQ(89u, surfaceProperties.sourceX);
769 ASSERT_EQ(6538u, surfaceProperties.sourceY);
770 ASSERT_EQ(638u, surfaceProperties.sourceWidth);
771 ASSERT_EQ(4u, surfaceProperties.sourceHeight);
772 ASSERT_EQ(54u, surfaceProperties.destX);
773 ASSERT_EQ(47u, surfaceProperties.destY);
774 ASSERT_EQ(947u, surfaceProperties.destWidth);
775 ASSERT_EQ(9u, surfaceProperties.destHeight);
776 ASSERT_EQ(ILM_NINETY, surfaceProperties.orientation);
777 ASSERT_TRUE( surfaceProperties.visibility);
779 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface, 0.436));
780 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(surface, 784, 546, 235, 78));
781 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetDestinationRectangle(surface, 536, 5372, 3, 4316));
782 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_TWOHUNDREDSEVENTY));
783 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, false));
784 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
786 ilmSurfaceProperties surfaceProperties2;
787 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface, &surfaceProperties2));
788 ASSERT_NEAR(0.436, surfaceProperties2.opacity, 0.1);
789 ASSERT_EQ(784u, surfaceProperties2.sourceX);
790 ASSERT_EQ(546u, surfaceProperties2.sourceY);
791 ASSERT_EQ(235u, surfaceProperties2.sourceWidth);
792 ASSERT_EQ(78u, surfaceProperties2.sourceHeight);
793 ASSERT_EQ(536u, surfaceProperties2.destX);
794 ASSERT_EQ(5372u, surfaceProperties2.destY);
795 ASSERT_EQ(3u, surfaceProperties2.destWidth);
796 ASSERT_EQ(4316u, surfaceProperties2.destHeight);
797 ASSERT_EQ(ILM_TWOHUNDREDSEVENTY, surfaceProperties2.orientation);
798 ASSERT_FALSE(surfaceProperties2.visibility);
801 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
804 TEST_F(IlmCommandTest, ilm_getPropertiesOfSurface_ilm_surfaceSetSourceRectangle_ilm_surfaceSetDestinationRectangle_ilm_surfaceSetChromaKey) {
805 t_ilm_uint surface = 0xbeef;
806 t_ilm_int chromaKey[3] = {3, 22, 111};
807 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
808 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
810 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface, 0.8765));
811 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(surface, 89, 6538, 638, 4));
812 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetDestinationRectangle(surface, 54, 47, 947, 9));
813 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_NINETY));
814 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, true));
815 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetChromaKey(surface, &chromaKey[0]));
816 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
818 ilmSurfaceProperties surfaceProperties;
819 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface, &surfaceProperties));
820 ASSERT_EQ(0.8765, surfaceProperties.opacity);
821 ASSERT_EQ(89u, surfaceProperties.sourceX);
822 ASSERT_EQ(6538u, surfaceProperties.sourceY);
823 ASSERT_EQ(638u, surfaceProperties.sourceWidth);
824 ASSERT_EQ(4u, surfaceProperties.sourceHeight);
825 ASSERT_EQ(54u, surfaceProperties.destX);
826 ASSERT_EQ(47u, surfaceProperties.destY);
827 ASSERT_EQ(947u, surfaceProperties.destWidth);
828 ASSERT_EQ(9u, surfaceProperties.destHeight);
829 ASSERT_EQ(ILM_NINETY, surfaceProperties.orientation);
830 ASSERT_TRUE( surfaceProperties.visibility);
831 ASSERT_TRUE( surfaceProperties.chromaKeyEnabled);
832 ASSERT_EQ(3u, surfaceProperties.chromaKeyRed);
833 ASSERT_EQ(22u, surfaceProperties.chromaKeyGreen);
834 ASSERT_EQ(111u, surfaceProperties.chromaKeyBlue);
836 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOpacity(surface, 0.436));
837 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetSourceRectangle(surface, 784, 546, 235, 78));
838 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetDestinationRectangle(surface, 536, 5372, 3, 4316));
839 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetOrientation(surface, ILM_TWOHUNDREDSEVENTY));
840 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetVisibility(surface, false));
841 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceSetChromaKey(surface, NULL));
842 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
844 ilmSurfaceProperties surfaceProperties2;
845 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface, &surfaceProperties2));
846 ASSERT_EQ(0.436, surfaceProperties2.opacity);
847 ASSERT_EQ(784u, surfaceProperties2.sourceX);
848 ASSERT_EQ(546u, surfaceProperties2.sourceY);
849 ASSERT_EQ(235u, surfaceProperties2.sourceWidth);
850 ASSERT_EQ(78u, surfaceProperties2.sourceHeight);
851 ASSERT_EQ(536u, surfaceProperties2.destX);
852 ASSERT_EQ(5372u, surfaceProperties2.destY);
853 ASSERT_EQ(3u, surfaceProperties2.destWidth);
854 ASSERT_EQ(4316u, surfaceProperties2.destHeight);
855 ASSERT_EQ(ILM_TWOHUNDREDSEVENTY, surfaceProperties2.orientation);
856 ASSERT_FALSE(surfaceProperties2.visibility);
857 ASSERT_FALSE(surfaceProperties2.chromaKeyEnabled);
860 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
863 TEST_F(IlmCommandTest, ilm_getPropertiesOfLayer_ilm_layerSetSourceRectangle_ilm_layerSetDestinationRectangle_ilm_layerSetChromaKey) {
864 t_ilm_uint layer = 0xbeef;
865 t_ilm_int chromaKey[3] = {3, 22, 111};
866 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
867 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
869 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOpacity(layer, 0.8765));
870 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetSourceRectangle(layer, 89, 6538, 638, 4));
871 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetDestinationRectangle(layer, 54, 47, 947, 9));
872 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_NINETY));
873 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetVisibility(layer, true));
874 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetChromaKey(layer, chromaKey));
875 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
877 ilmLayerProperties layerProperties1;
878 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfLayer(layer, &layerProperties1));
879 ASSERT_EQ(0.8765, layerProperties1.opacity);
880 ASSERT_EQ(89u, layerProperties1.sourceX);
881 ASSERT_EQ(6538u, layerProperties1.sourceY);
882 ASSERT_EQ(638u, layerProperties1.sourceWidth);
883 ASSERT_EQ(4u, layerProperties1.sourceHeight);
884 ASSERT_EQ(54u, layerProperties1.destX);
885 ASSERT_EQ(47u, layerProperties1.destY);
886 ASSERT_EQ(947u, layerProperties1.destWidth);
887 ASSERT_EQ(9u, layerProperties1.destHeight);
888 ASSERT_EQ(ILM_NINETY, layerProperties1.orientation);
889 ASSERT_TRUE( layerProperties1.visibility);
890 ASSERT_TRUE(layerProperties1.chromaKeyEnabled);
891 ASSERT_EQ(3u, layerProperties1.chromaKeyRed);
892 ASSERT_EQ(22u, layerProperties1.chromaKeyGreen);
893 ASSERT_EQ(111u, layerProperties1.chromaKeyBlue);
895 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOpacity(layer, 0.436));
896 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetSourceRectangle(layer, 784, 546, 235, 78));
897 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetDestinationRectangle(layer, 536, 5372, 3, 4316));
898 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetOrientation(layer, ILM_TWOHUNDREDSEVENTY));
899 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetVisibility(layer, false));
900 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetChromaKey(layer, NULL));
901 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
903 ilmLayerProperties layerProperties2;
904 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfLayer(layer, &layerProperties2));
905 ASSERT_EQ(0.436, layerProperties2.opacity);
906 ASSERT_EQ(784u, layerProperties2.sourceX);
907 ASSERT_EQ(546u, layerProperties2.sourceY);
908 ASSERT_EQ(235u, layerProperties2.sourceWidth);
909 ASSERT_EQ(78u, layerProperties2.sourceHeight);
910 ASSERT_EQ(536u, layerProperties2.destX);
911 ASSERT_EQ(5372u, layerProperties2.destY);
912 ASSERT_EQ(3u, layerProperties2.destWidth);
913 ASSERT_EQ(4316u, layerProperties2.destHeight);
914 ASSERT_EQ(ILM_TWOHUNDREDSEVENTY, layerProperties2.orientation);
915 ASSERT_FALSE(layerProperties2.visibility);
916 ASSERT_FALSE(layerProperties2.chromaKeyEnabled);
919 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
922 TEST_F(IlmCommandTest, ilm_getPropertiesOfSurface_InvalidInput) {
923 ilmSurfaceProperties surfaceProperties;
924 ASSERT_NE(ILM_SUCCESS, ilm_getPropertiesOfSurface(0xdeadbeef, &surfaceProperties));
927 TEST_F(IlmCommandTest, ilm_takeScreenshot) {
928 char* outputFile = "/tmp/test.bmp";
929 // make sure the file is not there before
930 FILE* f = fopen(outputFile, "r");
933 int result = remove(outputFile);
934 ASSERT_EQ(0, result);
937 ASSERT_EQ(ILM_SUCCESS, ilm_takeScreenshot(0, outputFile));
940 f = fopen(outputFile, "r");
941 ASSERT_TRUE(f!=NULL);
946 TEST_F(IlmCommandTest, ilm_takeScreenshot_InvalidInputs) {
947 char* outputFile = "/tmp/test.bmp";
948 // make sure the file is not there before
949 FILE* f = fopen(outputFile, "r");
952 ASSERT_EQ(0, remove(outputFile));
955 // try to dump an non-existing screen
956 ASSERT_NE(ILM_SUCCESS, ilm_takeScreenshot(0xdeadbeef, outputFile));
958 // make sure, no screen dump file was created for invalid screen
959 ASSERT_NE(0, remove(outputFile));
962 TEST_F(IlmCommandTest, ilm_takeLayerScreenshot) {
963 char* outputFile = "/tmp/test.bmp";
964 // make sure the file is not there before
965 FILE* f = fopen(outputFile, "r");
968 int result = remove(outputFile);
969 ASSERT_EQ(0, result);
972 t_ilm_layer layer = 0xbeef;
973 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 800, 480));
974 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
975 ASSERT_EQ(ILM_SUCCESS, ilm_takeLayerScreenshot(outputFile, layer));
978 f = fopen(outputFile, "r");
979 ASSERT_TRUE(f!=NULL);
982 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
985 TEST_F(IlmCommandTest, ilm_takeLayerScreenshot_InvalidInputs) {
986 char* outputFile = "/tmp/test.bmp";
987 // make sure the file is not there before
988 FILE* f = fopen(outputFile, "r");
991 ASSERT_EQ(0, remove(outputFile));
994 // try to dump an non-existing screen
995 ASSERT_NE(ILM_SUCCESS, ilm_takeLayerScreenshot(outputFile, 0xdeadbeef));
997 // make sure, no screen dump file was created for invalid screen
998 ASSERT_NE(0, remove(outputFile));
1001 TEST_F(IlmCommandTest, ilm_takeSurfaceScreenshot) {
1002 char* outputFile = "/tmp/test.bmp";
1003 // make sure the file is not there before
1004 FILE* f = fopen(outputFile, "r");
1007 int result = remove(outputFile);
1008 ASSERT_EQ(0, result);
1011 t_ilm_surface surface = 0xbeef;
1012 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface));
1013 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1014 ASSERT_EQ(ILM_SUCCESS, ilm_takeSurfaceScreenshot(outputFile, surface));
1017 f = fopen(outputFile, "r");
1018 ASSERT_TRUE(f!=NULL);
1021 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface));
1024 TEST_F(IlmCommandTest, ilm_takeSurfaceScreenshot_InvalidInputs) {
1025 char* outputFile = "/tmp/test.bmp";
1026 // make sure the file is not there before
1027 FILE* f = fopen(outputFile, "r");
1030 ASSERT_EQ(0, remove(outputFile));
1033 // try to dump an non-existing screen
1034 ASSERT_NE(ILM_SUCCESS, ilm_takeSurfaceScreenshot(outputFile, 0xdeadbeef));
1036 // make sure, no screen dump file was created for invalid screen
1037 ASSERT_NE(0, remove(outputFile));
1040 TEST_F(IlmCommandTest, ilm_surfaceGetPixelformat) {
1041 t_ilm_uint surface1=0;
1042 t_ilm_uint surface2=1;
1043 t_ilm_uint surface3=2;
1044 t_ilm_uint surface4=3;
1045 t_ilm_uint surface5=4;
1046 t_ilm_uint surface6=5;
1047 t_ilm_uint surface7=6;
1049 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_4444, &surface1));
1050 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_5551, &surface2));
1051 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_6661, &surface3));
1052 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface4));
1053 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGB_565, &surface5));
1054 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGB_888, &surface6));
1055 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_R_8, &surface7));
1056 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1058 ilmPixelFormat p1, p2, p3, p4, p5, p6, p7;
1060 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface1, &p1));
1061 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface2, &p2));
1062 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface3, &p3));
1063 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface4, &p4));
1064 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface5, &p5));
1065 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface6, &p6));
1066 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceGetPixelformat(surface7, &p7));
1068 ASSERT_EQ(ILM_PIXELFORMAT_RGBA_4444, p1);
1069 ASSERT_EQ(ILM_PIXELFORMAT_RGBA_5551, p2);
1070 ASSERT_EQ(ILM_PIXELFORMAT_RGBA_6661, p3);
1071 ASSERT_EQ(ILM_PIXELFORMAT_RGBA_8888, p4);
1072 ASSERT_EQ(ILM_PIXELFORMAT_RGB_565, p5);
1073 ASSERT_EQ(ILM_PIXELFORMAT_RGB_888, p6);
1074 ASSERT_EQ(ILM_PIXELFORMAT_R_8, p7);
1077 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
1078 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
1079 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface3));
1080 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface4));
1081 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface5));
1082 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface6));
1083 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface7));
1086 TEST_F(IlmCommandTest, ilm_keyboard_focus)
1092 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
1093 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
1095 ASSERT_EQ(ILM_SUCCESS, ilm_GetKeyboardFocusSurfaceId(&surface));
1096 EXPECT_EQ(0xFFFFFFFF, surface);
1098 ASSERT_EQ(ILM_SUCCESS, ilm_SetKeyboardFocusOn(surface1));
1099 ASSERT_EQ(ILM_SUCCESS, ilm_GetKeyboardFocusSurfaceId(&surface));
1100 EXPECT_EQ(surface1, surface);
1103 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
1104 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
1107 TEST_F(IlmCommandTest, ilm_input_event_acceptance) {
1111 ilmSurfaceProperties surfaceProperties;
1113 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface1));
1114 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 0, 0, ILM_PIXELFORMAT_RGBA_8888, &surface2));
1116 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface1, &surfaceProperties));
1117 EXPECT_EQ(ILM_INPUT_DEVICE_ALL, surfaceProperties.inputDevicesAcceptance);
1119 ASSERT_EQ(ILM_SUCCESS, ilm_UpdateInputEventAcceptanceOn(surface1, (ilmInputDevice) (ILM_INPUT_DEVICE_KEYBOARD | ILM_INPUT_DEVICE_POINTER), false));
1120 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1123 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfSurface(surface1, &surfaceProperties));
1124 EXPECT_FALSE(surfaceProperties.inputDevicesAcceptance & ILM_INPUT_DEVICE_KEYBOARD);
1125 EXPECT_FALSE(surfaceProperties.inputDevicesAcceptance & ILM_INPUT_DEVICE_POINTER);
1126 EXPECT_TRUE(surfaceProperties.inputDevicesAcceptance & ILM_INPUT_DEVICE_TOUCH);
1128 ASSERT_EQ(ILM_SUCCESS, ilm_SetKeyboardFocusOn(surface1));
1129 ASSERT_EQ(ILM_SUCCESS, ilm_GetKeyboardFocusSurfaceId(&surface));
1130 EXPECT_NE(surface1, surface);
1133 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface1));
1134 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(surface2));
1137 TEST_F(IlmCommandTest, SetGetOptimizationMode) {
1139 ilmOptimizationMode mode;
1140 ilmOptimizationMode retmode;
1142 id = ILM_OPT_MULTITEXTURE;
1143 mode = ILM_OPT_MODE_FORCE_OFF;
1144 ASSERT_EQ(ILM_SUCCESS, ilm_SetOptimizationMode(id, mode));
1145 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1146 ASSERT_EQ(ILM_SUCCESS, ilm_GetOptimizationMode(id, &retmode));
1147 ASSERT_EQ(mode, retmode);
1149 id = ILM_OPT_SKIP_CLEAR;
1150 mode = ILM_OPT_MODE_TOGGLE;
1151 ASSERT_EQ(ILM_SUCCESS, ilm_SetOptimizationMode(id, mode));
1152 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1153 ASSERT_EQ(ILM_SUCCESS, ilm_GetOptimizationMode(id, &retmode));
1154 ASSERT_EQ(mode, retmode);
1156 id = ILM_OPT_MULTITEXTURE;
1157 mode = ILM_OPT_MODE_HEURISTIC;
1158 ASSERT_EQ(ILM_SUCCESS, ilm_SetOptimizationMode(id, mode));
1159 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1160 ASSERT_EQ(ILM_SUCCESS, ilm_GetOptimizationMode(id, &retmode));
1161 ASSERT_EQ(mode, retmode);
1164 TEST_F(IlmCommandTest, ilm_getPropertiesOfScreen) {
1165 t_ilm_uint numberOfScreens = 0;
1166 t_ilm_uint* screenIDs = NULL;
1167 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&numberOfScreens, &screenIDs));
1168 ASSERT_TRUE(numberOfScreens>0);
1170 t_ilm_display screen = screenIDs[0];
1171 ilmScreenProperties screenProperties;
1173 t_ilm_layer layerIds[3] = {100, 200, 300};//t_ilm_layer layerIds[3] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1174 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(layerIds, 800, 480));
1175 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(layerIds + 1, 800, 480));
1176 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(layerIds + 2, 800, 480));
1178 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1180 ASSERT_EQ(ILM_SUCCESS, ilm_displaySetRenderOrder(screen, layerIds, 3));
1182 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1185 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfScreen(screen, &screenProperties));
1186 ASSERT_EQ(3, screenProperties.layerCount);
1187 ASSERT_EQ(layerIds[0], screenProperties.layerIds[0]);
1188 ASSERT_EQ(layerIds[1], screenProperties.layerIds[1]);
1189 ASSERT_EQ(layerIds[2], screenProperties.layerIds[2]);
1191 ASSERT_GT(screenProperties.screenWidth, 0u);
1192 ASSERT_GT(screenProperties.screenHeight, 0u);
1194 t_ilm_uint numberOfHardwareLayers;
1195 ASSERT_EQ(ILM_SUCCESS, ilm_getNumberOfHardwareLayers(screen, &numberOfHardwareLayers));
1196 ASSERT_EQ(numberOfHardwareLayers, screenProperties.harwareLayerCount);
1199 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layerIds[0]));
1200 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layerIds[1]));
1201 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layerIds[2]));
1204 TEST_F(IlmCommandTest, DisplaySetRenderOrder_growing) {
1205 //prepare needed layers
1206 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1207 t_ilm_uint layerCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1209 for (unsigned int i = 0; i < layerCount; ++i)
1211 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(renderOrder + i, 300, 300));
1212 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1215 t_ilm_display* screenIDs;
1216 t_ilm_uint screenCount;
1217 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1219 for(unsigned int i = 0; i < screenCount; ++i)
1221 t_ilm_display screen = screenIDs[i];
1222 ilmScreenProperties screenProps;
1224 //trying different render orders with increasing sizes
1225 for (unsigned int j = layerCount; j <= layerCount; --j) // note: using overflow here
1227 //put them from end to beginning, so that in each loop iteration the order of layers change
1228 ASSERT_EQ(ILM_SUCCESS, ilm_displaySetRenderOrder(screen, renderOrder + j, layerCount - j));
1229 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1230 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfScreen(screen, &screenProps));
1232 ASSERT_EQ(layerCount - j, screenProps.layerCount);
1233 for(unsigned int k = 0; k < layerCount - j; ++k)
1235 ASSERT_EQ(renderOrder[j + k], screenProps.layerIds[k]);
1241 for (unsigned int i = 0; i < layerCount; ++i)
1243 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(renderOrder[i]));
1247 TEST_F(IlmCommandTest, DisplaySetRenderOrder_shrinking) {
1248 //prepare needed layers
1249 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1250 t_ilm_uint layerCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1252 for (unsigned int i = 0; i < layerCount; ++i)
1254 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(renderOrder + i, 300, 300));
1255 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1258 t_ilm_display* screenIDs;
1259 t_ilm_uint screenCount;
1260 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1262 for(unsigned int i = 0; i < screenCount; ++i)
1264 t_ilm_display screen = screenIDs[i];
1265 ilmScreenProperties screenProps;
1267 //trying different render orders with decreasing sizes
1268 for (unsigned int j = 0; j <= layerCount; ++j)
1270 //put them from end to beginning, so that in each loop iteration the order of layers change
1271 ASSERT_EQ(ILM_SUCCESS, ilm_displaySetRenderOrder(screen, renderOrder + j, layerCount - j));
1272 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1273 ASSERT_EQ(ILM_SUCCESS, ilm_getPropertiesOfScreen(screen, &screenProps));
1275 ASSERT_EQ(layerCount - j, screenProps.layerCount);
1276 for(unsigned int k = 0; k < layerCount - j; ++k)
1278 ASSERT_EQ(renderOrder[j + k], screenProps.layerIds[k]);
1284 for (unsigned int i = 0; i < layerCount; ++i)
1286 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(renderOrder[i]));
1290 TEST_F(IlmCommandTest, LayerSetRenderOrder_growing) {
1291 //prepare needed layers and surfaces
1292 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1293 t_ilm_uint surfaceCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1295 for (unsigned int i = 0; i < surfaceCount; ++i)
1297 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 100, 100, ILM_PIXELFORMAT_RGBA_8888, renderOrder + i));
1298 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1301 t_ilm_layer layerIDs[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1302 t_ilm_uint layerCount = sizeof(layerIDs) / sizeof(layerIDs[0]);
1304 for (unsigned int i = 0; i < layerCount; ++i)
1306 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(layerIDs + i, 300, 300));
1307 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1310 t_ilm_display* screenIDs;
1311 t_ilm_uint screenCount;
1312 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1314 for(unsigned int i = 0; i < layerCount; ++i)
1316 t_ilm_layer layer = layerIDs[i];
1318 t_ilm_int layerSurfaceCount;
1319 t_ilm_surface* layerSurfaceIDs;
1321 //trying different render orders with increasing sizes
1322 for (unsigned int j = surfaceCount; j <= surfaceCount; --j) // note: using overflow here
1324 //put them from end to beginning, so that in each loop iteration the order of surafces change
1325 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder + j, surfaceCount - j));
1326 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1327 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &layerSurfaceCount, &layerSurfaceIDs));
1329 ASSERT_EQ(surfaceCount - j, layerSurfaceCount);
1330 for(unsigned int k = 0; k < surfaceCount - j; ++k)
1332 ASSERT_EQ(renderOrder[j + k], layerSurfaceIDs[k]);
1336 //set empty render order again
1337 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder, 0));
1338 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1342 for (unsigned int i = 0; i < surfaceCount; ++i)
1344 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(renderOrder[i]));
1346 for (unsigned int i = 0; i < layerCount; ++i)
1348 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layerIDs[i]));
1352 TEST_F(IlmCommandTest, LayerSetRenderOrder_shrinking) {
1353 //prepare needed layers and surfaces
1354 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1355 t_ilm_uint surfaceCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1357 for (unsigned int i = 0; i < surfaceCount; ++i)
1359 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 100, 100, ILM_PIXELFORMAT_RGBA_8888, renderOrder + i));
1360 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1363 t_ilm_layer layerIDs[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1364 t_ilm_uint layerCount = sizeof(layerIDs) / sizeof(layerIDs[0]);
1366 for (unsigned int i = 0; i < layerCount; ++i)
1368 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(layerIDs + i, 300, 300));
1369 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1372 t_ilm_display* screenIDs;
1373 t_ilm_uint screenCount;
1374 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1376 for(unsigned int i = 0; i < layerCount; ++i)
1378 t_ilm_layer layer = layerIDs[i];
1380 t_ilm_int layerSurfaceCount;
1381 t_ilm_surface* layerSurfaceIDs;
1383 //trying different render orders with decreasing sizes
1384 for (unsigned int j = 0; j <= layerCount; ++j)
1386 //put them from end to beginning, so that in each loop iteration the order of surafces change
1387 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder + j, surfaceCount - j));
1388 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1389 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &layerSurfaceCount, &layerSurfaceIDs));
1391 ASSERT_EQ(surfaceCount - j, layerSurfaceCount);
1392 for(unsigned int k = 0; k < surfaceCount - j; ++k)
1394 ASSERT_EQ(renderOrder[j + k], layerSurfaceIDs[k]);
1398 //set empty render order again
1399 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder, 0));
1400 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1404 for (unsigned int i = 0; i < surfaceCount; ++i)
1406 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(renderOrder[i]));
1408 for (unsigned int i = 0; i < layerCount; ++i)
1410 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layerIDs[i]));
1414 TEST_F(IlmCommandTest, LayerSetRenderOrder_duplicates) {
1415 //prepare needed layers and surfaces
1416 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1417 t_ilm_uint surfaceCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1419 for (unsigned int i = 0; i < surfaceCount; ++i)
1421 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 100, 100, ILM_PIXELFORMAT_RGBA_8888, renderOrder + i));
1422 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1425 t_ilm_surface duplicateRenderOrder[] = {renderOrder[0], renderOrder[1], renderOrder[0], renderOrder[1], renderOrder[0]};
1426 t_ilm_int duplicateSurfaceCount = sizeof(duplicateRenderOrder) / sizeof(duplicateRenderOrder[0]);
1429 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 300, 300));
1430 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1432 t_ilm_display* screenIDs;
1433 t_ilm_uint screenCount;
1434 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1436 t_ilm_int layerSurfaceCount;
1437 t_ilm_surface* layerSurfaceIDs;
1440 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, duplicateRenderOrder, duplicateSurfaceCount));
1441 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1442 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &layerSurfaceCount, &layerSurfaceIDs));
1444 ASSERT_EQ(2, layerSurfaceCount);
1447 for (unsigned int i = 0; i < surfaceCount; ++i)
1449 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(renderOrder[i]));
1451 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));
1454 TEST_F(IlmCommandTest, LayerSetRenderOrder_empty) {
1455 //prepare needed layers and surfaces
1456 t_ilm_layer renderOrder[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF};
1457 t_ilm_uint surfaceCount = sizeof(renderOrder) / sizeof(renderOrder[0]);
1459 for (unsigned int i = 0; i < surfaceCount; ++i)
1461 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceCreate((t_ilm_nativehandle)wlSurface, 100, 100, ILM_PIXELFORMAT_RGBA_8888, renderOrder + i));
1462 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1466 ASSERT_EQ(ILM_SUCCESS, ilm_layerCreateWithDimension(&layer, 300, 300));
1467 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1470 t_ilm_display* screenIDs;
1471 t_ilm_uint screenCount;
1472 ASSERT_EQ(ILM_SUCCESS, ilm_getScreenIDs(&screenCount, &screenIDs));
1474 t_ilm_int layerSurfaceCount;
1475 t_ilm_surface* layerSurfaceIDs;
1478 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder, surfaceCount));
1479 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1481 //set empty render order
1482 ASSERT_EQ(ILM_SUCCESS, ilm_layerSetRenderOrder(layer, renderOrder, 0));
1483 ASSERT_EQ(ILM_SUCCESS, ilm_commitChanges());
1484 ASSERT_EQ(ILM_SUCCESS, ilm_getSurfaceIDsOnLayer(layer, &layerSurfaceCount, &layerSurfaceIDs));
1486 ASSERT_EQ(0, layerSurfaceCount);
1489 for (unsigned int i = 0; i < surfaceCount; ++i)
1491 ASSERT_EQ(ILM_SUCCESS, ilm_surfaceRemove(renderOrder[i]));
1493 ASSERT_EQ(ILM_SUCCESS, ilm_layerRemove(layer));