From e12bd00b474fd2e748067eee2e3289a060097b43 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 22 Jun 2015 21:29:29 +0200 Subject: test/TestFs: new unit test for libfs.a --- test/TestFs.cxx | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 test/TestFs.cxx (limited to 'test') diff --git a/test/TestFs.cxx b/test/TestFs.cxx new file mode 100644 index 000000000..aa840f848 --- /dev/null +++ b/test/TestFs.cxx @@ -0,0 +1,107 @@ +/* + * Unit tests for src/fs/ + */ + +#include "config.h" +#include "fs/Glob.hxx" +#include "util/Error.hxx" + +#include +#include +#include +#include + +#include +#include + +#ifdef HAVE_CLASS_GLOB + +class TestGlob : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(TestGlob); + CPPUNIT_TEST(Basic); + CPPUNIT_TEST(Asterisk); + CPPUNIT_TEST(QuestionMark); + CPPUNIT_TEST(Wildcard); + CPPUNIT_TEST(PrefixWildcard); + CPPUNIT_TEST(SuffixWildcard); + CPPUNIT_TEST_SUITE_END(); + +public: + void Basic() { + const Glob glob("foo"); + CPPUNIT_ASSERT(glob.Check("foo")); + CPPUNIT_ASSERT(!glob.Check("fooo")); + CPPUNIT_ASSERT(!glob.Check("_foo")); + CPPUNIT_ASSERT(!glob.Check("a/foo")); + CPPUNIT_ASSERT(!glob.Check("")); + CPPUNIT_ASSERT(!glob.Check("*")); + } + + void Asterisk() { + const Glob glob("*"); + CPPUNIT_ASSERT(glob.Check("foo")); + CPPUNIT_ASSERT(glob.Check("bar")); + CPPUNIT_ASSERT(glob.Check("*")); + CPPUNIT_ASSERT(glob.Check("?")); + } + + void QuestionMark() { + const Glob glob("foo?bar"); + CPPUNIT_ASSERT(glob.Check("foo_bar")); + CPPUNIT_ASSERT(glob.Check("foo?bar")); + CPPUNIT_ASSERT(glob.Check("foo bar")); + CPPUNIT_ASSERT(!glob.Check("foobar")); + CPPUNIT_ASSERT(!glob.Check("foo__bar")); + } + + void Wildcard() { + const Glob glob("foo*bar"); + CPPUNIT_ASSERT(glob.Check("foo_bar")); + CPPUNIT_ASSERT(glob.Check("foo?bar")); + CPPUNIT_ASSERT(glob.Check("foo bar")); + CPPUNIT_ASSERT(glob.Check("foobar")); + CPPUNIT_ASSERT(glob.Check("foo__bar")); + CPPUNIT_ASSERT(!glob.Check("_foobar")); + CPPUNIT_ASSERT(!glob.Check("foobar_")); + } + + void PrefixWildcard() { + const Glob glob("*bar"); + CPPUNIT_ASSERT(glob.Check("foo_bar")); + CPPUNIT_ASSERT(glob.Check("foo?bar")); + CPPUNIT_ASSERT(glob.Check("foo bar")); + CPPUNIT_ASSERT(glob.Check("foobar")); + CPPUNIT_ASSERT(glob.Check("foo__bar")); + CPPUNIT_ASSERT(glob.Check("_foobar")); + CPPUNIT_ASSERT(glob.Check("bar")); + CPPUNIT_ASSERT(!glob.Check("foobar_")); + } + + void SuffixWildcard() { + const Glob glob("foo*"); + CPPUNIT_ASSERT(glob.Check("foo_bar")); + CPPUNIT_ASSERT(glob.Check("foo?bar")); + CPPUNIT_ASSERT(glob.Check("foo bar")); + CPPUNIT_ASSERT(glob.Check("foobar")); + CPPUNIT_ASSERT(glob.Check("foo__bar")); + CPPUNIT_ASSERT(glob.Check("foobar_")); + CPPUNIT_ASSERT(glob.Check("foo")); + } +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(TestGlob); + +#endif + +int +main(gcc_unused int argc, gcc_unused char **argv) +{ +#ifdef HAVE_CLASS_GLOB + CppUnit::TextUi::TestRunner runner; + auto ®istry = CppUnit::TestFactoryRegistry::getRegistry(); + runner.addTest(registry.makeTest()); + return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE; +#else + return EXIT_SUCCESS; +#endif +} -- cgit v1.2.3