#include #include "mkql_functions.h" #include namespace NKikimr::NMiniKQL { Y_UNIT_TEST_SUITE(TMiniKQLArrowFunctions) { Y_UNIT_TEST(Add) { TScopedAlloc alloc(__LOCATION__); TTypeEnvironment env(alloc); auto builtins = CreateBuiltinRegistry(); auto uint64Type = TDataType::Create(NUdf::GetDataTypeInfo(NUdf::EDataSlot::Uint64).TypeId, env); auto uint64TypeOpt = TOptionalType::Create(uint64Type, env); auto scalarType = TBlockType::Create(uint64Type, TBlockType::EShape::Scalar, env); auto arrayType = TBlockType::Create(uint64Type, TBlockType::EShape::Many, env); auto scalarTypeOpt = TBlockType::Create(uint64TypeOpt, TBlockType::EShape::Scalar, env); auto arrayTypeOpt = TBlockType::Create(uint64TypeOpt, TBlockType::EShape::Many, env); UNIT_ASSERT(!FindArrowFunction("_Add_", {}, scalarType, *builtins)); UNIT_ASSERT(!FindArrowFunction("Add", {}, scalarType, *builtins)); UNIT_ASSERT(!FindArrowFunction("Add", TVector{ scalarType }, scalarType, *builtins)); UNIT_ASSERT(!FindArrowFunction("Add", TVector{ arrayType }, arrayType, *builtins)); UNIT_ASSERT(!FindArrowFunction("Add", TVector{ scalarTypeOpt }, scalarType, *builtins)); UNIT_ASSERT(!FindArrowFunction("Add", TVector{ arrayTypeOpt }, arrayType, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayType, arrayType }, arrayType, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarType, arrayType }, arrayType, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayType, scalarType }, arrayType, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarType, scalarType }, scalarType, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayType, arrayTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarType, arrayTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayType, scalarTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarType, scalarTypeOpt }, scalarTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayTypeOpt, arrayType }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarTypeOpt, arrayType }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayTypeOpt, scalarType }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarTypeOpt, scalarType }, scalarTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayTypeOpt, arrayTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarTypeOpt, arrayTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ arrayTypeOpt, scalarTypeOpt }, arrayTypeOpt, *builtins)); UNIT_ASSERT(FindArrowFunction("Add", TVector{ scalarTypeOpt, scalarTypeOpt }, scalarTypeOpt, *builtins)); } } }