Skip to content

Commit

Permalink
Placing back all the previous tests for single operands (slower due t…
Browse files Browse the repository at this point in the history
…o json de/serialization)
  • Loading branch information
jackbergus committed Aug 28, 2023
1 parent e6d5b32 commit 7263a56
Show file tree
Hide file tree
Showing 4 changed files with 300 additions and 37 deletions.
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,12 @@ add_executable(complete_response src/knobab/tests/complete_response.cpp)
target_link_libraries(complete_response Catch2::Catch2WithMain Threads::Threads knobab antlr4_static yaucl_hashing
yaucl_stringutils yaucl_numeric yaucl_data yaucl_bpm yaucl_graph yaucl_structures yaucl_data knobab_ndp yaucl_learning knobab_mining)

add_executable(basic_operators_testing src/knobab/tests/basic_operators_testing.cpp)
target_link_libraries(basic_operators_testing Catch2::Catch2WithMain Threads::Threads knobab antlr4_static yaucl_hashing
yaucl_stringutils yaucl_numeric yaucl_data yaucl_bpm yaucl_graph yaucl_structures yaucl_data knobab_ndp yaucl_learning knobab_mining)


catch_discover_tests(mining_tests)
catch_discover_tests(until_tests)
catch_discover_tests(complete_response)
catch_discover_tests(complete_response)
catch_discover_tests(basic_operators_testing)
4 changes: 2 additions & 2 deletions include/knobab/server/tables/KnowledgeBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ using act_set = std::bitset<sizeof(uint16_t)>;

//union_minimal resolveUnionMinimal(const AttributeTable &table, const AttributeTable::record &x);
const uint16_t MAX_UINT16 = std::pow(2, 16) - 1;
const size_t HYBRID_QUERY_THRESHOLD = std::pow(10, 2) / 2;
const size_t HYBRID_LOG_QUERY_THRESHOLD = std::pow(10, 2) / 2;
const size_t HYBRID_QUERY_THRESHOLD = std::pow(10, 3) / 2;
const size_t HYBRID_LOG_QUERY_THRESHOLD = std::pow(10, 3) / 2;

template <typename T>
struct pattern_mining_result {
Expand Down
202 changes: 202 additions & 0 deletions src/knobab/tests/basic_operators_testing.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,205 @@
//
// Created by giacomo on 02/11/22.
//
#include <vector>
#include <yaucl/structures/set_operations.h>
#include <knobab/server/query_manager/Environment.h>

//#include <gtest/gtest.h>
#include <knobab/server/operators/simple_ltlf_operators.h>
#include <knobab/server/operators/fast_ltlf_operators.h>

#include <catch2/catch_test_macros.hpp>
#define ASSERT_TRUE(c) REQUIRE(c)
#define EXPECT_TRUE(c) REQUIRE(c)
#define EXPECT_EQ(a,b) REQUIRE((a) == (b))
#define EXPECT_GE(a,b) REQUIRE((a) >= (b))
#define DATA_EMPLACE_BACK(l,trace,event,...) (l).emplace_back(std::make_pair((trace),(event)), std::make_pair((1.0), MarkedEventsVector{ __VA_ARGS__}))
#define DATA_EMPLACE_ACTORNONE(l,trace,event,b) if (b) DATA_EMPLACE_BACK(l,trace,event,marked_event::activation(event)); else DATA_EMPLACE_BACK(l,trace,event)
#define DATA_DECREMENT_EMPLACE_BACK(l,trace,event,isMatch) do { (l).emplace_back(std::make_pair((trace),(event)-1), std::make_pair((1.0),MarkedEventsVector{})); if (isMatch) (l).back().second.second.emplace_back(marked_event::activation(event));} while (false)


TEST_CASE("basic_operators") {
Environment env;
std::filesystem::path curr = std::filesystem::current_path().parent_path() / "data" / "testing" / "basic_operator_testing" / "log.txt";
{
std::ifstream if_{curr};
env.load_log(HUMAN_READABLE_YAUCL, true, curr.string(), false, if_);
}
SECTION("A") {
for (int i = 0; i<2; i++) {
bool value = (i == 0);
auto resultA = env.db.timed_dataless_exists("A", value ? ActivationLeaf : NoneLeaf);

Result A;
DATA_EMPLACE_ACTORNONE(A, 0, 0, value);
DATA_EMPLACE_ACTORNONE(A, 3, 0, value);
DATA_EMPLACE_ACTORNONE(A, 4, 0, value);
DATA_EMPLACE_ACTORNONE(A, 5, 0, value);
DATA_EMPLACE_ACTORNONE(A, 6, 0, value);
DATA_EMPLACE_ACTORNONE(A, 7, 0, value);
DATA_EMPLACE_ACTORNONE(A, 7, 3, value);
DATA_EMPLACE_ACTORNONE(A, 8, 0, value);
DATA_EMPLACE_ACTORNONE(A, 8, 3, value);
DATA_EMPLACE_ACTORNONE(A, 9, 0, value);
DATA_EMPLACE_ACTORNONE(A, 9, 3, value);
DATA_EMPLACE_ACTORNONE(A, 10, 0, value);
DATA_EMPLACE_ACTORNONE(A, 10, 2, value);
DATA_EMPLACE_ACTORNONE(A, 11, 0, value);
DATA_EMPLACE_ACTORNONE(A, 11, 3, value);
DATA_EMPLACE_ACTORNONE(A, 12, 0, value);
DATA_EMPLACE_ACTORNONE(A, 12, 2, value);

EXPECT_EQ(resultA, A);
}
}
SECTION("B") {
for (int i = 0; i<2; i++) {
bool value = (i == 0);
auto resultA = env.db.timed_dataless_exists("B", (i == 0) ? ActivationLeaf : NoneLeaf);

Result A;
DATA_EMPLACE_ACTORNONE(A, 1, 0, value);
DATA_EMPLACE_ACTORNONE(A, 3, 1, value);
DATA_EMPLACE_ACTORNONE(A, 5, 1, value);
DATA_EMPLACE_ACTORNONE(A, 7, 1, value);
DATA_EMPLACE_ACTORNONE(A, 7, 2, value);
DATA_EMPLACE_ACTORNONE(A, 8, 2, value);
DATA_EMPLACE_ACTORNONE(A, 9, 1, value);
DATA_EMPLACE_ACTORNONE(A, 9, 2, value);
DATA_EMPLACE_ACTORNONE(A, 9, 4, value);
DATA_EMPLACE_ACTORNONE(A, 9, 5, value);
DATA_EMPLACE_ACTORNONE(A, 10, 1, value);
DATA_EMPLACE_ACTORNONE(A, 10, 3, value);
DATA_EMPLACE_ACTORNONE(A, 10, 4, value);
DATA_EMPLACE_ACTORNONE(A, 11, 1, value);
DATA_EMPLACE_ACTORNONE(A, 11, 2, value);
DATA_EMPLACE_ACTORNONE(A, 11, 4, value);
DATA_EMPLACE_ACTORNONE(A, 12, 1, value);
DATA_EMPLACE_ACTORNONE(A, 12, 3, value);

EXPECT_EQ(resultA, A);
}
}
SECTION("init") {
for (int i = 0; i<2; i++) {
bool value = (i == 0);

{
auto resultA = env.db.init("A", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 0, 0, value);
DATA_EMPLACE_ACTORNONE(A, 3, 0, value);
DATA_EMPLACE_ACTORNONE(A, 4, 0, value);
DATA_EMPLACE_ACTORNONE(A, 5, 0, value);
DATA_EMPLACE_ACTORNONE(A, 6, 0, value);
DATA_EMPLACE_ACTORNONE(A, 7, 0, value);
DATA_EMPLACE_ACTORNONE(A, 8, 0, value);
DATA_EMPLACE_ACTORNONE(A, 9, 0, value);
DATA_EMPLACE_ACTORNONE(A, 10, 0, value);
DATA_EMPLACE_ACTORNONE(A, 11, 0, value);
DATA_EMPLACE_ACTORNONE(A, 12, 0, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = env.db.init("B", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 1, 0, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = env.db.init("C", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 2, 0, value);
EXPECT_EQ(resultA, A);
}
}
}
SECTION("END") {
for (int i = 0; i<2; i++) {
bool value = (i == 0);

{
auto resultA = env.db.ends("A", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 0, 0, value);
DATA_EMPLACE_ACTORNONE(A, 7, 3, value);
DATA_EMPLACE_ACTORNONE(A, 8, 3, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = env.db.ends("B", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 1, 0, value);
DATA_EMPLACE_ACTORNONE(A, 3, 1, value);
DATA_EMPLACE_ACTORNONE(A, 5, 1, value);
DATA_EMPLACE_ACTORNONE(A, 9, 5, value);
DATA_EMPLACE_ACTORNONE(A, 10, 4, value);
DATA_EMPLACE_ACTORNONE(A, 11, 4, value);
DATA_EMPLACE_ACTORNONE(A, 12, 3, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = env.db.ends("C", (i == 0) ? ActivationLeaf : NoneLeaf);
Result A;
DATA_EMPLACE_ACTORNONE(A, 2, 0, value);
DATA_EMPLACE_ACTORNONE(A, 4, 1, value);
DATA_EMPLACE_ACTORNONE(A, 6, 1, value);
EXPECT_EQ(resultA, A);
}
}
}
SECTION("NEXT") {
for (int i = 0; i<2; i++) {
bool value = (i == 0);

{
auto resultA = rnext(env.db.timed_dataless_exists("A", (i == 0) ? ActivationLeaf : NoneLeaf));
Result A;
DATA_DECREMENT_EMPLACE_BACK(A, 7, 3, value);
DATA_DECREMENT_EMPLACE_BACK(A, 8, 3, value);
DATA_DECREMENT_EMPLACE_BACK(A, 9, 3, value);
DATA_DECREMENT_EMPLACE_BACK(A, 10, 2, value);
DATA_DECREMENT_EMPLACE_BACK(A, 11, 3, value);
DATA_DECREMENT_EMPLACE_BACK(A, 12, 2, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = rnext(env.db.timed_dataless_exists("B", (i == 0) ? ActivationLeaf : NoneLeaf));
Result A;
DATA_DECREMENT_EMPLACE_BACK(A, 3, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 5, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 7, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 7, 2, value);
DATA_DECREMENT_EMPLACE_BACK(A, 8, 2, value);
DATA_DECREMENT_EMPLACE_BACK(A, 9, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 9, 2, value);
DATA_DECREMENT_EMPLACE_BACK(A, 9, 4, value);
DATA_DECREMENT_EMPLACE_BACK(A, 9, 5, value);
DATA_DECREMENT_EMPLACE_BACK(A, 10, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 10, 3, value);
DATA_DECREMENT_EMPLACE_BACK(A, 10, 4, value);
DATA_DECREMENT_EMPLACE_BACK(A, 11, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 11, 2, value);
DATA_DECREMENT_EMPLACE_BACK(A, 11, 4, value);
DATA_DECREMENT_EMPLACE_BACK(A, 12, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 12, 3, value);
EXPECT_EQ(resultA, A);
}

{
auto resultA = rnext(env.db.timed_dataless_exists("C", (i == 0) ? ActivationLeaf : NoneLeaf));
Result A;
DATA_DECREMENT_EMPLACE_BACK(A, 4, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 6, 1, value);
DATA_DECREMENT_EMPLACE_BACK(A, 8, 1, value);
EXPECT_EQ(resultA, A);
}
}
}
}
Loading

0 comments on commit 7263a56

Please sign in to comment.