diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /xbmc/test/TestFileItem.cpp | |
parent | Initial commit. (diff) | |
download | kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip |
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/test/TestFileItem.cpp')
-rw-r--r-- | xbmc/test/TestFileItem.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/xbmc/test/TestFileItem.cpp b/xbmc/test/TestFileItem.cpp new file mode 100644 index 0000000..e78ba27 --- /dev/null +++ b/xbmc/test/TestFileItem.cpp @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "FileItem.h" +#include "ServiceBroker.h" +#include "URL.h" +#include "settings/AdvancedSettings.h" +#include "settings/Settings.h" +#include "settings/SettingsComponent.h" +#include "settings/lib/SettingsManager.h" + +#include <gtest/gtest.h> + +using ::testing::Test; +using ::testing::WithParamInterface; +using ::testing::ValuesIn; + +struct TestFileData +{ + const char *file; + bool use_folder; + const char *base; +}; + +class AdvancedSettingsResetBase : public Test +{ +public: + AdvancedSettingsResetBase(); +}; + +AdvancedSettingsResetBase::AdvancedSettingsResetBase() +{ + // Force all advanced settings to be reset to defaults + const auto settings = CServiceBroker::GetSettingsComponent(); + CSettingsManager* settingsMgr = settings->GetSettings()->GetSettingsManager(); + settings->GetAdvancedSettings()->Uninitialize(*settingsMgr); + settings->GetAdvancedSettings()->Initialize(*settingsMgr); +} + +class TestFileItemSpecifiedArtJpg : public AdvancedSettingsResetBase, + public WithParamInterface<TestFileData> +{ +}; + + +TEST_P(TestFileItemSpecifiedArtJpg, GetLocalArt) +{ + CFileItem item; + item.SetPath(GetParam().file); + std::string path = CURL(item.GetLocalArt("art.jpg", GetParam().use_folder)).Get(); + std::string compare = CURL(GetParam().base).Get(); + EXPECT_EQ(compare, path); +} + +const TestFileData MovieFiles[] = {{ "c:\\dir\\filename.avi", false, "c:\\dir\\filename-art.jpg" }, + { "c:\\dir\\filename.avi", true, "c:\\dir\\art.jpg" }, + { "/dir/filename.avi", false, "/dir/filename-art.jpg" }, + { "/dir/filename.avi", true, "/dir/art.jpg" }, + { "smb://somepath/file.avi", false, "smb://somepath/file-art.jpg" }, + { "smb://somepath/file.avi", true, "smb://somepath/art.jpg" }, + { "stack:///path/to/movie-cd1.avi , /path/to/movie-cd2.avi", false, "/path/to/movie-art.jpg" }, + { "stack:///path/to/movie-cd1.avi , /path/to/movie-cd2.avi", true, "/path/to/art.jpg" }, + { "stack:///path/to/movie_name/cd1/some_file1.avi , /path/to/movie_name/cd2/some_file2.avi", true, "/path/to/movie_name/art.jpg" }, + { "/home/user/TV Shows/Dexter/S1/1x01.avi", false, "/home/user/TV Shows/Dexter/S1/1x01-art.jpg" }, + { "/home/user/TV Shows/Dexter/S1/1x01.avi", true, "/home/user/TV Shows/Dexter/S1/art.jpg" }, + { "zip://g%3a%5cmultimedia%5cmovies%5cSphere%2ezip/Sphere.avi", false, "g:\\multimedia\\movies\\Sphere-art.jpg" }, + { "zip://g%3a%5cmultimedia%5cmovies%5cSphere%2ezip/Sphere.avi", true, "g:\\multimedia\\movies\\art.jpg" }, + { "/home/user/movies/movie_name/video_ts/VIDEO_TS.IFO", false, "/home/user/movies/movie_name/art.jpg" }, + { "/home/user/movies/movie_name/video_ts/VIDEO_TS.IFO", true, "/home/user/movies/movie_name/art.jpg" }, + { "/home/user/movies/movie_name/BDMV/index.bdmv", false, "/home/user/movies/movie_name/art.jpg" }, + { "/home/user/movies/movie_name/BDMV/index.bdmv", true, "/home/user/movies/movie_name/art.jpg" }}; + +INSTANTIATE_TEST_SUITE_P(MovieFiles, TestFileItemSpecifiedArtJpg, ValuesIn(MovieFiles)); + +class TestFileItemFallbackArt : public AdvancedSettingsResetBase, + public WithParamInterface<TestFileData> +{ +}; + +TEST_P(TestFileItemFallbackArt, GetLocalArt) +{ + CFileItem item; + item.SetPath(GetParam().file); + std::string path = CURL(item.GetLocalArt("", GetParam().use_folder)).Get(); + std::string compare = CURL(GetParam().base).Get(); + EXPECT_EQ(compare, path); +} + +const TestFileData NoArtFiles[] = {{ "c:\\dir\\filename.avi", false, "c:\\dir\\filename.tbn" }, + { "/dir/filename.avi", false, "/dir/filename.tbn" }, + { "smb://somepath/file.avi", false, "smb://somepath/file.tbn" }, + { "/home/user/TV Shows/Dexter/S1/1x01.avi", false, "/home/user/TV Shows/Dexter/S1/1x01.tbn" }, + { "zip://g%3a%5cmultimedia%5cmovies%5cSphere%2ezip/Sphere.avi", false, "g:\\multimedia\\movies\\Sphere.tbn" }}; + +INSTANTIATE_TEST_SUITE_P(NoArt, TestFileItemFallbackArt, ValuesIn(NoArtFiles)); + +class TestFileItemBasePath : public AdvancedSettingsResetBase, + public WithParamInterface<TestFileData> +{ +}; + +TEST_P(TestFileItemBasePath, GetBaseMoviePath) +{ + CFileItem item; + item.SetPath(GetParam().file); + std::string path = CURL(item.GetBaseMoviePath(GetParam().use_folder)).Get(); + std::string compare = CURL(GetParam().base).Get(); + EXPECT_EQ(compare, path); +} + +const TestFileData BaseMovies[] = {{ "c:\\dir\\filename.avi", false, "c:\\dir\\filename.avi" }, + { "c:\\dir\\filename.avi", true, "c:\\dir\\" }, + { "/dir/filename.avi", false, "/dir/filename.avi" }, + { "/dir/filename.avi", true, "/dir/" }, + { "smb://somepath/file.avi", false, "smb://somepath/file.avi" }, + { "smb://somepath/file.avi", true, "smb://somepath/" }, + { "stack:///path/to/movie_name/cd1/some_file1.avi , /path/to/movie_name/cd2/some_file2.avi", false, "stack:///path/to/movie_name/cd1/some_file1.avi , /path/to/movie_name/cd2/some_file2.avi" }, + { "stack:///path/to/movie_name/cd1/some_file1.avi , /path/to/movie_name/cd2/some_file2.avi", true, "/path/to/movie_name/" }, + { "/home/user/TV Shows/Dexter/S1/1x01.avi", false, "/home/user/TV Shows/Dexter/S1/1x01.avi" }, + { "/home/user/TV Shows/Dexter/S1/1x01.avi", true, "/home/user/TV Shows/Dexter/S1/" }, + { "zip://g%3a%5cmultimedia%5cmovies%5cSphere%2ezip/Sphere.avi", true, "g:\\multimedia\\movies\\" }, + { "/home/user/movies/movie_name/video_ts/VIDEO_TS.IFO", false, "/home/user/movies/movie_name/" }, + { "/home/user/movies/movie_name/video_ts/VIDEO_TS.IFO", true, "/home/user/movies/movie_name/" }, + { "/home/user/movies/movie_name/BDMV/index.bdmv", false, "/home/user/movies/movie_name/" }, + { "/home/user/movies/movie_name/BDMV/index.bdmv", true, "/home/user/movies/movie_name/" }}; + +INSTANTIATE_TEST_SUITE_P(BaseNameMovies, TestFileItemBasePath, ValuesIn(BaseMovies)); |