aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/comp_nodes/ut/mkql_convert_ut.cpp
blob: bc095f4775c62cb7f4b32e5b054b586380dd7280 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "mkql_computation_node_ut.h"

namespace NKikimr {
namespace NMiniKQL {

Y_UNIT_TEST_SUITE(TMiniKQLConvertTest) {
    Y_UNIT_TEST_LLVM(ConvertUI8ToBool) {
        TSetup<LLVM> setup;
        TProgramBuilder& pb = *setup.PgmBuilder;

        const auto data0 = pb.NewDataLiteral(static_cast<ui8>(0U));
        const auto data1 = pb.NewDataLiteral(static_cast<ui8>(1U));
        const auto data2 = pb.NewDataLiteral(static_cast<ui8>(2U));
        const auto data3 = pb.NewDataLiteral(static_cast<ui8>(3U));
        const auto data4 = pb.NewDataLiteral(static_cast<ui8>(4U));
        const auto type = pb.NewDataType(NUdf::TDataType<ui8>::Id);
        const auto list = pb.NewList(type, {data0, data1, data2, data3, data4});

        const auto pgmReturn = pb.Map(list, [&pb](const TRuntimeNode item) {
            return pb.Convert(item, pb.NewDataType(NUdf::TDataType<bool>::Id));
        });
        const auto graph = setup.BuildGraph(pgmReturn);
        const auto iterator = graph->GetValue().GetListIterator();

        NUdf::TUnboxedValue item;
        UNIT_ASSERT(iterator.Next(item));
        UNIT_ASSERT_VALUES_EQUAL(item.Get<ui8>(), 0);
        while (iterator.Next(item)) {
            UNIT_ASSERT_VALUES_EQUAL(item.Get<ui8>(), 1);
        }
        UNIT_ASSERT(!iterator.Next(item));
        UNIT_ASSERT(!iterator.Next(item));
    }
} // Y_UNIT_TEST_SUITE

} // namespace NMiniKQL
} // namespace NKikimr