Initial Course

This commit is contained in:
David Gil de Gómez Pérez
2026-08-11 17:40:36 +03:00
commit 9aed1d1d86
202 changed files with 3420 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
#include "expected.hpp"
#include <gtest/gtest.h>
TEST(Expected, ParseInt) {
EXPECT_EQ(*cpp23::parse_int("42"), 42);
EXPECT_EQ(cpp23::parse_int(""), std::unexpected(cpp23::ParseError::EmptyInput));
}
TEST(Expected, SafeSqrt) {
EXPECT_DOUBLE_EQ(*cpp23::safe_sqrt(9), 3.0);
EXPECT_FALSE(cpp23::safe_sqrt(-1).has_value());
}
TEST(Expected, ChainParseAndDouble) {
EXPECT_EQ(*cpp23::chain_parse_and_double("21"), 42);
}
+16
View File
@@ -0,0 +1,16 @@
#include "mdspan.hpp"
#include <gtest/gtest.h>
TEST(Mdspan, MatrixElement) {
auto storage = cpp23::make_row_major_matrix(2, 3, 1);
const auto matrix = std::mdspan<const int, std::extents<int, std::dynamic_extent, std::dynamic_extent>>(
storage.data(), 2, 3);
EXPECT_EQ(cpp23::matrix_element(matrix, 1, 2), 1);
}
TEST(Mdspan, RowSums) {
std::vector<int> storage = {1, 2, 3, 4, 5, 6};
const auto matrix = std::mdspan<const int, std::extents<int, std::dynamic_extent, std::dynamic_extent>>(
storage.data(), 2, 3);
EXPECT_EQ(cpp23::row_sums(matrix), (std::vector<int>{6, 15}));
}
@@ -0,0 +1,14 @@
#include "print_and_format.hpp"
#include <gtest/gtest.h>
TEST(PrintAndFormat, FormatGreeting) {
EXPECT_EQ(cpp23::format_greeting("Ada", 100), "Ada scored 100 points");
}
TEST(PrintAndFormat, FormatTableRow) {
EXPECT_EQ(cpp23::format_table_row({"A", "B", "C"}), "A | B | C");
}
TEST(PrintAndFormat, FormatHex) {
EXPECT_EQ(cpp23::format_hex(255), "0xFF");
}
+15
View File
@@ -0,0 +1,15 @@
#include "ranges_zip.hpp"
#include <gtest/gtest.h>
TEST(RangesZip, ZipSum) {
EXPECT_EQ(cpp23::zip_sum({1, 2, 3}, {4, 5, 6}), (std::vector<int>{5, 7, 9}));
}
TEST(RangesZip, ChunkStrings) {
EXPECT_EQ(cpp23::chunk_strings({"a", "b", "c", "d"}, 2),
(std::vector<std::vector<std::string>>{{"a", "b"}, {"c", "d"}}));
}
TEST(RangesZip, AdjacentDifferences) {
EXPECT_EQ(cpp23::adjacent_differences({1, 4, 9, 16}), (std::vector<int>{3, 5, 7}));
}