diff options
author | max42 <max42@yandex-team.com> | 2023-07-29 00:02:16 +0300 |
---|---|---|
committer | max42 <max42@yandex-team.com> | 2023-07-29 00:02:16 +0300 |
commit | 73b89de71748a21e102d27b9f3ed1bf658766cb5 (patch) | |
tree | 188bbd2d622fa91cdcbb1b6d6d77fbc84a0646f5 /library/cpp/skiff/unittests/skiff_schema_ut.cpp | |
parent | 528e321bcc2a2b67b53aeba58c3bd88305a141ee (diff) | |
download | ydb-73b89de71748a21e102d27b9f3ed1bf658766cb5.tar.gz |
YT-19210: expose YQL shared library for YT.
After this, a new target libyqlplugin.so appears. in open-source cmake build.
Diff in open-source YDB repo looks like the following: https://paste.yandex-team.ru/f302bdb4-7ef2-4362-91c7-6ca45f329264
Diffstat (limited to 'library/cpp/skiff/unittests/skiff_schema_ut.cpp')
-rw-r--r-- | library/cpp/skiff/unittests/skiff_schema_ut.cpp | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/library/cpp/skiff/unittests/skiff_schema_ut.cpp b/library/cpp/skiff/unittests/skiff_schema_ut.cpp new file mode 100644 index 0000000000..c20a560dfc --- /dev/null +++ b/library/cpp/skiff/unittests/skiff_schema_ut.cpp @@ -0,0 +1,148 @@ +#include <library/cpp/skiff/skiff.h> +#include <library/cpp/skiff/skiff_schema.h> + +#include <library/cpp/testing/unittest/registar.h> + +#include <util/stream/buffer.h> + +using namespace NSkiff; + +//////////////////////////////////////////////////////////////////////////////// + +template<> +void Out<TSkiffSchema>(IOutputStream& s, const TSkiffSchema& schema) +{ + s << "TSkiffSchema:" << GetShortDebugString(schema.shared_from_this()); +} + +//////////////////////////////////////////////////////////////////////////////// + +Y_UNIT_TEST_SUITE(TSkiffSchemaTestSuite) { + Y_UNIT_TEST(TestIntEqual) + { + std::shared_ptr<TSkiffSchema> schema1 = CreateSimpleTypeSchema(EWireType::Uint64); + schema1->SetName("schema"); + + std::shared_ptr<TSkiffSchema> schema2 = CreateSimpleTypeSchema(EWireType::Uint64); + schema2->SetName("schema"); + + UNIT_ASSERT_VALUES_EQUAL(*schema1, *schema2); + } + + Y_UNIT_TEST(TestTupleEqual) + { + std::shared_ptr<TSkiffSchema> schema1 = CreateTupleSchema({ + CreateSimpleTypeSchema(EWireType::Int64), + CreateSimpleTypeSchema(EWireType::String32), + }); + + std::shared_ptr<TSkiffSchema> schema2 = CreateTupleSchema({ + CreateSimpleTypeSchema(EWireType::Int64), + CreateSimpleTypeSchema(EWireType::String32), + }); + + Cerr << *schema1 << Endl; + + schema1->SetName("schema"); + UNIT_ASSERT_VALUES_UNEQUAL(*schema1, *schema2); + + schema2->SetName("schema"); + UNIT_ASSERT_VALUES_EQUAL(*schema1, *schema2); + } + + Y_UNIT_TEST(TestHashes) + { + TSet<size_t> hashes; + + auto schema = CreateSimpleTypeSchema(EWireType::Uint64); + schema->SetName("schema"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema)); + + schema = CreateSimpleTypeSchema(EWireType::Uint64); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema)); + + auto schema2 = CreateTupleSchema({ + CreateSimpleTypeSchema(EWireType::Int64), + CreateSimpleTypeSchema(EWireType::String32), + }); + schema2->SetName("s"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema2)); + + schema2->SetName("s0"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema2)); + + schema2->SetName("s"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema2)); + + auto schema3 = CreateRepeatedVariant16Schema({ + CreateSimpleTypeSchema(EWireType::Int64), + schema2, + }); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema3)); + + schema3->SetName("kek"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema3)); + + auto schema4 = CreateRepeatedVariant8Schema({ + CreateSimpleTypeSchema(EWireType::Int64), + schema2, + }); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema4)); + + schema4->SetName("kek"); + hashes.insert(THash<NSkiff::TSkiffSchema>()(*schema4)); + + UNIT_ASSERT_VALUES_EQUAL(hashes.size(), 8); + } + + Y_UNIT_TEST(TestDifferent) + { + TVector<std::shared_ptr<TSkiffSchema>> schemas; + + auto schema = CreateSimpleTypeSchema(EWireType::Uint64); + schema->SetName("schema"); + schemas.push_back(schema); + schemas.push_back(CreateSimpleTypeSchema(EWireType::Uint64)); + + auto schema2 = CreateTupleSchema({ + CreateSimpleTypeSchema(EWireType::Int64), + CreateSimpleTypeSchema(EWireType::String32), + }); + schema2->SetName("s"); + schemas.push_back(schema2); + + auto schema3 = CreateTupleSchema({ + CreateSimpleTypeSchema(EWireType::Int64), + CreateSimpleTypeSchema(EWireType::String32), + }); + schema3->SetName("s0"); + schemas.push_back(schema3); + + auto schema4 = CreateRepeatedVariant16Schema({ + CreateSimpleTypeSchema(EWireType::Int64), + schema2, + }); + schemas.push_back(schema4); + + auto schema5 = CreateRepeatedVariant16Schema({ + CreateSimpleTypeSchema(EWireType::Int64), + schema2, + }); + schema5->SetName("kek"); + schemas.push_back(schema5); + + auto schema6 = CreateRepeatedVariant8Schema({ + CreateSimpleTypeSchema(EWireType::Int64), + schema2, + }); + schemas.push_back(schema6); + + for (size_t i = 0; i < schemas.size(); ++i) { + for (size_t j = i + 1; j < schemas.size(); ++j) { + UNIT_ASSERT_VALUES_UNEQUAL(*schemas[i], *schemas[j]); + } + } + } +} + +//////////////////////////////////////////////////////////////////////////////// |