aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/mkql_node_cast_ut.cpp
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2024-11-07 04:19:26 +0300
committervvvv <vvvv@yandex-team.com>2024-11-07 04:29:50 +0300
commit2661be00f3bc47590fda9218bf0386d6355c8c88 (patch)
tree3d316c07519191283d31c5f537efc6aabb42a2f0 /yql/essentials/minikql/mkql_node_cast_ut.cpp
parentcf2a23963ac10add28c50cc114fbf48953eca5aa (diff)
downloadydb-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.cpp73
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