summaryrefslogtreecommitdiffstats
path: root/xbmc/video/test/TestStacks.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /xbmc/video/test/TestStacks.cpp
parentInitial commit. (diff)
downloadkodi-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/video/test/TestStacks.cpp')
-rw-r--r--xbmc/video/test/TestStacks.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/xbmc/video/test/TestStacks.cpp b/xbmc/video/test/TestStacks.cpp
new file mode 100644
index 0000000..f5d92ea
--- /dev/null
+++ b/xbmc/video/test/TestStacks.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2022 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 "filesystem/Directory.h"
+#include "test/TestUtils.h"
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+using namespace XFILE;
+
+namespace
+{
+const std::string VIDEO_EXTENSIONS = ".mpg|.mpeg|.mp4|.mkv|.mk3d|.iso";
+}
+
+class TestStacks : public ::testing::Test
+{
+protected:
+ TestStacks() = default;
+ ~TestStacks() override = default;
+};
+
+TEST_F(TestStacks, TestMovieFilesStackFilesAB)
+{
+ const std::string movieFolder =
+ XBMC_REF_FILE_PATH("xbmc/video/test/testdata/moviestack_ab/Movie-(2001)");
+ CFileItemList items;
+ CDirectory::GetDirectory(movieFolder, items, VIDEO_EXTENSIONS, DIR_FLAG_DEFAULTS);
+ // make sure items has 2 items (the two movie parts)
+ EXPECT_EQ(items.Size(), 2);
+ // stack the items and make sure we end up with a single movie
+ items.Stack();
+ EXPECT_EQ(items.Size(), 1);
+ // check the single item in the stack is a stack://
+ EXPECT_EQ(items.Get(0)->IsStack(), true);
+}
+
+TEST_F(TestStacks, TestMovieFilesStackFilesPart)
+{
+ const std::string movieFolder =
+ XBMC_REF_FILE_PATH("xbmc/video/test/testdata/moviestack_part/Movie_(2001)");
+ CFileItemList items;
+ CDirectory::GetDirectory(movieFolder, items, VIDEO_EXTENSIONS, DIR_FLAG_DEFAULTS);
+ // make sure items has 3 items (the three movie parts)
+ EXPECT_EQ(items.Size(), 3);
+ // stack the items and make sure we end up with a single movie
+ items.Stack();
+ EXPECT_EQ(items.Size(), 1);
+ // check the single item in the stack is a stack://
+ EXPECT_EQ(items.Get(0)->IsStack(), true);
+}
+
+TEST_F(TestStacks, TestMovieFilesStackDvdIso)
+{
+ const std::string movieFolder =
+ XBMC_REF_FILE_PATH("xbmc/video/test/testdata/moviestack_dvdiso/Movie_(2001)");
+ CFileItemList items;
+ CDirectory::GetDirectory(movieFolder, items, VIDEO_EXTENSIONS, DIR_FLAG_DEFAULTS);
+ // make sure items has 2 items (the two dvd isos)
+ EXPECT_EQ(items.Size(), 2);
+ // stack the items and make sure we end up with a single movie
+ items.Stack();
+ EXPECT_EQ(items.Size(), 1);
+ // check the single item in the stack is a stack://
+ EXPECT_EQ(items.Get(0)->IsStack(), true);
+}