diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
commit | 6352e8e3196f78388b6c771073f9e03eaa612673 (patch) | |
tree | e23772f79a7fbc41bc9108951e9e136857484bf4 /source/test/item_test.cpp | |
parent | 6741a057e5639280d85d0f88ba26f000baa58f61 (diff) |
everything everywhere
all at once
Diffstat (limited to 'source/test/item_test.cpp')
-rw-r--r-- | source/test/item_test.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/source/test/item_test.cpp b/source/test/item_test.cpp new file mode 100644 index 0000000..dda5903 --- /dev/null +++ b/source/test/item_test.cpp @@ -0,0 +1,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)); +} |