• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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