diff options
Diffstat (limited to 'xbmc/utils/test/TestSortUtils.cpp')
| -rw-r--r-- | xbmc/utils/test/TestSortUtils.cpp | 123 |
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 | |||
| 14 | TEST(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 | |||
| 59 | TEST(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 | |||
| 106 | TEST(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 | } | ||
