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 {
|
2024-06-14 20:30:09 +03:00
|
|
|
|
static CString path{ "C:\\Program Files\\Python312\\" };
|
|
|
|
|
ASSERT_TRUE(python.Start(path));
|
|
|
|
|
ASSERT_TRUE(python.LoadModule("cctext", "cctext"));
|
2024-06-07 20:30:06 +03:00
|
|
|
|
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));
|
|
|
|
|
}
|