1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#include "StarItemDatabase.hpp"
#include <list>
#include "gtest/gtest.h"
using namespace Star;
TEST(ItemTest, ItemDescriptorConstruction) {
ItemDescriptor testItemDescriptor;
testItemDescriptor = ItemDescriptor();
testItemDescriptor = ItemDescriptor(Json());
String nameOnly = "perfectlygenericitem";
testItemDescriptor = ItemDescriptor(nameOnly);
List<JsonArray> arrayFormats = List<JsonArray>{
JsonArray{"perfectlygenericitem"},
JsonArray{"perfectlygenericitem", 1},
JsonArray{"perfectlygenericitem", 1, JsonObject()},
JsonArray{"perfectlygenericitem", 1, JsonObject{{"testParameter", "testValue"}}}
};
for (auto arrayFormat : arrayFormats)
testItemDescriptor = ItemDescriptor(arrayFormat);
List<JsonObject> objectFormats = List<JsonObject>{
JsonObject{{"name", "perfectlygenericitem"}},
JsonObject{{"item", "perfectlygenericitem"}},
JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}},
JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}, {"parameters", JsonObject()}},
JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}, {"parameters", JsonObject{{"testParameter", "testValue"}}}}
};
for (auto objectFormat : objectFormats)
testItemDescriptor = ItemDescriptor(objectFormat);
testItemDescriptor = ItemDescriptor("perfectlygenericitem", 1);
testItemDescriptor = ItemDescriptor("perfectlygenericitem", 1, JsonObject{{"testParameter", "testValue"}});
}
TEST(ItemTest, ItemComparison) {
auto itemDatabase = Root::singleton().itemDatabase();
ItemPtr testItem = itemDatabase->item(ItemDescriptor("perfectlygenericitem", 1));
ItemPtr testItemParams = itemDatabase->item(ItemDescriptor("perfectlygenericitem", 1, JsonObject{{"testParameter", "testValue"}}));
List<ItemDescriptor> testItemDescriptors = List<ItemDescriptor>{
ItemDescriptor("perfectlygenericitem", 1),
ItemDescriptor(JsonArray{"perfectlygenericitem"}),
ItemDescriptor(JsonArray{"perfectlygenericitem", 1}),
ItemDescriptor(JsonArray{"perfectlygenericitem", 1, JsonObject()}),
ItemDescriptor(JsonObject{{"name", "perfectlygenericitem"}}),
ItemDescriptor(JsonObject{{"item", "perfectlygenericitem"}}),
ItemDescriptor(JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}}),
ItemDescriptor(JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}, {"parameters", JsonObject()}})
};
List<ItemDescriptor> testItemDescriptorsParams = List<ItemDescriptor>{
ItemDescriptor(JsonArray{"perfectlygenericitem", 1, JsonObject{{"testParameter", "testValue"}}}),
ItemDescriptor(JsonObject{{"name", "perfectlygenericitem"}, {"count", 1}, {"parameters", JsonObject{{"testParameter", "testValue"}}}})
};
// comparisons WITHOUT exactMatch
for (ItemDescriptor const& id : testItemDescriptors) {
EXPECT_TRUE(testItem->matches(id));
EXPECT_TRUE(testItemParams->matches(id));
EXPECT_TRUE(id.matches(testItem));
EXPECT_TRUE(id.matches(testItemParams));
for (ItemDescriptor const& id2 : testItemDescriptors)
EXPECT_TRUE(id.matches(id2));
for (ItemDescriptor const& id2 : testItemDescriptorsParams)
EXPECT_TRUE(id.matches(id2));
}
for (ItemDescriptor const& id : testItemDescriptorsParams) {
EXPECT_TRUE(testItem->matches(id));
EXPECT_TRUE(testItemParams->matches(id));
EXPECT_TRUE(id.matches(testItem));
EXPECT_TRUE(id.matches(testItemParams));
for (ItemDescriptor const& id2 : testItemDescriptors)
EXPECT_TRUE(id.matches(id2));
for (ItemDescriptor const& id2 : testItemDescriptorsParams)
EXPECT_TRUE(id.matches(id2));
}
EXPECT_TRUE(testItem->matches(testItemParams));
EXPECT_TRUE(testItemParams->matches(testItem));
// comparisons WITH exactMatch
for (ItemDescriptor const& id : testItemDescriptors) {
EXPECT_TRUE(testItem->matches(id, true));
EXPECT_FALSE(testItemParams->matches(id, true));
EXPECT_TRUE(id.matches(testItem, true));
EXPECT_FALSE(id.matches(testItemParams, true));
for (ItemDescriptor const& id2 : testItemDescriptors)
EXPECT_TRUE(id.matches(id2, true));
for (ItemDescriptor const& id2 : testItemDescriptorsParams)
EXPECT_FALSE(id.matches(id2, true));
}
for (ItemDescriptor const& id : testItemDescriptorsParams) {
EXPECT_FALSE(testItem->matches(id, true));
EXPECT_TRUE(testItemParams->matches(id, true));
EXPECT_FALSE(id.matches(testItem, true));
EXPECT_TRUE(id.matches(testItemParams, true));
for (ItemDescriptor const& id2 : testItemDescriptors)
EXPECT_FALSE(id.matches(id2, true));
for (ItemDescriptor const& id2 : testItemDescriptorsParams)
EXPECT_TRUE(id.matches(id2, true));
}
EXPECT_FALSE(testItem->matches(testItemParams, true));
EXPECT_FALSE(testItemParams->matches(testItem, true));
}
TEST(ItemTest, ConstructItems) {
auto itemDatabase = Root::singleton().itemDatabase();
for (auto itemName : itemDatabase->allItems())
ItemPtr item = itemDatabase->item(ItemDescriptor(itemName, 1));
}
|