1 /***************************************************************************
2 *
3 * Copyright 2010-2014 BMW Car IT GmbH
4 * Copyright (C) 2012 DENSO CORPORATION and Robert Bosch Car Multimedia Gmbh
5 * Copyright (C) 2016 Advanced Driver Information Technology Joint Venture GmbH
6 *
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 ****************************************************************************/
21
22 #include <gtest/gtest.h>
23 #include <stdio.h>
24
25 #include <unistd.h>
26 #include <sys/types.h>
27
28 #include <iostream>
29
30 #include "TestBase.h"
31
32 extern "C" {
33 #include "ilm_control.h"
34 #include "ilm_input.h"
35 }
36
37 template <typename T>
contains(T const * actual,size_t as,T expected)38 bool contains(T const *actual, size_t as, T expected)
39 {
40 for (unsigned i = 0; i < as; i++)
41 if (actual[i] == expected)
42 return true;
43 return false;
44 }
45
46 class IlmNullPointerTest : public TestBase, public ::testing::Test {
47 public:
SetUp()48 void SetUp()
49 {
50 ASSERT_EQ(ILM_SUCCESS, ilm_initWithNativedisplay((t_ilm_nativedisplay)wlDisplay));
51 }
52
TearDown()53 void TearDown()
54 {
55 //print_lmc_get_scene();
56 t_ilm_layer* layers = NULL;
57 t_ilm_int numLayer=0;
58 EXPECT_EQ(ILM_SUCCESS, ilm_getLayerIDs(&numLayer, &layers));
59 for (t_ilm_int i=0; i<numLayer; i++)
60 {
61 EXPECT_EQ(ILM_SUCCESS, ilm_layerRemove(layers[i]));
62 };
63 free(layers);
64
65 EXPECT_EQ(ILM_SUCCESS, ilm_commitChanges());
66 EXPECT_EQ(ILM_SUCCESS, ilm_destroy());
67 }
68 };
69
TEST_F(IlmNullPointerTest,ilm_set_input_focus_null_pointer)70 TEST_F(IlmNullPointerTest, ilm_set_input_focus_null_pointer) {
71 ASSERT_EQ(ILM_FAILED, ilm_setInputFocus(NULL, 5, ILM_INPUT_DEVICE_KEYBOARD, ILM_TRUE));
72 }
73
TEST_F(IlmNullPointerTest,ilm_get_input_focus_null_pointer)74 TEST_F(IlmNullPointerTest, ilm_get_input_focus_null_pointer) {
75 const uint32_t surfaceCount = 4;
76 t_ilm_surface surfaces[] = {1010, 2020, 3030, 4040};
77 struct ivi_surface* ivi_surfaces[surfaceCount];
78 t_ilm_surface *surfaceIDs;
79 ilmInputDevice *bitmasks;
80 t_ilm_uint num_ids;
81
82 for (unsigned int i = 0; i < surfaceCount; i++) {
83 ivi_surfaces[i] = (struct ivi_surface*) ivi_application_surface_create(iviApp, surfaces[i], wlSurfaces[i]);
84 }
85
86 EXPECT_EQ(ILM_FAILED, ilm_getInputFocus(0, &bitmasks, &num_ids));
87
88 EXPECT_EQ(ILM_FAILED, ilm_getInputFocus(&surfaceIDs, NULL, &num_ids));
89
90 EXPECT_EQ(ILM_FAILED, ilm_getInputFocus(&surfaceIDs, &bitmasks, NULL));
91
92 for (unsigned int i = 0; i < surfaceCount; i++) {
93 ivi_surface_destroy(ivi_surfaces[i]);
94 }
95 }
96
TEST_F(IlmNullPointerTest,ilm_set_input_event_acceptance_null_pointer)97 TEST_F(IlmNullPointerTest, ilm_set_input_event_acceptance_null_pointer) {
98 t_ilm_surface surface1 = 1010;
99 char const *set_seats = "default";
100 t_ilm_uint set_seats_count = 1;
101
102 struct ivi_surface* ivi_surface = (struct ivi_surface*)
103 ivi_application_surface_create(iviApp, surface1, wlSurfaces[0]);
104
105 EXPECT_EQ(ILM_FAILED, ilm_setInputAcceptanceOn(surface1, set_seats_count, NULL));
106
107 EXPECT_EQ(ILM_FAILED, ilm_setInputAcceptanceOn(0, set_seats_count, (t_ilm_string*)&set_seats));
108
109 ivi_surface_destroy(ivi_surface);
110 }
111
TEST_F(IlmNullPointerTest,ilm_get_input_event_acceptance_null_pointer)112 TEST_F(IlmNullPointerTest, ilm_get_input_event_acceptance_null_pointer) {
113 t_ilm_surface surface1 = 1010;
114 t_ilm_uint num_seats = 0;
115 t_ilm_string *seats = NULL;
116
117 struct ivi_surface* ivi_surface = (struct ivi_surface*)
118 ivi_application_surface_create(iviApp, surface1, wlSurfaces[0]);
119
120 EXPECT_EQ(ILM_FAILED, ilm_getInputAcceptanceOn(0, &num_seats,
121 NULL));
122
123 EXPECT_EQ(ILM_FAILED, ilm_getInputAcceptanceOn(surface1, NULL,
124 &seats));
125
126 ivi_surface_destroy(ivi_surface);
127 }
128
TEST_F(IlmNullPointerTest,ilm_get_input_devices_null_pointer)129 TEST_F(IlmNullPointerTest, ilm_get_input_devices_null_pointer) {
130 t_ilm_surface surface1 = 1010;
131 t_ilm_string *seats = NULL;
132 t_ilm_uint num_seats = 0;
133 ilmInputDevice bitmask = ILM_INPUT_DEVICE_POINTER;
134
135 struct ivi_surface* ivi_surface = (struct ivi_surface*)
136 ivi_application_surface_create(iviApp, surface1, wlSurfaces[0]);
137
138 EXPECT_EQ(ILM_FAILED, ilm_getInputDevices(bitmask, &num_seats,
139 NULL));
140
141 EXPECT_EQ(ILM_FAILED, ilm_getInputDevices(bitmask, NULL,
142 &seats));
143
144 ivi_surface_destroy(ivi_surface);
145 }
146
TEST_F(IlmNullPointerTest,ilm_get_input_device_capabilities_null_pointer)147 TEST_F(IlmNullPointerTest, ilm_get_input_device_capabilities_null_pointer) {
148 char const *seats = "default";
149 ilmInputDevice bitmask;
150
151 EXPECT_EQ(ILM_FAILED, ilm_getInputDeviceCapabilities(NULL, &bitmask));
152 EXPECT_EQ(ILM_FAILED, ilm_getInputDeviceCapabilities((t_ilm_string)seats, NULL));
153 }
154