test: use GTest instead of cppunit
This commit is contained in:
@@ -19,10 +19,7 @@
|
||||
#include "Mapper.hxx"
|
||||
#include "util/ChronoUtil.hxx"
|
||||
|
||||
#include <cppunit/TestFixture.h>
|
||||
#include <cppunit/extensions/TestFactoryRegistry.h>
|
||||
#include <cppunit/ui/text/TestRunner.h>
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
@@ -196,113 +193,108 @@ ToString(const DetachedSong &song)
|
||||
return result;
|
||||
}
|
||||
|
||||
class TranslateSongTest : public CppUnit::TestFixture {
|
||||
CPPUNIT_TEST_SUITE(TranslateSongTest);
|
||||
CPPUNIT_TEST(TestAbsoluteURI);
|
||||
CPPUNIT_TEST(TestInsecure);
|
||||
CPPUNIT_TEST(TestSecure);
|
||||
CPPUNIT_TEST(TestInDatabase);
|
||||
CPPUNIT_TEST(TestRelative);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
class TranslateSongTest : public ::testing::Test {
|
||||
std::unique_ptr<Storage> _storage;
|
||||
|
||||
void TestAbsoluteURI() {
|
||||
DetachedSong song1("http://example.com/foo.ogg");
|
||||
auto se = ToString(song1);
|
||||
const SongLoader loader(nullptr, nullptr);
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song1, "/ignored",
|
||||
loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song1));
|
||||
protected:
|
||||
void SetUp() override {
|
||||
_storage = CreateLocalStorage(Path::FromFS(music_directory));
|
||||
storage = _storage.get();
|
||||
}
|
||||
|
||||
void TestInsecure() {
|
||||
/* illegal because secure=false */
|
||||
DetachedSong song1 (uri1);
|
||||
const SongLoader loader(*reinterpret_cast<const Client *>(1));
|
||||
CPPUNIT_ASSERT(!playlist_check_translate_song(song1, nullptr,
|
||||
loader));
|
||||
}
|
||||
|
||||
void TestSecure() {
|
||||
DetachedSong song1(uri1, MakeTag1b());
|
||||
auto s1 = ToString(song1);
|
||||
auto se = ToString(DetachedSong(uri1, MakeTag1c()));
|
||||
|
||||
const SongLoader loader(nullptr, nullptr);
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song1, "/ignored",
|
||||
loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song1));
|
||||
}
|
||||
|
||||
void TestInDatabase() {
|
||||
const SongLoader loader(reinterpret_cast<const Database *>(1),
|
||||
storage);
|
||||
|
||||
DetachedSong song1("doesntexist");
|
||||
CPPUNIT_ASSERT(!playlist_check_translate_song(song1, nullptr,
|
||||
loader));
|
||||
|
||||
DetachedSong song2(uri2, MakeTag2b());
|
||||
auto s1 = ToString(song2);
|
||||
auto se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song2, nullptr,
|
||||
loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song2));
|
||||
|
||||
DetachedSong song3("/music/foo/bar.ogg", MakeTag2b());
|
||||
s1 = ToString(song3);
|
||||
se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song3, nullptr,
|
||||
loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song3));
|
||||
}
|
||||
|
||||
void TestRelative() {
|
||||
const Database &db = *reinterpret_cast<const Database *>(1);
|
||||
const SongLoader secure_loader(&db, storage);
|
||||
const SongLoader insecure_loader(*reinterpret_cast<const Client *>(1),
|
||||
&db, storage);
|
||||
|
||||
/* map to music_directory */
|
||||
DetachedSong song1("bar.ogg", MakeTag2b());
|
||||
auto s1 = ToString(song1);
|
||||
auto se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song1, "/music/foo",
|
||||
insecure_loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song1));
|
||||
|
||||
/* illegal because secure=false */
|
||||
DetachedSong song2("bar.ogg", MakeTag2b());
|
||||
CPPUNIT_ASSERT(!playlist_check_translate_song(song1, "/foo",
|
||||
insecure_loader));
|
||||
|
||||
/* legal because secure=true */
|
||||
DetachedSong song3("bar.ogg", MakeTag1b());
|
||||
s1 = ToString(song3);
|
||||
se = ToString(DetachedSong(uri1, MakeTag1c()));
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song3, "/foo",
|
||||
secure_loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song3));
|
||||
|
||||
/* relative to http:// */
|
||||
DetachedSong song4("bar.ogg", MakeTag2a());
|
||||
s1 = ToString(song4);
|
||||
se = ToString(DetachedSong("http://example.com/foo/bar.ogg", MakeTag2a()));
|
||||
CPPUNIT_ASSERT(playlist_check_translate_song(song4, "http://example.com/foo",
|
||||
insecure_loader));
|
||||
CPPUNIT_ASSERT_EQUAL(se, ToString(song4));
|
||||
void TearDown() override {
|
||||
_storage.reset();
|
||||
}
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(TranslateSongTest);
|
||||
|
||||
int
|
||||
main(gcc_unused int argc, gcc_unused char **argv)
|
||||
TEST_F(TranslateSongTest, AbsoluteURI)
|
||||
{
|
||||
auto _storage = CreateLocalStorage(Path::FromFS(music_directory));
|
||||
storage = _storage.get();
|
||||
|
||||
CppUnit::TextUi::TestRunner runner;
|
||||
auto ®istry = CppUnit::TestFactoryRegistry::getRegistry();
|
||||
runner.addTest(registry.makeTest());
|
||||
return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
DetachedSong song1("http://example.com/foo.ogg");
|
||||
auto se = ToString(song1);
|
||||
const SongLoader loader(nullptr, nullptr);
|
||||
EXPECT_TRUE(playlist_check_translate_song(song1, "/ignored",
|
||||
loader));
|
||||
EXPECT_EQ(se, ToString(song1));
|
||||
}
|
||||
|
||||
TEST_F(TranslateSongTest, Insecure)
|
||||
{
|
||||
/* illegal because secure=false */
|
||||
DetachedSong song1 (uri1);
|
||||
const SongLoader loader(*reinterpret_cast<const Client *>(1));
|
||||
EXPECT_FALSE(playlist_check_translate_song(song1, nullptr,
|
||||
loader));
|
||||
}
|
||||
|
||||
TEST_F(TranslateSongTest, Secure)
|
||||
{
|
||||
DetachedSong song1(uri1, MakeTag1b());
|
||||
auto s1 = ToString(song1);
|
||||
auto se = ToString(DetachedSong(uri1, MakeTag1c()));
|
||||
|
||||
const SongLoader loader(nullptr, nullptr);
|
||||
EXPECT_TRUE(playlist_check_translate_song(song1, "/ignored",
|
||||
loader));
|
||||
EXPECT_EQ(se, ToString(song1));
|
||||
}
|
||||
|
||||
TEST_F(TranslateSongTest, InDatabase)
|
||||
{
|
||||
const SongLoader loader(reinterpret_cast<const Database *>(1),
|
||||
storage);
|
||||
|
||||
DetachedSong song1("doesntexist");
|
||||
EXPECT_FALSE(playlist_check_translate_song(song1, nullptr,
|
||||
loader));
|
||||
|
||||
DetachedSong song2(uri2, MakeTag2b());
|
||||
auto s1 = ToString(song2);
|
||||
auto se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
EXPECT_TRUE(playlist_check_translate_song(song2, nullptr,
|
||||
loader));
|
||||
EXPECT_EQ(se, ToString(song2));
|
||||
|
||||
DetachedSong song3("/music/foo/bar.ogg", MakeTag2b());
|
||||
s1 = ToString(song3);
|
||||
se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
EXPECT_TRUE(playlist_check_translate_song(song3, nullptr,
|
||||
loader));
|
||||
EXPECT_EQ(se, ToString(song3));
|
||||
}
|
||||
|
||||
TEST_F(TranslateSongTest, Relative)
|
||||
{
|
||||
const Database &db = *reinterpret_cast<const Database *>(1);
|
||||
const SongLoader secure_loader(&db, storage);
|
||||
const SongLoader insecure_loader(*reinterpret_cast<const Client *>(1),
|
||||
&db, storage);
|
||||
|
||||
/* map to music_directory */
|
||||
DetachedSong song1("bar.ogg", MakeTag2b());
|
||||
auto s1 = ToString(song1);
|
||||
auto se = ToString(DetachedSong(uri2, MakeTag2c()));
|
||||
EXPECT_TRUE(playlist_check_translate_song(song1, "/music/foo",
|
||||
insecure_loader));
|
||||
EXPECT_EQ(se, ToString(song1));
|
||||
|
||||
/* illegal because secure=false */
|
||||
DetachedSong song2("bar.ogg", MakeTag2b());
|
||||
EXPECT_FALSE(playlist_check_translate_song(song1, "/foo",
|
||||
insecure_loader));
|
||||
|
||||
/* legal because secure=true */
|
||||
DetachedSong song3("bar.ogg", MakeTag1b());
|
||||
s1 = ToString(song3);
|
||||
se = ToString(DetachedSong(uri1, MakeTag1c()));
|
||||
EXPECT_TRUE(playlist_check_translate_song(song3, "/foo",
|
||||
secure_loader));
|
||||
EXPECT_EQ(se, ToString(song3));
|
||||
|
||||
/* relative to http:// */
|
||||
DetachedSong song4("bar.ogg", MakeTag2a());
|
||||
s1 = ToString(song4);
|
||||
se = ToString(DetachedSong("http://example.com/foo/bar.ogg", MakeTag2a()));
|
||||
EXPECT_TRUE(playlist_check_translate_song(song4, "http://example.com/foo",
|
||||
insecure_loader));
|
||||
EXPECT_EQ(se, ToString(song4));
|
||||
}
|
||||
|
Reference in New Issue
Block a user