diff options
author | imunkin <imunkin@yandex-team.com> | 2024-11-08 10:00:23 +0300 |
---|---|---|
committer | imunkin <imunkin@yandex-team.com> | 2024-11-08 10:12:13 +0300 |
commit | a784a2f943d6e15caa6241e2e96d80aac6dbf375 (patch) | |
tree | 05f1e5366c916b988a8afb75bdab8ddeee0f6e6d /yql/essentials/udfs/common/python/bindings/py_tzdate_ut.cpp | |
parent | d70137a7b530ccaa52834274913bbb5a3d1ca06e (diff) | |
download | ydb-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.cpp | 85 |
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"); + } +} |