feat: add structured binding test

This commit is contained in:
Michael Mandl 2023-10-21 17:11:05 +02:00
parent 88742436a1
commit 543b4b832a
Signed by: mandlm
GPG key ID: 4AA25D647AA54CC7
4 changed files with 36 additions and 11 deletions

View file

@ -1,5 +1,5 @@
add_library(chapter_02 src/initlist.cpp src/null.cpp src/constexp.cpp add_library(chapter_02 src/initlist.cpp src/null.cpp src/constexp.cpp
src/ifswitch.cpp) src/ifswitch.cpp src/structured_binding.cpp)
target_compile_features(chapter_02 PUBLIC cxx_std_20) target_compile_features(chapter_02 PUBLIC cxx_std_20)

View file

@ -0,0 +1,8 @@
#pragma once
#include "chapter_interface.h"
class StructuredBindingTest : public ChapterTest {
public:
virtual void run() override;
};

View file

@ -0,0 +1,12 @@
#include "structured_binding.h"
#include <cstdint>
#include <iostream>
#include <tuple>
std::tuple<const char *, uint32_t> func() { return {"32", 32}; }
void StructuredBindingTest::run() {
const auto &[str, val] = func();
std::cout << "Bound values: " << str << " and " << val << std::endl;
}

View file

@ -1,13 +1,13 @@
#include <cstdlib> #include <cstdlib>
#include <iostream> #include <iostream>
#include <memory> #include <memory>
#include <string>
#include <vector> #include <vector>
#include "constexp.h" #include "constexp.h"
#include "ifswitch.h" #include "ifswitch.h"
#include "initlist.h" #include "initlist.h"
#include "null.h" #include "null.h"
#include "structured_binding.h"
#include "version.h" #include "version.h"
int main(int argc, char **argv) { int main(int argc, char **argv) {
@ -15,16 +15,21 @@ int main(int argc, char **argv) {
std::cout << "Running " << PROJECT_NAME << ", version " << VERSION << "\n" std::cout << "Running " << PROJECT_NAME << ", version " << VERSION << "\n"
<< std::endl; << std::endl;
std::vector<std::tuple<std::string, std::unique_ptr<ChapterTest>>> std::vector<std::tuple<const char *, std::unique_ptr<ChapterTest>>>
chapterTests; chapter_2_tests;
chapterTests.emplace_back("Null test", std::make_unique<NullTest>());
chapterTests.emplace_back("If/Switch test", std::make_unique<IfswitchTest>());
chapterTests.emplace_back("Constexpr test", std::make_unique<ConstExpTest>());
chapterTests.emplace_back("Initializer list test",
std::make_unique<InitListTest>());
for (auto &[name, test] : chapterTests) { chapter_2_tests.emplace_back("Nullptr test", std::make_unique<NullTest>());
std::cout << "\n" << name << std::endl; chapter_2_tests.emplace_back("If/Switch test",
std::make_unique<IfswitchTest>());
chapter_2_tests.emplace_back("Constexpr test",
std::make_unique<ConstExpTest>());
chapter_2_tests.emplace_back("Initializer list test",
std::make_unique<InitListTest>());
chapter_2_tests.emplace_back("Structured binding test",
std::make_unique<StructuredBindingTest>());
for (auto &[test_description, test] : chapter_2_tests) {
std::cout << "\n" << test_description << ":" << std::endl;
test->run(); test->run();
} }