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
BuildRequires: pkgconfig(gstreamer-app-1.0)
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(ncurses)
-BuildRequires: pkgconfig(check)
BuildRequires: pkgconfig(gtest)
%endif
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
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)
+++ /dev/null
-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})
+++ /dev/null
-#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
--- /dev/null
+#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