20GTEST_TEST(testTupleAlgorithms, theFrontAlgorithmReturnsTheFirstElementOfATuple)
22 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
24 auto front = DryChem::front(tuple);
26 ASSERT_EQ(front, std::string {
"Hello, World!"});
29GTEST_TEST(testTupleAlgorithms, theIsEmptyAlgorithmChecksIfATupleIsEmpty)
31 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
32 std::tuple emptyTuple {};
34 ASSERT_TRUE(DryChem::is_empty(emptyTuple));
35 ASSERT_FALSE(DryChem::is_empty(tuple));
38GTEST_TEST(testTupleAlgorithms, thePopFrontAlgorithmRemovesAnElementFromTheFrontOfATuple)
40 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
42 auto newTuple = DryChem::pop_front(tuple);
44 std::tuple expectedTuple {12.3, 6, std::string {
"A string"},
true};
46 ASSERT_EQ(newTuple, expectedTuple);
49GTEST_TEST(testTupleAlgorithms, thePushBackAlgorithmAddsANewElementToTheBackOfATuple)
51 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
53 auto newTuple = DryChem::push_back(tuple, 1.267e-4l);
55 std::tuple expectedTuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true, 1.267e-4l};
57 ASSERT_EQ(newTuple, expectedTuple);
60GTEST_TEST(testTupleAlgorithms, thePushFrontAlgorithmAddsANewElementToTheFrontOfATuple)
62 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
64 auto newTuple = DryChem::push_front(tuple, 1.267e-4l);
66 std::tuple expectedTuple {1.267e-4l, std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
68 ASSERT_EQ(newTuple, expectedTuple);
71GTEST_TEST(testTupleAlgorithms, theApplyNAlgorithmAppliesAFunctionToTheFirstNElementsOfATuple)
73 testing::internal::CaptureStdout();
75 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
77 DryChem::apply_n<2>([&](
auto... elem) { ((std::cout << elem << std::endl), ...); }, tuple);
79 std::string output = testing::internal::GetCapturedStdout();
80 ASSERT_EQ(output,
"Hello, World!\n12.3\n");
83GTEST_TEST(testTupleAlgorithms, theReverseAlgorithmReversesTheSuppliedTuple)
85 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
87 auto newTuple = DryChem::reverse(tuple);
89 std::tuple expectedTuple {
true, std::string {
"A string"}, 6, 12.3, std::string {
"Hello, World!"}};
91 ASSERT_EQ(newTuple, expectedTuple);
94GTEST_TEST(testTupleAlgorithms, theSelectAlgorithmShufflesATupleBasedOnTheOrderingOfAnIndexList)
96 std::tuple tuple {std::string {
"Hello, World!"}, 12.3, 6, std::string {
"A string"},
true};
98 auto newTuple = DryChem::select(tuple, std::index_sequence<1, 4, 0, 3> {});
100 std::tuple expectedTuple {12.3,
true, std::string {
"Hello, World!"}, std::string {
"A string"}};
102 ASSERT_EQ(newTuple, expectedTuple);
GTEST_TEST(testTupleAlgorithms, theFrontAlgorithmReturnsTheFirstElementOfATuple)
Definition testTupleAlgorithms.hpp:20