mirror of
https://github.com/IRBorisov/ConceptCore.git
synced 2025-06-27 01:30:37 +03:00
55 lines
1.8 KiB
C++
55 lines
1.8 KiB
C++
#define GTEST_LANG_CXX11 1
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
#include "ccl/semantic/RSForm.h"
|
|
#include "RSLHelper.hpp"
|
|
|
|
class UTRSOperationsFacet: public ::testing::Test {
|
|
protected:
|
|
using CstType = ccl::semantic::CstType;
|
|
using EquationOptions = ccl::ops::EquationOptions;
|
|
using RSForm = ccl::semantic::RSForm;
|
|
using rsOperationFacet = ccl::semantic::rsOperationFacet;
|
|
|
|
protected:
|
|
RSForm schema{};
|
|
rsOperationFacet& ops{ schema.Ops() };
|
|
const ccl::EntityUID x1{ schema.Emplace(CstType::base) };
|
|
const ccl::EntityUID x2{ schema.Emplace(CstType::base) };
|
|
const ccl::EntityUID s1{ schema.Emplace(CstType::structured, "B(X1)"_rs) };
|
|
};
|
|
|
|
TEST_F(UTRSOperationsFacet, Merge) {
|
|
const RSForm copy = schema;
|
|
const auto size = std::ssize(schema.Core());
|
|
const auto translations = ops.MergeWith(copy);
|
|
EXPECT_EQ(std::ssize(translations), size);
|
|
EXPECT_EQ(std::ssize(schema.Core()), 2 * size);
|
|
EXPECT_NE(translations(x1), x1);
|
|
EXPECT_NE(translations(x2), x2);
|
|
EXPECT_NE(translations(s1), s1);
|
|
}
|
|
|
|
TEST_F(UTRSOperationsFacet, MergeSelf) {
|
|
const auto size = std::ssize(schema.Core());
|
|
const auto translations = ops.MergeWith(schema);
|
|
EXPECT_EQ(std::ssize(translations), size);
|
|
EXPECT_EQ(std::ssize(schema.Core()), 2 * size);
|
|
}
|
|
|
|
TEST_F(UTRSOperationsFacet, IsEquatable) {
|
|
EXPECT_TRUE(ops.IsEquatable(EquationOptions{ x1, x2 }));
|
|
EXPECT_TRUE(ops.IsEquatable(EquationOptions{ x2, s1 }));
|
|
EXPECT_FALSE(ops.IsEquatable(EquationOptions{ x1, s1 }));
|
|
EXPECT_FALSE(ops.IsEquatable(EquationOptions{}));
|
|
EXPECT_FALSE(ops.IsEquatable(EquationOptions{ x1, x1 }));
|
|
}
|
|
|
|
TEST_F(UTRSOperationsFacet, Equate) {
|
|
EXPECT_FALSE(ops.Equate(EquationOptions{}).has_value());
|
|
EXPECT_FALSE(ops.Equate(EquationOptions{x1, x1}).has_value());
|
|
EXPECT_TRUE(ops.Equate(EquationOptions{x1, x2}).has_value());
|
|
EXPECT_FALSE(schema.Contains(x1));
|
|
EXPECT_TRUE(schema.Contains(x2));
|
|
} |