#include <tools/enum_parser/parse_enum/benchmark_build/lib/enum_huge.h_serialized.h>
#include <tools/enum_parser/parse_enum/benchmark_build/lib/enum_enormous.h_serialized.h>
#include <library/cpp/testing/unittest/registar.h>
#include <util/generic/serialized_enum.h>
#include <util/string/cast.h>


namespace {
    template <class EEnum>
    void EnumerateEnum() {
        const auto& allValues = GetEnumAllValues<EEnum>();

        TString s;
        for (EEnum e : allValues) {
            UNIT_ASSERT_NO_EXCEPTION(s = ToString(e));
            UNIT_ASSERT_NO_EXCEPTION(e = FromString<EEnum>(s));
        }

        EEnum tmp;
        UNIT_ASSERT_VALUES_EQUAL(TryFromString<EEnum>("", tmp), false);
    }
}

Y_UNIT_TEST_SUITE(TTestHugeEnums) {
    Y_UNIT_TEST(Huge) {
        EnumerateEnum<NHuge::EHuge>();
    }
    Y_UNIT_TEST(Enormous) {
        EnumerateEnum<EEnormous>();
    }
};