Skip to content

Commit

Permalink
OptionStringList: Add more unittests for various string lists
Browse files Browse the repository at this point in the history
It showcases the behavior of `OptionStringList::from_string()` on
various examples.
  • Loading branch information
kontura committed Dec 8, 2022
1 parent aecdce3 commit a89ed19
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
93 changes: 93 additions & 0 deletions test/libdnf/conf/test_option.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -325,3 +325,96 @@ void OptionTest::test_options_string_list() {
CPPUNIT_ASSERT_THROW(option.set(Option::Priority::RUNTIME, "do iT"), AssertionError);
CPPUNIT_ASSERT_THROW(option.set(Option::Priority::RUNTIME, "doXXnut"), AssertionError);
}

void OptionTest::test_options_string_list_delimiters() {
OptionStringList option("Dfirstx , DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx ,DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx ,DsecondX ");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx \n,DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx \n\n,DsecondX\n");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "Dfirstx");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx"}), option.get_value());

option.set(Option::Priority::RUNTIME, ", DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd, ,DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,,,DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n,,DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n, ,DsecondX\n");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n, ,DsecondX\nasdasd");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX", "asdasd"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n, ,DsecondX asdasd");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX", "asdasd"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n, ,DsecondX asdasd");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX", "asdasd"}), option.get_value());

option.set(Option::Priority::RUNTIME, "asdasd,\n, ,DsecondX\n\n\nasdasd");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"asdasd", "DsecondX", "asdasd"}), option.get_value());

option.set(Option::Priority::RUNTIME, " , Dfirstx , DsecondX ");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"", "Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, " Dfirstx , DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, " Dfirstx , DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());

option.set(Option::Priority::RUNTIME, " Dfirstx\n\n , DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option.get_value());
}

void OptionTest::test_options_string_list_custom_delimiters() {
OptionStringList option({"x?"}, "", false, ",\n");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"x?"}), option.get_value());

option.set(Option::Priority::RUNTIME, "x? < 1.0 ");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"x? < 1.0"}), option.get_value());

option.set(Option::Priority::RUNTIME, " x? < 1.0,");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"x? < 1.0"}), option.get_value());

option.set(Option::Priority::RUNTIME, "x? < 1.0 ,");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"x? < 1.0"}), option.get_value());

option.set(Option::Priority::RUNTIME, "x? < 1.0 , ");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"x? < 1.0"}), option.get_value());


OptionStringList option3((std::vector<std::string>){"dval1X", "dval2X"}, "", true, ";");
option3.set(Option::Priority::RUNTIME, " aa; b; ccc,; \n");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"aa", "b", "ccc,"}), option3.get_value());

option3.set(Option::Priority::RUNTIME, " Dfirstx , DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx , DsecondX"}), option3.get_value());

option3.set(Option::Priority::RUNTIME, " Dfirstx ; DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option3.get_value());

option3.set(Option::Priority::RUNTIME, " Dfirstx\n\n ; DsecondX");
CPPUNIT_ASSERT_EQUAL((std::vector<std::string>{"Dfirstx", "DsecondX"}), option3.get_value());
}
4 changes: 4 additions & 0 deletions test/libdnf/conf/test_option.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class OptionTest : public CppUnit::TestCase {
CPPUNIT_TEST(test_options_seconds);
CPPUNIT_TEST(test_options_string);
CPPUNIT_TEST(test_options_string_list);
CPPUNIT_TEST(test_options_string_list_delimiters);
CPPUNIT_TEST(test_options_string_list_custom_delimiters);
CPPUNIT_TEST_SUITE_END();

public:
Expand All @@ -46,6 +48,8 @@ class OptionTest : public CppUnit::TestCase {
void test_options_seconds();
void test_options_string();
void test_options_string_list();
void test_options_string_list_delimiters();
void test_options_string_list_custom_delimiters();
};


Expand Down

0 comments on commit a89ed19

Please sign in to comment.