diff options
author | vvvv <vvvv@yandex-team.com> | 2024-11-07 04:19:26 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2024-11-07 04:29:50 +0300 |
commit | 2661be00f3bc47590fda9218bf0386d6355c8c88 (patch) | |
tree | 3d316c07519191283d31c5f537efc6aabb42a2f0 /yql/essentials/minikql/mkql_node_cast_ut.cpp | |
parent | cf2a23963ac10add28c50cc114fbf48953eca5aa (diff) | |
download | ydb-2661be00f3bc47590fda9218bf0386d6355c8c88.tar.gz |
Moved yql/minikql YQL-19206
init
[nodiff:caesar]
commit_hash:d1182ef7d430ccf7e4d37ed933c7126d7bd5d6e4
Diffstat (limited to 'yql/essentials/minikql/mkql_node_cast_ut.cpp')
-rw-r--r-- | yql/essentials/minikql/mkql_node_cast_ut.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/yql/essentials/minikql/mkql_node_cast_ut.cpp b/yql/essentials/minikql/mkql_node_cast_ut.cpp new file mode 100644 index 0000000000..60c563888d --- /dev/null +++ b/yql/essentials/minikql/mkql_node_cast_ut.cpp @@ -0,0 +1,73 @@ +#include "mkql_node.h" +#include "mkql_node_cast.h" +#include "mkql_node_builder.h" + +#include <library/cpp/testing/unittest/registar.h> + + +namespace NKikimr { +namespace NMiniKQL { + +class TMiniKQLNodeCast: public TTestBase +{ + UNIT_TEST_SUITE(TMiniKQLNodeCast); + UNIT_TEST(AsTypeTest); + UNIT_TEST_EXCEPTION(BadAsTypeTest, yexception); + UNIT_TEST(AsValueTest); + UNIT_TEST_EXCEPTION(BadAsValueTest, yexception); + UNIT_TEST_SUITE_END(); + + void AsTypeTest() { + TRuntimeNode node = Uint32AsNode(123); + TDataType* type = AS_TYPE(TDataType, node); + UNIT_ASSERT_EQUAL(type, node.GetStaticType()); + UNIT_ASSERT_EQUAL(type, node.GetNode()->GetType()); + } + + void BadAsTypeTest() { + TRuntimeNode node = Uint32AsNode(123); + TCallableType* type = AS_TYPE(TCallableType, node); + Y_UNUSED(type); + } + + void AsValueTest() { + TRuntimeNode dataNode = Uint32AsNode(123); + + TCallableType* ctype = TCallableType::Create( + "callable", dataNode.GetStaticType(), + 0, nullptr, nullptr, Env); + + TCallable* callable = TCallable::Create(dataNode, ctype, Env); + + TRuntimeNode node(callable, false); + node.Freeze(); + + TDataLiteral* value = AS_VALUE(TDataLiteral, node); + UNIT_ASSERT_EQUAL(value, dataNode.GetNode()); + } + + void BadAsValueTest() { + TRuntimeNode node = Uint32AsNode(123); + TListLiteral* list = AS_VALUE(TListLiteral, node); + Y_UNUSED(list); + } + + TMiniKQLNodeCast() + : Alloc(__LOCATION__) + , Env(Alloc) + {} + +private: + TRuntimeNode Uint32AsNode(ui32 value) { + return TRuntimeNode(BuildDataLiteral(NUdf::TUnboxedValuePod(value), NUdf::EDataSlot::Uint32, Env), true); + } + +private: + TScopedAlloc Alloc; + TTypeEnvironment Env; +}; + +UNIT_TEST_SUITE_REGISTRATION(TMiniKQLNodeCast); + +} // namespace NMiniKQL +} // namespace NKikimr |