Fix invalid qrcode attribute 05/291905/1
authorKwanghoon Son <k.son@samsung.com>
Tue, 18 Apr 2023 08:05:07 +0000 (17:05 +0900)
committerKwanghoon Son <k.son@samsung.com>
Tue, 25 Apr 2023 02:39:50 +0000 (11:39 +0900)
mv_barcode_generate_attr_shape_e for
MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT should failed to generate.

Change-Id: Iacccd1f31f5d6be572562abb15619cb5a8068d06
Cherry-pick-from : 337e7ecc55e25dd54e102df778fbd77bb38e41e6
Signed-off-by: Kwanghoon Son <k.son@samsung.com>
mv_barcode/barcode_generator/src/BarcodeGenerator.cpp
test/testsuites/barcode/test_designqr.cpp

index b86a50d2aa52682f67ea8015c4ce1ff06d71f278..aaad942b0a9857a8c61833f16cf857d95dae3fb0 100644 (file)
@@ -114,12 +114,15 @@ int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodin
 
                if (ret == MEDIA_VISION_ERROR_NONE) {
                        switch (value) {
+                       case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
+                               break;
                        case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
                                symbol->output_options |= BARCODE_DATA_CIRCLE;
                                break;
 
                        default:
-                               break;
+                               LOGE("Invalid data shape");
+                               return BARCODE_WARNING_INVALID_OPTION;
                        }
                }
 
@@ -127,6 +130,8 @@ int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodin
 
                if (ret == MEDIA_VISION_ERROR_NONE) {
                        switch (value) {
+                       case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
+                               break;
                        case MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT:
                                symbol->output_options |= BARCODE_FINDER_ROUNDRECT;
                                break;
@@ -135,7 +140,8 @@ int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodin
                                break;
 
                        default:
-                               break;
+                               LOGE("Invalid finder shape");
+                               return BARCODE_WARNING_INVALID_OPTION;
                        }
                }
        }
index 67f734557a385a5f6ec0c75c245c3419cbb7bbf1..748e6539e9b7302597ae36d57c8c013b21984c4a 100644 (file)
@@ -83,3 +83,19 @@ INSTANTIATE_TEST_CASE_P(
                                                                 MV_BARCODE_GENERATE_ATTR_SHAPE_RECT, MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT,
                                                                 MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE }),
                                                 testing::ValuesIn(vector<string> { "", IMAGE1_PATH })));
+
+TEST(DesignQR, NegativeShape)
+{
+       mv_engine_config_h engine_cfg = NULL;
+       int qr_version, img_size;
+
+       ASSERT_EQ(mv_create_engine_config(&engine_cfg), MEDIA_VISION_ERROR_NONE);
+       ASSERT_EQ(mv_engine_config_set_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_DATA_SHAPE,
+                                                                                                MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT),
+                         MEDIA_VISION_ERROR_NONE);
+       ASSERT_EQ(mv_barcode_generate_image(engine_cfg, "http://MEDIA_VISION_ERROR_INVALID_PARAMETER", 200, 200,
+                                                                               MV_BARCODE_QR, MV_BARCODE_QR_MODE_UTF8, MV_BARCODE_QR_ECC_LOW, 5,
+                                                                               "/tmp/this_not_saved", MV_BARCODE_IMAGE_FORMAT_PNG),
+                         MEDIA_VISION_ERROR_INVALID_PARAMETER);
+       ASSERT_EQ(mv_destroy_engine_config(engine_cfg), MEDIA_VISION_ERROR_NONE);
+}