Added ability to store lookups per context.

This commit is contained in:
David Vereb
2017-12-19 14:04:39 -05:00
parent 6e603b412f
commit 1a6607cbe3
2 changed files with 127 additions and 23 deletions

113
main.cpp
View File

@@ -12,6 +12,14 @@ TEST_CASE("all tests", "all") {
REQUIRE(container.add(1, 2));
REQUIRE(string_container.add("1", "2"));
// context with same VALUE
REQUIRE(container.add(1, 3, "a"));
REQUIRE(string_container.add("1", "3", "a"));
// context with save EQUIVALENT
REQUIRE(container.add(3, 2, "b"));
REQUIRE(string_container.add("3", "2", "b"));
SECTION ("no duplicates") {
REQUIRE_FALSE(container.add(1, 2));
REQUIRE_FALSE(container.add(2, 1));
@@ -25,6 +33,34 @@ TEST_CASE("all tests", "all") {
REQUIRE_FALSE(string_container.add("2", "3"));
REQUIRE_FALSE(string_container.add("3", "1"));
REQUIRE_FALSE(string_container.add("3", "2"));
// context with same VALUE
REQUIRE_FALSE(container.add(1, 3, "a"));
REQUIRE_FALSE(container.add(3, 1, "a"));
REQUIRE_FALSE(container.add(1, 4, "a"));
REQUIRE_FALSE(container.add(3, 4, "a"));
REQUIRE_FALSE(container.add(4, 1, "a"));
REQUIRE_FALSE(container.add(4, 3, "a"));
REQUIRE_FALSE(string_container.add("1", "3", "a"));
REQUIRE_FALSE(string_container.add("3", "1", "a"));
REQUIRE_FALSE(string_container.add("1", "4", "a"));
REQUIRE_FALSE(string_container.add("3", "4", "a"));
REQUIRE_FALSE(string_container.add("4", "1", "a"));
REQUIRE_FALSE(string_container.add("4", "3", "a"));
// context with save EQUIVALENT
REQUIRE_FALSE(container.add(3, 2, "b"));
REQUIRE_FALSE(container.add(2, 3, "b"));
REQUIRE_FALSE(container.add(3, 4, "b"));
REQUIRE_FALSE(container.add(2, 4, "b"));
REQUIRE_FALSE(container.add(4, 3, "b"));
REQUIRE_FALSE(container.add(4, 2, "b"));
REQUIRE_FALSE(string_container.add("3", "2", "b"));
REQUIRE_FALSE(string_container.add("2", "3", "b"));
REQUIRE_FALSE(string_container.add("3", "4", "b"));
REQUIRE_FALSE(string_container.add("2", "4", "b"));
REQUIRE_FALSE(string_container.add("4", "3", "b"));
REQUIRE_FALSE(string_container.add("4", "2", "b"));
}
SECTION ("searches") {
@@ -37,6 +73,18 @@ TEST_CASE("all tests", "all") {
REQUIRE(string_container.contains("1"));
REQUIRE_FALSE(container.contains(10));
REQUIRE_FALSE(string_container.contains("10"));
// context with same VALUE
REQUIRE(container.contains(1, "a"));
REQUIRE(string_container.contains("1", "a"));
REQUIRE_FALSE(container.contains(10, "a"));
REQUIRE_FALSE(string_container.contains("10", "a"));
// context with save EQUIVALENT
REQUIRE(container.contains(2, "b"));
REQUIRE(string_container.contains("2", "b"));
REQUIRE_FALSE(container.contains(10, "b"));
REQUIRE_FALSE(string_container.contains("10", "b"));
}
SECTION ("not found in container and unedited") {
@@ -46,14 +94,65 @@ TEST_CASE("all tests", "all") {
REQUIRE(container_result == 10);
REQUIRE_FALSE(string_container.get("20", string_container_result));
REQUIRE(string_container_result == "10");
// context with same VALUE
container_result = 10;
string_container_result = "10";
REQUIRE_FALSE(container.get(2, container_result, "a"));
REQUIRE(container_result == 10);
REQUIRE_FALSE(string_container.get("2", string_container_result, "a"));
REQUIRE(string_container_result == "10");
// context with save EQUIVALENT
container_result = 10;
string_container_result = "10";
REQUIRE_FALSE(container.get(1, container_result, "b"));
REQUIRE(container_result == 10);
REQUIRE_FALSE(string_container.get("1", string_container_result, "b"));
REQUIRE(string_container_result == "10");
}
SECTION ("in container and set") {
container_result = 0;
REQUIRE(container.get(1, container_result));
REQUIRE(container_result == 2);
container_result = 0;
REQUIRE(container.get(2, container_result));
REQUIRE(container_result == 1);
string_container_result = "0";
REQUIRE(string_container.get("1", string_container_result));
REQUIRE(string_container_result == "2");
string_container_result = "0";
REQUIRE(string_container.get("2", string_container_result));
REQUIRE(string_container_result == "1");
// context with same VALUE
container_result = 0;
REQUIRE(container.get(1, container_result, "a"));
REQUIRE(container_result == 3);
container_result = 0;
REQUIRE(container.get(3, container_result, "a"));
REQUIRE(container_result == 1);
string_container_result = "0";
REQUIRE(string_container.get("1", string_container_result, "a"));
REQUIRE(string_container_result == "3");
string_container_result = "0";
REQUIRE(string_container.get("3", string_container_result, "a"));
REQUIRE(string_container_result == "1");
// context with save EQUIVALENT
container_result = 0;
REQUIRE(container.get(3, container_result, "b"));
REQUIRE(container_result == 2);
container_result = 0;
REQUIRE(container.get(2, container_result, "b"));
REQUIRE(container_result == 3);
string_container_result = "0";
REQUIRE(string_container.get("3", string_container_result, "b"));
REQUIRE(string_container_result == "2");
string_container_result = "0";
REQUIRE(string_container.get("2", string_container_result, "b"));
REQUIRE(string_container_result == "3");
}
}
@@ -65,27 +164,29 @@ TEST_CASE("all tests", "all") {
REQUIRE(container.get(1, container_result));
CHECK(container_result == 2);
container_result = 0;
REQUIRE(container.get(1, container_result, DualLookupBase::Type::OPPOSITE));
REQUIRE(container.get(1, container_result, "", DualLookupBase::Type::OPPOSITE));
CHECK(container_result == 2);
container_result = 0;
REQUIRE(container.get(1, container_result, DualLookupBase::Type::EQUIVALENT));
REQUIRE(container.get(1, container_result, "", DualLookupBase::Type::EQUIVALENT));
CHECK(container_result == 2);
container_result = 0;
REQUIRE(container.get(1, container_result, DualLookupBase::Type::VALUE));
REQUIRE(container.get(1, container_result, "", DualLookupBase::Type::VALUE));
CHECK(container_result == 1);
container_result = 0;
REQUIRE(container.get(2, container_result));
CHECK(container_result == 1);
container_result = 0;
REQUIRE(container.get(2, container_result, DualLookup<int>::Type::OPPOSITE));
REQUIRE(container.get(2, container_result, "", DualLookup<int>::Type::OPPOSITE));
CHECK(container_result == 1);
container_result = 0;
REQUIRE(container.get(2, container_result, DualLookup<int>::Type::EQUIVALENT));
REQUIRE(container.get(2, container_result, "", DualLookup<int>::Type::EQUIVALENT));
CHECK(container_result == 2);
container_result = 0;
REQUIRE(container.get(2, container_result, DualLookup<int>::Type::VALUE));
REQUIRE(container.get(2, container_result, "", DualLookup<int>::Type::VALUE));
CHECK(container_result == 1);
// context with same VALUE
// context with save EQUIVALENT
}
}
}