@@ -494,6 +494,29 @@ 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+
514+ void OptionTest::test_options_string_list_custom_delimiters_escape () {
515+ OptionStringList option3 ((std::vector<std::string>){" dval1X" , " dval2X" }, " " , true , " ;" );
516+ option3.set (Option::Priority::RUNTIME, " aa\\ ; b; ccc,; \n " );
517+ CPPUNIT_ASSERT_EQUAL ((std::vector<std::string>{" aa; b" , " ccc," }), option3.get_value ());
518+ }
519+
497520void OptionTest::test_options_string_set () {
498521 const OptionStringSet::ValueType initial{" x" , " y" , " z" };
499522 OptionStringSet option (initial);
0 commit comments