From 3dbda2dda2268f5cb213b18d4e42a889d52c16ec Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 17 Oct 2013 00:19:22 +0200 Subject: test/test_archive: unit test for archive_lookup() --- test/test_archive.cxx | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 test/test_archive.cxx (limited to 'test') diff --git a/test/test_archive.cxx b/test/test_archive.cxx new file mode 100644 index 000000000..2a2952885 --- /dev/null +++ b/test/test_archive.cxx @@ -0,0 +1,76 @@ +#include "config.h" +#include "ArchiveLookup.hxx" +#include "Compiler.h" + +#include +#include +#include +#include + +#include + +#include + +class ArchiveLookupTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(ArchiveLookupTest); + CPPUNIT_TEST(TestArchiveLookup); + CPPUNIT_TEST_SUITE_END(); + +public: + void TestArchiveLookup(); +}; + +void +ArchiveLookupTest::TestArchiveLookup() +{ + char *archive, *inpath, *suffix; + + char *path = strdup(""); + CPPUNIT_ASSERT_EQUAL(false, + archive_lookup(path, &archive, &inpath, &suffix)); + g_free(path); + + path = strdup("."); + CPPUNIT_ASSERT_EQUAL(false, + archive_lookup(path, &archive, &inpath, &suffix)); + g_free(path); + + path = strdup("config.h"); + CPPUNIT_ASSERT_EQUAL(false, + archive_lookup(path, &archive, &inpath, &suffix)); + g_free(path); + + path = strdup("src/foo/bar"); + CPPUNIT_ASSERT_EQUAL(false, + archive_lookup(path, &archive, &inpath, &suffix)); + g_free(path); + + path = strdup("Makefile/foo/bar"); + CPPUNIT_ASSERT_EQUAL(true, + archive_lookup(path, &archive, &inpath, &suffix)); + CPPUNIT_ASSERT_EQUAL(path, archive); + CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "Makefile")); + CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar")); + CPPUNIT_ASSERT_EQUAL((char *)nullptr, suffix); + g_free(path); + + path = strdup("config.h/foo/bar"); + CPPUNIT_ASSERT_EQUAL(true, + archive_lookup(path, &archive, &inpath, &suffix)); + CPPUNIT_ASSERT_EQUAL(path, archive); + CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "config.h")); + CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar")); + CPPUNIT_ASSERT_EQUAL(0, strcmp(suffix, "h")); + g_free(path); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ArchiveLookupTest); + +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; +} -- cgit v1.2.3