From 16d75fe48c8211cf7d1a720d8952aecb388e5670 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Sun, 19 Nov 2023 15:00:39 +0100 Subject: [PATCH] feat: add enum class test --- chapters/chapter_02/CMakeLists.txt | 3 ++- chapters/chapter_02/src/chapter_2_tests.cpp | 2 ++ chapters/chapter_02/src/enum.cpp | 23 +++++++++++++++++++++ chapters/chapter_02/src/enum.h | 9 ++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 chapters/chapter_02/src/enum.cpp create mode 100644 chapters/chapter_02/src/enum.h diff --git a/chapters/chapter_02/CMakeLists.txt b/chapters/chapter_02/CMakeLists.txt index 7134a18..9350770 100644 --- a/chapters/chapter_02/CMakeLists.txt +++ b/chapters/chapter_02/CMakeLists.txt @@ -11,7 +11,8 @@ add_library( src/type_inference.cpp src/variadic_templates.cpp src/delegate_constructor.cpp - src/inheritance_constructor.cpp) + src/inheritance_constructor.cpp + src/enum.cpp) target_compile_features(chapter_02 PUBLIC cxx_std_20) diff --git a/chapters/chapter_02/src/chapter_2_tests.cpp b/chapters/chapter_02/src/chapter_2_tests.cpp index 5b321a7..802e933 100644 --- a/chapters/chapter_02/src/chapter_2_tests.cpp +++ b/chapters/chapter_02/src/chapter_2_tests.cpp @@ -1,6 +1,7 @@ #include "chapter_2_tests.h" #include "constexp.h" #include "delegate_constructor.h" +#include "enum.h" #include "if_constexpr.h" #include "ifswitch.h" #include "inheritance_constructor.h" @@ -25,6 +26,7 @@ std::vector> chapter_2_tests() { chapter_2_tests.emplace_back(std::make_unique()); chapter_2_tests.emplace_back(std::make_unique()); chapter_2_tests.emplace_back(std::make_unique()); + chapter_2_tests.emplace_back(std::make_unique()); return chapter_2_tests; } diff --git a/chapters/chapter_02/src/enum.cpp b/chapters/chapter_02/src/enum.cpp new file mode 100644 index 0000000..3a1428d --- /dev/null +++ b/chapters/chapter_02/src/enum.cpp @@ -0,0 +1,23 @@ +#include "enum.h" +#include +#include + +enum class MyEnum : unsigned int { + Variant_1 = 23, + Variant_2 = 42, + Variant_3 = Variant_2, +}; + +std::ostream &operator<<(std::ostream &os, const MyEnum &myEnum) { + os << static_cast::type>(myEnum); + return os; +} + +void EnumTest::run() { + + auto myEnum_1 = MyEnum::Variant_1; + std::cout << "myEnum_1 is " << myEnum_1 << std::endl; + + auto myEnum_2 = MyEnum::Variant_2; + std::cout << "myEnum_2 is " << myEnum_2 << std::endl; +} diff --git a/chapters/chapter_02/src/enum.h b/chapters/chapter_02/src/enum.h new file mode 100644 index 0000000..cbad2eb --- /dev/null +++ b/chapters/chapter_02/src/enum.h @@ -0,0 +1,9 @@ +#pragma once + +#include "chapter_interface.h" + +class EnumTest : public ChapterTest { +public: + virtual void run() override; + virtual const char *name() const override { return "Enum test"; } +};