aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp
diff options
context:
space:
mode:
authorimunkin <imunkin@yandex-team.com>2024-11-08 10:00:23 +0300
committerimunkin <imunkin@yandex-team.com>2024-11-08 10:12:13 +0300
commita784a2f943d6e15caa6241e2e96d80aac6dbf375 (patch)
tree05f1e5366c916b988a8afb75bdab8ddeee0f6e6d /yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp
parentd70137a7b530ccaa52834274913bbb5a3d1ca06e (diff)
downloadydb-a784a2f943d6e15caa6241e2e96d80aac6dbf375.tar.gz
Move yql/udfs/common/ to /yql/essentials YQL-19206
Except the following directories: * clickhouse/client * datetime * knn * roaring commit_hash:c7da95636144d28db109d6b17ddc762e9bacb59f
Diffstat (limited to 'yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp')
-rw-r--r--yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp b/yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp
new file mode 100644
index 0000000000..e9f5971c78
--- /dev/null
+++ b/yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp
@@ -0,0 +1,85 @@
+#include "py_variant.h"
+#include "ut3/py_test_engine.h"
+#include <yql/essentials/minikql/mkql_type_ops.h>
+
+#include <library/cpp/testing/unittest/registar.h>
+
+
+using namespace NPython;
+
+Y_UNIT_TEST_SUITE(TPyTzDateTest) {
+ Y_UNIT_TEST(FromDate) {
+ TPythonTestEngine engine;
+ engine.ToMiniKQL<NUdf::TTzDate>(
+ "def Test():\n"
+ " return (2, 'Europe/Moscow')\n",
+ [](const NUdf::TUnboxedValuePod& value) {
+ UNIT_ASSERT(value);
+ UNIT_ASSERT_VALUES_EQUAL(value.Get<ui16>(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(value.GetTimezoneId(), NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ });
+ }
+
+ Y_UNIT_TEST(FromDatetime) {
+ TPythonTestEngine engine;
+ engine.ToMiniKQL<NUdf::TTzDatetime>(
+ "def Test():\n"
+ " return (2, 'Europe/Moscow')\n",
+ [](const NUdf::TUnboxedValuePod& value) {
+ UNIT_ASSERT(value);
+ UNIT_ASSERT_VALUES_EQUAL(value.Get<ui32>(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(value.GetTimezoneId(), NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ });
+ }
+
+ Y_UNIT_TEST(FromTimestamp) {
+ TPythonTestEngine engine;
+ engine.ToMiniKQL<NUdf::TTzTimestamp>(
+ "def Test():\n"
+ " return (2, 'Europe/Moscow')\n",
+ [](const NUdf::TUnboxedValuePod& value) {
+ UNIT_ASSERT(value);
+ UNIT_ASSERT_VALUES_EQUAL(value.Get<ui64>(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(value.GetTimezoneId(), NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ });
+ }
+
+ Y_UNIT_TEST(ToDate) {
+ TPythonTestEngine engine;
+ engine.ToPython<NUdf::TTzDate>(
+ [](const TType* /*type*/, const NUdf::IValueBuilder& /*vb*/) {
+ auto ret = NUdf::TUnboxedValuePod((ui16)2);
+ ret.SetTimezoneId(NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ return ret;
+ },
+ "def Test(value):\n"
+ " assert isinstance(value, tuple)\n"
+ " assert value == (2, 'Europe/Moscow')\n");
+ }
+
+ Y_UNIT_TEST(ToDatetime) {
+ TPythonTestEngine engine;
+ engine.ToPython<NUdf::TTzDatetime>(
+ [](const TType* /*type*/, const NUdf::IValueBuilder& /*vb*/) {
+ auto ret = NUdf::TUnboxedValuePod((ui32)2);
+ ret.SetTimezoneId(NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ return ret;
+ },
+ "def Test(value):\n"
+ " assert isinstance(value, tuple)\n"
+ " assert value == (2, 'Europe/Moscow')\n");
+ }
+
+ Y_UNIT_TEST(ToTimestamp) {
+ TPythonTestEngine engine;
+ engine.ToPython<NUdf::TTzTimestamp>(
+ [](const TType* /*type*/, const NUdf::IValueBuilder& /*vb*/) {
+ auto ret = NUdf::TUnboxedValuePod((ui64)2);
+ ret.SetTimezoneId(NKikimr::NMiniKQL::GetTimezoneId("Europe/Moscow"));
+ return ret;
+ },
+ "def Test(value):\n"
+ " assert isinstance(value, tuple)\n"
+ " assert value == (2, 'Europe/Moscow')\n");
+ }
+}