aboutsummaryrefslogtreecommitdiffstats
path: root/util/generic/serialized_enum_ut.cpp
diff options
context:
space:
mode:
authorswarmer <swarmer@yandex-team.ru>2022-02-10 16:46:31 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:31 +0300
commit317da38588b7898a99fd9168571408123350012b (patch)
tree25eebc31526019ad39a6c1b13f492963d97ba439 /util/generic/serialized_enum_ut.cpp
parent3b2241461d41d41ba1a706b0750c4f0f55c344f6 (diff)
downloadydb-317da38588b7898a99fd9168571408123350012b.tar.gz
Restoring authorship annotation for <swarmer@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'util/generic/serialized_enum_ut.cpp')
-rw-r--r--util/generic/serialized_enum_ut.cpp218
1 files changed, 109 insertions, 109 deletions
diff --git a/util/generic/serialized_enum_ut.cpp b/util/generic/serialized_enum_ut.cpp
index 3a94e1d471..0c1b276a38 100644
--- a/util/generic/serialized_enum_ut.cpp
+++ b/util/generic/serialized_enum_ut.cpp
@@ -1,120 +1,120 @@
-#include "serialized_enum.h"
-
+#include "serialized_enum.h"
+
#include <library/cpp/testing/unittest/registar.h>
-
-#include <util/generic/deque.h>
-#include <util/generic/map.h>
-#include <util/generic/typelist.h>
-#include <util/generic/vector.h>
-
-Y_UNIT_TEST_SUITE(TestSerializedEnum) {
- Y_UNIT_TEST(RepresentationTypes) {
- using namespace NEnumSerializationRuntime::NDetail;
-
- static_assert(TIsPromotable<int, int>::value, "int -> int");
- static_assert(TIsPromotable<char, int>::value, "char -> int");
- static_assert(TIsPromotable<unsigned short, unsigned long>::value, "unsigned short -> unsigned long");
- static_assert(TIsPromotable<i64, long long>::value, "i64 -> long long");
- static_assert(!TIsPromotable<ui64, ui8>::value, "ui64 -> ui8");
- static_assert(!TIsPromotable<i64, short>::value, "i64 -> short");
-
- enum EEmpty {
- };
+
+#include <util/generic/deque.h>
+#include <util/generic/map.h>
+#include <util/generic/typelist.h>
+#include <util/generic/vector.h>
+
+Y_UNIT_TEST_SUITE(TestSerializedEnum) {
+ Y_UNIT_TEST(RepresentationTypes) {
+ using namespace NEnumSerializationRuntime::NDetail;
+
+ static_assert(TIsPromotable<int, int>::value, "int -> int");
+ static_assert(TIsPromotable<char, int>::value, "char -> int");
+ static_assert(TIsPromotable<unsigned short, unsigned long>::value, "unsigned short -> unsigned long");
+ static_assert(TIsPromotable<i64, long long>::value, "i64 -> long long");
+ static_assert(!TIsPromotable<ui64, ui8>::value, "ui64 -> ui8");
+ static_assert(!TIsPromotable<i64, short>::value, "i64 -> short");
+
+ enum EEmpty {
+ };
UNIT_ASSERT_C((TTypeList<int, unsigned>::THave<typename TSelectEnumRepresentationType<EEmpty>::TType>::value), "empty enum using signed or unsigned integer underlying type");
-
- using TRepresentationTypeList = TTypeList<int, unsigned, long long, unsigned long long>;
-
- enum class ERegular {
- One = 1,
- Two = 2,
- Five = 5,
- };
+
+ using TRepresentationTypeList = TTypeList<int, unsigned, long long, unsigned long long>;
+
+ enum class ERegular {
+ One = 1,
+ Two = 2,
+ Five = 5,
+ };
UNIT_ASSERT(TRepresentationTypeList::THave<typename TSelectEnumRepresentationType<ERegular>::TType>::value);
-
+
enum class ESmall: unsigned char {
- Six = 6,
- };
+ Six = 6,
+ };
UNIT_ASSERT(TRepresentationTypeList::THave<typename TSelectEnumRepresentationType<ESmall>::TType>::value);
-
+
enum class EHugeUnsigned: ui64 {
- Value = 0,
- };
+ Value = 0,
+ };
UNIT_ASSERT(TRepresentationTypeList::THave<typename TSelectEnumRepresentationType<EHugeUnsigned>::TType>::value);
-
+
enum class EHugeSigned: i64 {
- Value = -2,
- };
+ Value = -2,
+ };
UNIT_ASSERT(TRepresentationTypeList::THave<typename TSelectEnumRepresentationType<EHugeSigned>::TType>::value);
- }
-
- Y_UNIT_TEST(MappedArrayView) {
+ }
+
+ Y_UNIT_TEST(MappedArrayView) {
enum class ETestEnum: signed char {
- Zero = 0,
- One = 1,
- Two = 2,
- Three = 3,
- Four = 4,
- Eleven = 11,
- };
- const TVector<int> values = {1, 2, 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2};
- const auto view = ::NEnumSerializationRuntime::TMappedArrayView<ETestEnum>{values};
-
- UNIT_ASSERT_VALUES_EQUAL(view.size(), values.size());
- UNIT_ASSERT_VALUES_EQUAL(view.empty(), false);
- UNIT_ASSERT_EQUAL(*view.begin(), ETestEnum::One);
- UNIT_ASSERT_EQUAL(view[6], ETestEnum::Eleven);
- UNIT_ASSERT_EXCEPTION(view.at(-1), std::out_of_range);
- UNIT_ASSERT_VALUES_EQUAL(sizeof(view[4]), sizeof(signed char));
- UNIT_ASSERT_VALUES_EQUAL(sizeof(values[4]), sizeof(int));
- for (const ETestEnum e : view) {
- UNIT_ASSERT_UNEQUAL(e, ETestEnum::Four);
- }
-
- const TVector<ETestEnum> typedValues = {ETestEnum::One, ETestEnum::Two, ETestEnum::Three, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Eleven, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Two};
- UNIT_ASSERT_EQUAL(typedValues, view.Materialize());
-
- const TDeque<ETestEnum> typedValuesDeque{typedValues.begin(), typedValues.end()};
- UNIT_ASSERT_EQUAL(typedValuesDeque, view.Materialize<TDeque>());
- }
-
- Y_UNIT_TEST(MappedDictView) {
+ Zero = 0,
+ One = 1,
+ Two = 2,
+ Three = 3,
+ Four = 4,
+ Eleven = 11,
+ };
+ const TVector<int> values = {1, 2, 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2};
+ const auto view = ::NEnumSerializationRuntime::TMappedArrayView<ETestEnum>{values};
+
+ UNIT_ASSERT_VALUES_EQUAL(view.size(), values.size());
+ UNIT_ASSERT_VALUES_EQUAL(view.empty(), false);
+ UNIT_ASSERT_EQUAL(*view.begin(), ETestEnum::One);
+ UNIT_ASSERT_EQUAL(view[6], ETestEnum::Eleven);
+ UNIT_ASSERT_EXCEPTION(view.at(-1), std::out_of_range);
+ UNIT_ASSERT_VALUES_EQUAL(sizeof(view[4]), sizeof(signed char));
+ UNIT_ASSERT_VALUES_EQUAL(sizeof(values[4]), sizeof(int));
+ for (const ETestEnum e : view) {
+ UNIT_ASSERT_UNEQUAL(e, ETestEnum::Four);
+ }
+
+ const TVector<ETestEnum> typedValues = {ETestEnum::One, ETestEnum::Two, ETestEnum::Three, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Eleven, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Zero, ETestEnum::Two};
+ UNIT_ASSERT_EQUAL(typedValues, view.Materialize());
+
+ const TDeque<ETestEnum> typedValuesDeque{typedValues.begin(), typedValues.end()};
+ UNIT_ASSERT_EQUAL(typedValuesDeque, view.Materialize<TDeque>());
+ }
+
+ Y_UNIT_TEST(MappedDictView) {
enum class ETestEnum: unsigned short {
- Zero = 0,
- One = 1,
- Two = 2,
- Three = 3,
- Four = 4,
- Eleven = 11,
- Fake = (unsigned short)(-1),
- };
- const TMap<unsigned, unsigned> map = {{0, 1}, {1, 2}, {2, 4}, {3, 8}, {4, 16}, {11, 2048}};
- const auto view = ::NEnumSerializationRuntime::NDetail::TMappedDictView<ETestEnum, unsigned, unsigned, decltype(map)>{map};
-
- UNIT_ASSERT_VALUES_EQUAL(view.size(), map.size());
- UNIT_ASSERT_VALUES_EQUAL(map.empty(), false);
-
- UNIT_ASSERT_EQUAL(view.begin()->first, ETestEnum::Zero);
- UNIT_ASSERT_VALUES_EQUAL(view.begin()->second, 1u);
-
- UNIT_ASSERT_VALUES_EQUAL(view.contains(ETestEnum::Fake), false);
- UNIT_ASSERT_VALUES_EQUAL(view.contains(ETestEnum::Four), true);
-
- UNIT_ASSERT_EXCEPTION(view.at(ETestEnum::Fake), std::out_of_range);
- UNIT_ASSERT_NO_EXCEPTION(view.at(ETestEnum::Eleven));
-
- UNIT_ASSERT_VALUES_EQUAL(view.at(ETestEnum::Three), 8u);
-
- unsigned mask = 0;
- unsigned sum = 0;
- for (const auto e : view) {
- mask |= e.second;
- sum += e.second;
- }
- UNIT_ASSERT_VALUES_EQUAL(mask, 2079);
- UNIT_ASSERT_VALUES_EQUAL(sum, 2079);
-
- const TMap<ETestEnum, unsigned> materialized = view.Materialize<TMap>();
- UNIT_ASSERT_VALUES_EQUAL(materialized.size(), map.size());
- UNIT_ASSERT_VALUES_EQUAL(materialized.at(ETestEnum::Four), 16);
- }
-}
+ Zero = 0,
+ One = 1,
+ Two = 2,
+ Three = 3,
+ Four = 4,
+ Eleven = 11,
+ Fake = (unsigned short)(-1),
+ };
+ const TMap<unsigned, unsigned> map = {{0, 1}, {1, 2}, {2, 4}, {3, 8}, {4, 16}, {11, 2048}};
+ const auto view = ::NEnumSerializationRuntime::NDetail::TMappedDictView<ETestEnum, unsigned, unsigned, decltype(map)>{map};
+
+ UNIT_ASSERT_VALUES_EQUAL(view.size(), map.size());
+ UNIT_ASSERT_VALUES_EQUAL(map.empty(), false);
+
+ UNIT_ASSERT_EQUAL(view.begin()->first, ETestEnum::Zero);
+ UNIT_ASSERT_VALUES_EQUAL(view.begin()->second, 1u);
+
+ UNIT_ASSERT_VALUES_EQUAL(view.contains(ETestEnum::Fake), false);
+ UNIT_ASSERT_VALUES_EQUAL(view.contains(ETestEnum::Four), true);
+
+ UNIT_ASSERT_EXCEPTION(view.at(ETestEnum::Fake), std::out_of_range);
+ UNIT_ASSERT_NO_EXCEPTION(view.at(ETestEnum::Eleven));
+
+ UNIT_ASSERT_VALUES_EQUAL(view.at(ETestEnum::Three), 8u);
+
+ unsigned mask = 0;
+ unsigned sum = 0;
+ for (const auto e : view) {
+ mask |= e.second;
+ sum += e.second;
+ }
+ UNIT_ASSERT_VALUES_EQUAL(mask, 2079);
+ UNIT_ASSERT_VALUES_EQUAL(sum, 2079);
+
+ const TMap<ETestEnum, unsigned> materialized = view.Materialize<TMap>();
+ UNIT_ASSERT_VALUES_EQUAL(materialized.size(), map.size());
+ UNIT_ASSERT_VALUES_EQUAL(materialized.at(ETestEnum::Four), 16);
+ }
+}