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;
+
+ // 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;
+
+ 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;
+
+ 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;
+
+ // 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);
+}