summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/test/TestSortUtils.cpp
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
committermanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
commitbe933ef2241d79558f91796cc5b3a161f72ebf9c (patch)
treefe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/utils/test/TestSortUtils.cpp
parent5f8335c1e49ce108ef3481863833c98efa00411b (diff)
downloadkodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.gz
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.bz2
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.zip
sync with upstream
Diffstat (limited to 'xbmc/utils/test/TestSortUtils.cpp')
-rw-r--r--xbmc/utils/test/TestSortUtils.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/xbmc/utils/test/TestSortUtils.cpp b/xbmc/utils/test/TestSortUtils.cpp
new file mode 100644
index 0000000..dac3c62
--- /dev/null
+++ b/xbmc/utils/test/TestSortUtils.cpp
@@ -0,0 +1,123 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#include "utils/SortUtils.h"
10#include "utils/Variant.h"
11
12#include <gtest/gtest.h>
13
14TEST(TestSortUtils, Sort_SortBy)
15{
16 SortItems items;
17
18 CVariant variant1("M Artist");
19 SortItemPtr item1(new SortItem());
20 (*item1)[FieldArtist] = variant1;
21 CVariant variant2("B Artist");
22 SortItemPtr item2(new SortItem());
23 (*item2)[FieldArtist] = variant2;
24 CVariant variant3("R Artist");
25 SortItemPtr item3(new SortItem());
26 (*item3)[FieldArtist] = variant3;
27 CVariant variant4("R Artist");
28 SortItemPtr item4(new SortItem());
29 (*item4)[FieldArtist] = variant4;
30 CVariant variant5("I Artist");
31 SortItemPtr item5(new SortItem());
32 (*item5)[FieldArtist] = variant5;
33 CVariant variant6("A Artist");
34 SortItemPtr item6(new SortItem());
35 (*item6)[FieldArtist] = variant6;
36 CVariant variant7("G Artist");
37 SortItemPtr item7(new SortItem());
38 (*item7)[FieldArtist] = variant7;
39
40 items.push_back(item1);
41 items.push_back(item2);
42 items.push_back(item3);
43 items.push_back(item4);
44 items.push_back(item5);
45 items.push_back(item6);
46 items.push_back(item7);
47
48 SortUtils::Sort(SortByArtist, SortOrderAscending, SortAttributeNone, items);
49
50 EXPECT_STREQ("A Artist", (*items.at(0))[FieldArtist].asString().c_str());
51 EXPECT_STREQ("B Artist", (*items.at(1))[FieldArtist].asString().c_str());
52 EXPECT_STREQ("G Artist", (*items.at(2))[FieldArtist].asString().c_str());
53 EXPECT_STREQ("I Artist", (*items.at(3))[FieldArtist].asString().c_str());
54 EXPECT_STREQ("M Artist", (*items.at(4))[FieldArtist].asString().c_str());
55 EXPECT_STREQ("R Artist", (*items.at(5))[FieldArtist].asString().c_str());
56 EXPECT_STREQ("R Artist", (*items.at(6))[FieldArtist].asString().c_str());
57}
58
59TEST(TestSortUtils, Sort_SortDescription)
60{
61 SortItems items;
62
63 CVariant variant1("M Artist");
64 SortItemPtr item1(new SortItem());
65 (*item1)[FieldArtist] = variant1;
66 CVariant variant2("B Artist");
67 SortItemPtr item2(new SortItem());
68 (*item2)[FieldArtist] = variant2;
69 CVariant variant3("R Artist");
70 SortItemPtr item3(new SortItem());
71 (*item3)[FieldArtist] = variant3;
72 CVariant variant4("R Artist");
73 SortItemPtr item4(new SortItem());
74 (*item4)[FieldArtist] = variant4;
75 CVariant variant5("I Artist");
76 SortItemPtr item5(new SortItem());
77 (*item5)[FieldArtist] = variant5;
78 CVariant variant6("A Artist");
79 SortItemPtr item6(new SortItem());
80 (*item6)[FieldArtist] = variant6;
81 CVariant variant7("G Artist");
82 SortItemPtr item7(new SortItem());
83 (*item7)[FieldArtist] = variant7;
84
85 items.push_back(item1);
86 items.push_back(item2);
87 items.push_back(item3);
88 items.push_back(item4);
89 items.push_back(item5);
90 items.push_back(item6);
91 items.push_back(item7);
92
93 SortDescription desc;
94 desc.sortBy = SortByArtist;
95 SortUtils::Sort(desc, items);
96
97 EXPECT_STREQ("A Artist", (*items.at(0))[FieldArtist].asString().c_str());
98 EXPECT_STREQ("B Artist", (*items.at(1))[FieldArtist].asString().c_str());
99 EXPECT_STREQ("G Artist", (*items.at(2))[FieldArtist].asString().c_str());
100 EXPECT_STREQ("I Artist", (*items.at(3))[FieldArtist].asString().c_str());
101 EXPECT_STREQ("M Artist", (*items.at(4))[FieldArtist].asString().c_str());
102 EXPECT_STREQ("R Artist", (*items.at(5))[FieldArtist].asString().c_str());
103 EXPECT_STREQ("R Artist", (*items.at(6))[FieldArtist].asString().c_str());
104}
105
106TEST(TestSortUtils, GetFieldsForSorting)
107{
108 Fields fields;
109
110 fields = SortUtils::GetFieldsForSorting(SortByArtist);
111 Fields::iterator it;
112 it = fields.find(FieldAlbum);
113 EXPECT_EQ(FieldAlbum, *it);
114 it = fields.find(FieldArtist);
115 EXPECT_EQ(FieldArtist, *it);
116 it = fields.find(FieldArtistSort);
117 EXPECT_EQ(FieldArtistSort, *it);
118 it = fields.find(FieldYear);
119 EXPECT_EQ(FieldYear, *it);
120 it = fields.find(FieldTrackNumber);
121 EXPECT_EQ(FieldTrackNumber, *it);
122 EXPECT_EQ((unsigned int)5, fields.size());
123}