Change LangAltValue::read() tests to unitTests

Removed previous Python tests.
main
postscript-dev 4 years ago
parent 282d1d6995
commit 207a0d65c9

@ -1,160 +0,0 @@
# -*- coding: utf-8 -*-
import system_tests
@system_tests.CopyFiles("$data_path/exiv2-empty.jpg")
class CheckXmpLangAltValues(metaclass=system_tests.CaseMeta):
url = "https://github.com/Exiv2/exiv2/issues/1481"
# Python unittest is filtering out empty pairs of "" and flags up an error if
# a mismatched number of quotes is used inside the commands[] (see
# https://docs.python.org/3/library/shlex.html#parsing-rules).
#
# This means that some of the tests in the github issue cannot be run.
langAltValue = [
# 1. No language value
"""lang= test1-1""",
"""lang=\" test1-2""",
# 2. Empty language value
"""lang=\"\" test2""",
# 3. Mismatched and/or incorrect positioning of quotation marks
"""lang=\"\"test3-1""",
"""lang=\"test3-2""",
"""lang=\"en-UK test3-3""",
"""lang=en-US\" test3-4""",
"""lang=test3-5\"""",
"""lang=test3-6\"\"""",
# 4. Invalid characters in language part
"""lang=en-UK- test4-1""",
"""lang=en=UK test4-2""",
]
filename = system_tests.path("$data_path/exiv2-empty_copy.jpg")
commands = [
# 1. No language value
"""$exiv2 -M"set Xmp.dc.title """ + langAltValue[0] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[1] + """" $filename""",
"""$exiv2 -px $filename""",
# 2. Empty language value
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[2] + """" $filename""",
# """$exiv2 -px $filename""",
# 3. Mismatched and/or incorrect positioning of quotation marks
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[3] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[4] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[5] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[6] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[7] + """" $filename""",
# """$exiv2 -M"set Xmp.dc.title """ + langAltValue[8] + """" $filename""",
# """$exiv2 -px $filename""",
# 4. Invalid characters in language part
"""$exiv2 -M"set Xmp.dc.title """ + langAltValue[9] + """" $filename""",
"""$exiv2 -M"set Xmp.dc.title """ + langAltValue[10] + """" $filename""",
"""$exiv2 -px $filename"""
]
stdout = [
# 1. No language value
"",
# "",
"",
# 2. Empty language value
# "",
# "",
# 3. Mismatched and/or incorrect positioning of quotation marks
# "",
# "",
# "",
# "",
# "",
# "",
# "",
# 4. Invalid characters in language part
"",
"",
""
]
stderr = [
# 1. No language value
"""$exiv2_modify_exception_message $filename:
$kerInvalidLangAltValue `""" + langAltValue[0] + """'
""",
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[1] + """'
# """,
"",
# 2. Empty language value
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[2] + """'
# """,
# "",
# 3. Mismatched and/or incorrect positioning of quotation marks
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[3] + """'
# """,
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[4] + """'
# """,
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[5] + """'
# """,
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[6] + """'
# """,
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[7] + """'
# """,
# """$exiv2_modify_exception_message $filename:
# $kerInvalidLangAltValue `""" + langAltValue[8] + """'
# """,
# "",
# 4. Invalid characters in language part
"""$exiv2_modify_exception_message $filename:
$kerInvalidLangAltValue `""" + langAltValue[9] + """'
""",
"""$exiv2_modify_exception_message $filename:
$kerInvalidLangAltValue `""" + langAltValue[10] + """'
""",
""
]
retval = [
# 1. No language value
1,
# 1,
0,
# 2. Empty language value
# 1,
# 0,
# 3. Mismatched and/or incorrect positioning of quotation marks
# 1,
# 1,
# 1,
# 1,
# 1,
# 1,
# 0,
# 4. Invalid characters in language part
1,
1,
0
]

@ -42,10 +42,8 @@ kerInvalidTypeValue: invalid type in tiff structure
kerNotAJpeg : This does not look like a JPEG image
kerNoImageInInputData: Input data does not contain a valid image
kerFileContainsUnknownImageType: The file contains data of an unknown image type
kerInvalidLangAltValue: Invalid LangAlt value
addition_overflow_message: Overflow in addition
exiv2_exception_message: Exiv2 exception in print action for file
exiv2_modify_exception_message: Exiv2 exception in modify action for file
exiv2_overflow_exception_message: std::overflow_error exception in print action for file
exception_in_extract: Exiv2 exception in extract action for file
uncaught_exception: Uncaught exception:

@ -33,6 +33,7 @@ add_executable(unit_tests
test_slice.cpp
test_tiffheader.cpp
test_types.cpp
test_LangAltValueRead.cpp
gtestwrapper.h
${unit_tests_exiv2lib_SOURCES}
)

@ -0,0 +1,199 @@
#include <exiv2/exiv2.hpp>
#include "gtestwrapper.h"
using namespace Exiv2;
// The tests corrispond to those in issue https://github.com/Exiv2/exiv2/issues/1481
// 1. No language value
TEST(LangAltValueReadTest, noLangugeValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang= test1-1";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, quoteThenNoLangugeValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=\" test1-2";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
// 2. Empty language value
TEST(LangAltValueReadTest, emptyDoubleQuotesLanguageValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=\"\" test2";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
// 3. Mismatched and/or incorrect positioning of quotation marks
TEST(LangAltValueReadTest, emptyDoubleQuotesLanguageValNoSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=\"\"test3-1";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, oneDoubleQuotesLanguageValNoSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=\"test3-2";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, oneDoubleQuotesLanguageValBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=\"en-UK test3-3";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, languageValOneDoubleQuotesBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=en-US\" test3-4";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, languageValOneDoubleQuotesNoSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=test3-5\"";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, languageValTwoDoubleQuotesNoSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=test3-6\"\"";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
// 4. Invalid characters in language part
TEST(LangAltValueReadTest, languageValExtraHyphenBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=en-UK- test4-1";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
TEST(LangAltValueReadTest, languageValWithInvalidCharBeforeSpace)
{
XmpParser::initialize();
::atexit(XmpParser::terminate);
Exiv2::XmpData xmpData;
try {
xmpData["Xmp.dc.title"] = "lang=en=UK test4-2";
}
catch (AnyError& e) {
ASSERT_EQ(e.code(),Exiv2::kerInvalidLangAltValue);
}
catch (...) {
ASSERT_TRUE(false);
}
}
Loading…
Cancel
Save