summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-10-17 00:19:22 +0200
committerMax Kellermann <max@duempel.org>2013-10-17 00:19:22 +0200
commit3dbda2dda2268f5cb213b18d4e42a889d52c16ec (patch)
tree43507dd5deb5dfbfb99e7b4ad8510d0386c3ffbe /test
parenta0105b45aee3471b71f9fca5db1eb72636c2733c (diff)
test/test_archive: unit test for archive_lookup()
Diffstat (limited to 'test')
-rw-r--r--test/test_archive.cxx76
1 files changed, 76 insertions, 0 deletions
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 <cppunit/TestFixture.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <glib.h>
+
+#include <string.h>
+
+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 &registry = CppUnit::TestFactoryRegistry::getRegistry();
+ runner.addTest(registry.makeTest());
+ return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE;
+}