Exteor/test/src/testTextProcessor.cpp

63 lines
2.4 KiB
C++
Raw Normal View History

2024-06-07 20:30:06 +03:00
#include "stdafx.h"
#include "ccl/lang/Literals.h"
#include "xtr/core/PyCore.h"
#include "xtr/core/PyTextProcessor.h"
using ccl::operator""_c17;
using ccl::lang::operator""_form;
class UTPyTextProcessor : public ::testing::Test {
protected:
using PyCore = cxxpython::PyCore;
using PyTextProcessor = xtr::core::PyTextProcessor;
using Morphology = ccl::lang::Morphology;
protected:
PyCore& python{ PyCore::Instance() };
std::unique_ptr<PyTextProcessor> processor{ nullptr };
void SetUp() override {
ASSERT_TRUE(python.Start());
python.LoadModule("cctext", "cctext");
processor = std::make_unique<PyTextProcessor>();
processor->InitModule("cctext");
}
void TearDown() override {
processor = nullptr;
python.Stop();
}
};
TEST_F(UTPyTextProcessor, Inflect) {
EXPECT_EQ(processor->Inflect("", Morphology{}), "");
EXPECT_EQ(processor->Inflect("", "sing,datv"_form), "");
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, Morphology{}), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, "sing,datv"_form), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"_c17, "plur,datv"_form), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"_c17, "ADJF,pres,datv"_form), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, "past,masc"_form), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->Inflect(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, "past,masc"_form), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
}
TEST_F(UTPyTextProcessor, InflectDependant) {
EXPECT_EQ(processor->InflectDependant("", ""), "");
EXPECT_EQ(processor->InflectDependant("", "invalid"), "");
EXPECT_EQ(processor->InflectDependant("invalid", ""), "invalid");
EXPECT_EQ(processor->InflectDependant("", u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17), "");
EXPECT_EQ(processor->InflectDependant(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, ""), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->InflectDependant(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
EXPECT_EQ(processor->InflectDependant(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17), u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17);
}
TEST_F(UTPyTextProcessor, IsSubstr) {
EXPECT_TRUE(processor->IsSubstr("", ""));
EXPECT_TRUE(processor->IsSubstr("", "123"));
EXPECT_FALSE(processor->IsSubstr("4", "123"));
EXPECT_TRUE(processor->IsSubstr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17));
EXPECT_TRUE(processor->IsSubstr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17, u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"_c17));
}