feat: add structured binding test
This commit is contained in:
parent
88742436a1
commit
543b4b832a
@ -1,5 +1,5 @@
|
||||
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)
|
||||
|
||||
|
8
chapters/chapter_02/include/structured_binding.h
Normal file
8
chapters/chapter_02/include/structured_binding.h
Normal file
@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "chapter_interface.h"
|
||||
|
||||
class StructuredBindingTest : public ChapterTest {
|
||||
public:
|
||||
virtual void run() override;
|
||||
};
|
12
chapters/chapter_02/src/structured_binding.cpp
Normal file
12
chapters/chapter_02/src/structured_binding.cpp
Normal 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;
|
||||
}
|
25
src/main.cpp
25
src/main.cpp
@ -1,13 +1,13 @@
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "constexp.h"
|
||||
#include "ifswitch.h"
|
||||
#include "initlist.h"
|
||||
#include "null.h"
|
||||
#include "structured_binding.h"
|
||||
#include "version.h"
|
||||
|
||||
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::endl;
|
||||
|
||||
std::vector<std::tuple<std::string, std::unique_ptr<ChapterTest>>>
|
||||
chapterTests;
|
||||
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>());
|
||||
std::vector<std::tuple<const char *, std::unique_ptr<ChapterTest>>>
|
||||
chapter_2_tests;
|
||||
|
||||
for (auto &[name, test] : chapterTests) {
|
||||
std::cout << "\n" << name << std::endl;
|
||||
chapter_2_tests.emplace_back("Nullptr test", std::make_unique<NullTest>());
|
||||
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();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user