Something went wrong. Try again.
discord chat exporter
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111#include <gtest/gtest.h>
#include <fmt/format.h>
#include <dce-core/prelude.hpp>#include <dce-core/concepts.hpp>#include <dce-core/enum_flagset.hpp>
using namespace dce::core;
enum class Typical : u8{ R, G, B};
enum class FunnyRGB : u16{ R = 63, G = 31, B = 1,};
template<dce::Enum Enum>struct EnumFlagSetTest : public ::testing::Test{protected:};
using Types = ::testing::Types< Typical, FunnyRGB >;
TYPED_TEST_SUITE(EnumFlagSetTest, Types);
TYPED_TEST(EnumFlagSetTest, ConstructsWithNone){ auto set = EnumFlagSet<TypeParam>::none(); ASSERT_TRUE(not set.contains(TypeParam::R)); ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(not set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, ConstructsWithAll){ auto set = EnumFlagSet<TypeParam>::all(); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(set.contains(TypeParam::G)); ASSERT_TRUE(set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, ConstructsWithOnlyA){ auto set = EnumFlagSet<TypeParam>::only(TypeParam::R); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(not set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, ConstructsWithOnlyAAndC){ auto set = EnumFlagSet<TypeParam>::only(TypeParam::R, TypeParam::B); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, ConstructsWithOnlyAAndBAndC){ auto set = EnumFlagSet<TypeParam>::only(TypeParam::R, TypeParam::G, TypeParam::B); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(set.contains(TypeParam::G)); ASSERT_TRUE(set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, ClearsSetsProperly){ auto set = EnumFlagSet<TypeParam>::only(TypeParam::R); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(not set.contains(TypeParam::B));
set.set(TypeParam::B);
ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(set.contains(TypeParam::B));
set.clear(TypeParam::R); set.set(TypeParam::G);
ASSERT_TRUE(not set.contains(TypeParam::R)); ASSERT_TRUE(set.contains(TypeParam::G)); ASSERT_TRUE(set.contains(TypeParam::B));}
TYPED_TEST(EnumFlagSetTest, WithAndWithout){ auto set = EnumFlagSet<TypeParam>::only(TypeParam::R); ASSERT_TRUE(set.contains(TypeParam::R)); ASSERT_TRUE(not set.without(TypeParam::R).contains(TypeParam::R)); ASSERT_TRUE(set.contains(TypeParam::R));
ASSERT_TRUE(not set.contains(TypeParam::G)); ASSERT_TRUE(set.with(TypeParam::G).contains(TypeParam::G));
ASSERT_TRUE(set.with(TypeParam::B).contains(TypeParam::B)); ASSERT_TRUE(not set.contains(TypeParam::B));}