tc: skip the test case when it does not have hal-tbm module
[platform/core/uifw/libtbm.git] / haltests / tc_tbm_surface_internal.cpp
index a3a27ec..6b64b17 100644 (file)
@@ -74,6 +74,9 @@ void TBMSurfaceInternal::TearDown()
        TBMBufmgr::TearDown();
 }
 
+static int memory_for_invalid_param;
+static tbm_surface_h invalid_surface = (tbm_surface_h)&memory_for_invalid_param;
+
 /* tbm_surface_h tbm_surface_internal_create_with_flags(int width, int height, int format, int flags) */
 TEST_F(TBMSurfaceInternal, SurfaceInternalCeateDestroyTest)
 {
@@ -128,15 +131,12 @@ TEST_F(TBMSurfaceInternal, SurfaceInteranlDestroyTwiceTest)
 /* tbm_surface_internal_is_valid(tbm_surface_h surface) */
 TEST_F(TBMSurfaceInternal, SurfaceInteranlIsValid)
 {
-       tbm_surface_h invalid_surface;
-
        EXPECT_TRUE(tbm_surface_internal_is_valid(surface));
        EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
 
        EXPECT_FALSE(tbm_surface_internal_is_valid(NULL));
        EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
 
-       invalid_surface = (tbm_surface_h)UT_TBM_INVALID_VALUE;
        EXPECT_FALSE(tbm_surface_internal_is_valid((tbm_surface_h)&invalid_surface));
        EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
 }
@@ -166,11 +166,10 @@ TEST_F(TBMSurfaceInternal, GetBoFailNULL)
 
 TEST_F(TBMSurfaceInternal, GetBoFailInvalideInput)
 {
-       tbm_surface_h invalide_surface = (tbm_surface_h)1;
        tbm_bo bo = NULL;
 
        /* invalid surface */
-       bo = tbm_surface_internal_get_bo(invalide_surface, 0);
+       bo = tbm_surface_internal_get_bo(invalid_surface, 0);
        EXPECT_EQ(nullptr, bo);
        EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
 
@@ -683,4 +682,80 @@ TEST_F(TBMSurfaceInternal, DeleteUserDataSuccess)
        EXPECT_EQ(tbm_data_free_is_called, 1);
        EXPECT_EQ(tbm_surface_internal_set_user_data(surface, key_ud, &tbm_data_free_is_called), 0);
        EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
-}
\ No newline at end of file
+}
+
+TEST_F(TBMSurfaceInternal, ExportNegative_InvalidParameters)
+{
+       tbm_error_e error = TBM_ERROR_NONE;
+
+       TBM_UT_SKIP_FLAG(!bufmgr->use_hal_tbm);
+
+       // invalid surface test
+       EXPECT_EQ(tbm_surface_internal_export(invalid_surface, &error), nullptr);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
+}
+
+TEST_F(TBMSurfaceInternal, ExportPositive_Success)
+{
+       tbm_error_e error = TBM_ERROR_NONE;
+       tbm_surface_buffer_data *buffer_data = NULL;
+       unsigned int i;
+
+       TBM_UT_SKIP_FLAG(!bufmgr->use_hal_tbm);
+
+       EXPECT_NE((buffer_data = tbm_surface_internal_export(surface, &error)), nullptr);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_NONE));
+
+       // verify the member variables of tbm_surface_buffer_data
+       if (buffer_data) {
+               EXPECT_GT(buffer_data->num_fds, 0);
+               for (i = 0; i < buffer_data->num_fds; i++) {
+                       EXPECT_GT(buffer_data->fds[i], -1);
+               }
+       }
+}
+
+TEST_F(TBMSurfaceInternal, ImportNegative_InvalidParameters)
+{
+       tbm_error_e error = TBM_ERROR_NONE;
+       tbm_surface_h surface1 = NULL;
+
+       TBM_UT_SKIP_FLAG(!bufmgr->use_hal_tbm);
+
+       EXPECT_EQ((surface1 = tbm_surface_internal_import(NULL, NULL, &error)), nullptr);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
+}
+
+TEST_F(TBMSurfaceInternal, ImportPositive_Success)
+{
+       tbm_error_e error = TBM_ERROR_NONE;
+       tbm_surface_buffer_data *buffer_data = NULL;
+       tbm_surface_info_s surface_info;
+       tbm_surface_h surface1 = NULL;
+       unsigned int i;
+
+       TBM_UT_SKIP_FLAG(!bufmgr->use_hal_tbm);
+
+       // export surface_data
+       EXPECT_NE((buffer_data = tbm_surface_internal_export(surface, &error)), nullptr);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_NONE));
+
+       // verify the member variables of tbm_surface_buffer_data
+       if (buffer_data) {
+               EXPECT_GT(buffer_data->num_fds, 0);
+               for (i = 0; i < buffer_data->num_fds; i++) {
+                       EXPECT_GT(buffer_data->fds[i], -1);
+               }
+       }
+
+       // get surface_info
+       error = (tbm_error_e)tbm_surface_get_info(surface, &surface_info);
+       EXPECT_EQ(TBM_SURFACE_ERROR_NONE, error);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_NONE));
+
+       // import surface_data
+       EXPECT_NE((surface1 = tbm_surface_internal_import(&surface_info, buffer_data, &error)), nullptr);
+       EXPECT_STREQ(tbm_error_str(error), tbm_error_str(TBM_ERROR_NONE));
+
+       tbm_surface_internal_destroy(surface1);
+}