diff options
author | Max Kellermann <max@duempel.org> | 2014-09-11 19:24:52 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-09-11 19:26:58 +0200 |
commit | a464dc681a64514ad7b8b8dbb7e4c64ea0561396 (patch) | |
tree | 7cd84bd8fcd394f73920d46a9628b79450f40cb3 /test | |
parent | af384d9aa6f216d3c5b890e3bd52140536c09686 (diff) | |
parent | eaf675dc92fbe0143fdc0e9c4234bd78a889decf (diff) | |
download | mpd-a464dc681a64514ad7b8b8dbb7e4c64ea0561396.tar.gz mpd-a464dc681a64514ad7b8b8dbb7e4c64ea0561396.tar.xz mpd-a464dc681a64514ad7b8b8dbb7e4c64ea0561396.zip |
Merge tag 'v0.18.14'
Diffstat (limited to 'test')
-rw-r--r-- | test/test_protocol.cxx | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/test_protocol.cxx b/test/test_protocol.cxx new file mode 100644 index 000000000..d7ea7cd87 --- /dev/null +++ b/test/test_protocol.cxx @@ -0,0 +1,60 @@ +#include "config.h" +#include "protocol/ArgParser.hxx" +#include "protocol/Result.hxx" +#include "Compiler.h" + +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/TestFactoryRegistry.h> +#include <cppunit/ui/text/TestRunner.h> +#include <cppunit/extensions/HelperMacros.h> + +static enum ack last_error = ack(-1); + +void +command_error(gcc_unused Client &client, enum ack error, + gcc_unused const char *fmt, ...) +{ + last_error = error; +} + +class ArgParserTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(ArgParserTest); + CPPUNIT_TEST(TestRange); + CPPUNIT_TEST_SUITE_END(); + +public: + void TestRange(); +}; + +void +ArgParserTest::TestRange() +{ + Client &client = *(Client *)nullptr; + unsigned a, b; + + CPPUNIT_ASSERT(check_range(client, &a, &b, "1")); + CPPUNIT_ASSERT_EQUAL(1u, a); + CPPUNIT_ASSERT_EQUAL(2u, b); + + CPPUNIT_ASSERT(check_range(client, &a, &b, "1:5")); + CPPUNIT_ASSERT_EQUAL(1u, a); + CPPUNIT_ASSERT_EQUAL(5u, b); + + CPPUNIT_ASSERT(check_range(client, &a, &b, "1:")); + CPPUNIT_ASSERT_EQUAL(1u, a); + CPPUNIT_ASSERT(b >= 999999u); + + CPPUNIT_ASSERT(!check_range(client, &a, &b, "-2")); + CPPUNIT_ASSERT_EQUAL(ACK_ERROR_ARG, last_error); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ArgParserTest); + +int +main(gcc_unused int argc, gcc_unused char **argv) +{ + CppUnit::TextUi::TestRunner runner; + auto ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + runner.addTest(registry.makeTest()); + return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE; +} |