test: Replace barcode libcheck to gtest 63/262563/3
authorKwang Son <k.son@samsung.com>
Fri, 13 Aug 2021 08:10:33 +0000 (04:10 -0400)
committerKwang Son <k.son@samsung.com>
Fri, 13 Aug 2021 10:10:59 +0000 (06:10 -0400)
Change-Id: I22339de3c880f3958ee8e049a29d902846fc0acf
Signed-off-by: Kwang Son <k.son@samsung.com>
packaging/capi-media-vision.spec
test/CMakeLists.txt
test/testsuites/CMakeLists.txt
test/testsuites/barcode/CMakeLists.txt [deleted file]
test/testsuites/barcode/test_barcode.c [deleted file]
test/testsuites/barcode/test_barcode.cpp [new file with mode: 0644]

index 805d60f..18e1793 100644 (file)
@@ -1,6 +1,6 @@
 Name:        capi-media-vision
 Summary:     Media Vision library for Tizen Native API
-Version:     0.8.4
+Version:     0.8.5
 Release:     0
 Group:       Multimedia/Framework
 License:     Apache-2.0 and BSD-3-Clause
@@ -28,7 +28,6 @@ BuildRequires: pkgconfig(gstreamer-base-1.0)
 BuildRequires: pkgconfig(gstreamer-app-1.0)
 BuildRequires: pkgconfig(libtzplatform-config)
 BuildRequires: pkgconfig(ncurses)
-BuildRequires: pkgconfig(check)
 BuildRequires: pkgconfig(gtest)
 %endif
 
index 57768b0..43c7e23 100644 (file)
@@ -6,8 +6,9 @@ cmake_minimum_required(VERSION 2.6)
 
 pkg_check_modules(${PROJECT_NAME}_DEP REQUIRED gtest gtest_main)
 add_executable(${PROJECT_NAME}
+    testsuites/barcode/test_barcode.cpp
     testsuites/machine_learning/inference/test_inference_helper.cpp
     testsuites/machine_learning/inference/test_image_classification.cpp
 )
-target_link_libraries(${PROJECT_NAME} ${${PROJECT_NAME}_DEP_LIBRARIES} mv_inference mv_image_helper)
+target_link_libraries(${PROJECT_NAME} ${${PROJECT_NAME}_DEP_LIBRARIES} mv_inference mv_image_helper mv_barcode_detector)
 install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
\ No newline at end of file
index bc1711d..bc195d7 100644 (file)
@@ -6,7 +6,6 @@ set(INC_VIDEO_HELPER "${PROJECT_SOURCE_DIR}/common/video_helper")
 set(INC_TS_COMMON "${PROJECT_SOURCE_DIR}/common/testsuite_common")
 
 add_subdirectory(${PROJECT_SOURCE_DIR}/common)
-add_subdirectory(${PROJECT_SOURCE_DIR}/barcode)
 add_subdirectory(${PROJECT_SOURCE_DIR}/face)
 add_subdirectory(${PROJECT_SOURCE_DIR}/image)
 add_subdirectory(${PROJECT_SOURCE_DIR}/surveillance)
diff --git a/test/testsuites/barcode/CMakeLists.txt b/test/testsuites/barcode/CMakeLists.txt
deleted file mode 100644 (file)
index fb86885..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-project(mv_barcode_test_suite)
-cmake_minimum_required(VERSION 2.6)
-
-pkg_check_modules(${PROJECT_NAME}_DEP REQUIRED ncurses capi-system-info
-dlog check)
-
-add_executable(${PROJECT_NAME} test_barcode.c)
-target_link_libraries(${PROJECT_NAME} ${MV_BARCODE_DETECTOR_LIB_NAME}
-${MV_BARCODE_GENERATOR_LIB_NAME} ${${PROJECT_NAME}_DEP_LIBRARIES}
-avcodec avformat avutil swscale mv_image_helper
-)
-
-install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
-install(FILES mv_barcode_test_suite_auto PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/test/testsuites/barcode/test_barcode.c b/test/testsuites/barcode/test_barcode.c
deleted file mode 100644 (file)
index a34fdbd..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <stdlib.h>
-#include <check.h>
-#include <mv_common.h>
-#include <mv_barcode.h>
-
-mv_engine_config_h mv_engine_config;
-
-void setup(void)
-{
-       ck_assert_int_eq(mv_create_engine_config(&mv_engine_config),
-                                        MEDIA_VISION_ERROR_NONE);
-}
-void teardown(void)
-{
-       ck_assert_int_eq(mv_destroy_engine_config(mv_engine_config),
-                                        MEDIA_VISION_ERROR_NONE);
-}
-START_TEST(barcode_generate_num)
-{
-       ck_assert_int_eq(mv_engine_config_set_string_attribute(
-                                                        mv_engine_config,
-                                                        MV_BARCODE_GENERATE_ATTR_COLOR_FRONT, "000000"),
-                                        MEDIA_VISION_ERROR_NONE);
-       ck_assert_int_eq(mv_engine_config_set_string_attribute(
-                                                        mv_engine_config,
-                                                        MV_BARCODE_GENERATE_ATTR_COLOR_BACK, "ffffff"),
-                                        MEDIA_VISION_ERROR_NONE);
-       ck_assert_int_eq(mv_barcode_generate_image(
-                                                        mv_engine_config, "11234", 200, 200, MV_BARCODE_QR,
-                                                        MV_BARCODE_QR_MODE_NUMERIC, MV_BARCODE_QR_ECC_HIGH,
-                                                        20, "/tmp/mvtest/gen.png", MV_BARCODE_IMAGE_FORMAT_PNG),
-                                        MEDIA_VISION_ERROR_NONE);
-}
-END_TEST
-START_TEST(barcode_generate_utf8)
-{
-       ck_assert_int_eq(mv_engine_config_set_string_attribute(
-                                                        mv_engine_config,
-                                                        MV_BARCODE_GENERATE_ATTR_COLOR_FRONT, "000000"),
-                                        MEDIA_VISION_ERROR_NONE);
-       ck_assert_int_eq(mv_engine_config_set_string_attribute(
-                                                        mv_engine_config,
-                                                        MV_BARCODE_GENERATE_ATTR_COLOR_BACK, "ffffff"),
-                                        MEDIA_VISION_ERROR_NONE);
-       ck_assert_int_eq(mv_barcode_generate_image(
-                                                        mv_engine_config, "qr_test1", 200, 200,
-                                                        MV_BARCODE_QR, MV_BARCODE_QR_MODE_UTF8,
-                                                        MV_BARCODE_QR_ECC_HIGH, 20, "/tmp/mvtest/gen2.png",
-                                                        MV_BARCODE_IMAGE_FORMAT_PNG),
-                                        MEDIA_VISION_ERROR_NONE);
-}
-END_TEST
-Suite *barcode_suite(void)
-{
-       Suite *s = suite_create("Barcode");
-       TCase *tc_core = tcase_create("Core");
-       tcase_add_checked_fixture(tc_core, setup, teardown);
-       tcase_add_test(tc_core, barcode_generate_num);
-       tcase_add_test(tc_core, barcode_generate_utf8);
-       suite_add_tcase(s, tc_core);
-       return s;
-}
-int main()
-{
-       Suite *s = barcode_suite();
-       SRunner *sr = srunner_create(s);
-       srunner_run_all(sr, CK_NORMAL);
-       int number_failed = srunner_ntests_failed(sr);
-       srunner_free(sr);
-       return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
\ No newline at end of file
diff --git a/test/testsuites/barcode/test_barcode.cpp b/test/testsuites/barcode/test_barcode.cpp
new file mode 100644 (file)
index 0000000..a4247dc
--- /dev/null
@@ -0,0 +1,105 @@
+#include <gtest/gtest.h>
+#include <json-glib/json-glib.h>
+#include <mv_barcode.h>
+#include <string>
+#include <tuple>
+#include <vector>
+#include <ImageHelper.h>
+
+using namespace std;
+using TestParams = tuple<string, string>;
+
+#define BARCODE_IMG_PREFIX \
+       MV_CONFIG_PATH         \
+       "/res/img/"
+
+#define BARCODE_JSON \
+       MV_CONFIG_PATH   \
+       "/res/media-vision-barcodes.json"
+
+void barcode_detected_cb(mv_source_h source, mv_engine_config_h engine_cfg,
+                                                const mv_quadrangle_s *barcodes_locations,
+                                                const char *messages[], const mv_barcode_type_e *types,
+                                                int number_of_barcodes, void *user_data)
+{
+       EXPECT_EQ(number_of_barcodes, 1);
+       EXPECT_STREQ(messages[0], (const char *) user_data);
+}
+
+vector<TestParams> ReadDetPositive1()
+{
+       vector<TestParams> rv;
+       GError *error = NULL;
+
+       JsonParser *parser = json_parser_new();
+       json_parser_load_from_file(parser, BARCODE_JSON, &error);
+       EXPECT_TRUE(error == NULL);
+
+       JsonReader *reader = json_reader_new(json_parser_get_root(parser));
+
+       json_reader_read_member(reader, "det_positive1");
+       for (gint i = 0; i < json_reader_count_elements(reader); i++) {
+               json_reader_read_element(reader, i);
+
+               json_reader_read_member(reader, "image_name");
+               std::string image_name = json_reader_get_string_value(reader);
+               json_reader_end_member(reader);
+
+               json_reader_read_member(reader, "message");
+               std::string message = json_reader_get_string_value(reader);
+               json_reader_end_member(reader);
+
+               rv.push_back(make_tuple(image_name, message));
+
+               json_reader_end_element(reader);
+       }
+       json_reader_end_member(reader);
+
+       g_object_unref(reader);
+       g_object_unref(parser);
+
+       return rv;
+}
+
+class TestBarcode : public testing::TestWithParam<TestParams>
+{
+public:
+       TestBarcode()
+       {
+               EXPECT_EQ(mv_create_engine_config(&engine_cfg),
+                                 MEDIA_VISION_ERROR_NONE);
+               EXPECT_EQ(mv_create_source(&mv_source), MEDIA_VISION_ERROR_NONE);
+       }
+       ~TestBarcode()
+       {
+               EXPECT_EQ(mv_destroy_source(mv_source), MEDIA_VISION_ERROR_NONE);
+               EXPECT_EQ(mv_destroy_engine_config(engine_cfg),
+                                 MEDIA_VISION_ERROR_NONE);
+       }
+       mv_engine_config_h engine_cfg;
+       mv_source_h mv_source;
+};
+
+TEST_P(TestBarcode, Detection)
+{
+       auto image_name = BARCODE_IMG_PREFIX + get<0>(GetParam());
+       auto message = get<1>(GetParam());
+
+       EXPECT_EQ(MediaVision::Common::ImageHelper::loadImageToSource(
+                                         image_name.c_str(), mv_source),
+                         MEDIA_VISION_ERROR_NONE);
+
+       mv_rectangle_s roi = { { 0, 0 }, 0, 0 };
+       mv_source_get_width(mv_source, (unsigned int *) &(roi.width));
+       mv_source_get_width(mv_source, (unsigned int *) &(roi.height));
+       mv_engine_config_set_int_attribute(engine_cfg,
+                                                                          MV_BARCODE_DETECT_ATTR_TARGET,
+                                                                          MV_BARCODE_DETECT_ATTR_TARGET_ALL);
+
+       EXPECT_EQ(mv_barcode_detect(mv_source, engine_cfg, roi, barcode_detected_cb,
+                                                               (void *) message.c_str()),
+                         MEDIA_VISION_ERROR_NONE);
+}
+
+INSTANTIATE_TEST_CASE_P(GeneralAndSpecial, TestBarcode,
+                                               testing::ValuesIn(ReadDetPositive1()));
\ No newline at end of file