Skip to content

Commit 5a6f178

Browse files
committed
Unit tests for escape char support in OptionStringContainer::from_string
1 parent 2eecec6 commit 5a6f178

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

test/libdnf5/conf/test_option.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,41 @@ void OptionTest::test_options_string_list_custom_delimiters() {
494494
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option3.get_value());
495495
}
496496

497+
void OptionTest::test_options_string_list_escape() {
498+
OptionStringList option("Dfirstx\\,DsecondX");
499+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx,DsecondX"}), option.get_value());
500+
501+
option.set(Option::Priority::RUNTIME, "Dfirstx\\ DsecondX");
502+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx DsecondX"}), option.get_value());
503+
504+
option.set(Option::Priority::RUNTIME, "\\ , DsecondX");
505+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{" ", "DsecondX"}), option.get_value());
506+
507+
option.set(Option::Priority::RUNTIME, "asdasd,\\ ,DsecondX");
508+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", " ", "DsecondX"}), option.get_value());
509+
510+
option.set(Option::Priority::RUNTIME, "asdasd,\\,,DsecondX");
511+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", ",", "DsecondX"}), option.get_value());
512+
513+
option.set(Option::Priority::RUNTIME, "\\ asdasd\\,\\ , DsecondX");
514+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{" asdasd, ", "DsecondX"}), option.get_value());
515+
516+
option.set(Option::Priority::RUNTIME, " \\ asdasd\\,\\ DsecondX");
517+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{" asdasd, ", "DsecondX"}), option.get_value());
518+
}
519+
520+
void OptionTest::test_options_string_list_custom_delimiters_escape() {
521+
OptionStringList option3((std::vector<std::string>){"dval1X", "dval2X"}, "", true, ";");
522+
option3.set(Option::Priority::RUNTIME, " aa\\; b; ccc,; \n");
523+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"aa; b", "ccc,"}), option3.get_value());
524+
525+
option3.set(Option::Priority::RUNTIME, " \\ aa\\; b ; ccc, ; \n");
526+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{" aa; b", "ccc,"}), option3.get_value());
527+
528+
option3.set(Option::Priority::RUNTIME, " \\ aa\\; b \\ ; ccc,; \n");
529+
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{" aa; b ", "ccc,"}), option3.get_value());
530+
}
531+
497532
void OptionTest::test_options_string_set() {
498533
const OptionStringSet::ValueType initial{"x", "y", "z"};
499534
OptionStringSet option(initial);

test/libdnf5/conf/test_option.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class OptionTest : public CppUnit::TestCase {
3737
CPPUNIT_TEST(test_options_string_list);
3838
CPPUNIT_TEST(test_options_string_list_delimiters);
3939
CPPUNIT_TEST(test_options_string_list_custom_delimiters);
40+
CPPUNIT_TEST(test_options_string_list_escape);
41+
CPPUNIT_TEST(test_options_string_list_custom_delimiters_escape);
4042
CPPUNIT_TEST(test_options_string_set);
4143
CPPUNIT_TEST(test_options_list_add);
4244
CPPUNIT_TEST(test_options_list_add_item);
@@ -54,6 +56,8 @@ class OptionTest : public CppUnit::TestCase {
5456
void test_options_string_list();
5557
void test_options_string_list_delimiters();
5658
void test_options_string_list_custom_delimiters();
59+
void test_options_string_list_escape();
60+
void test_options_string_list_custom_delimiters_escape();
5761
void test_options_string_set();
5862
void test_options_list_add();
5963
void test_options_list_add_item();

0 commit comments

Comments
 (0)