1 // Copyright 2015, Tobias Hermann and the FunctionalPlus contributors. 2 // https://github.com/Dobiasd/FunctionalPlus 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 #include <doctest/doctest.h> 8 #include <fplus/fplus.hpp> 9 #include <vector> 10 #include <string> 11 12 TEST_CASE("replace_test - replace_if") 13 { __anonf364ded10102(int value) 14 auto is_even = [](int value) { return value % 2 == 0; }; 15 std::vector<int> v = { 1, 3, 4, 6, 7 }; 16 auto result = fplus::replace_if(is_even, 0, v); 17 REQUIRE_EQ(result, std::vector<int>({1, 3, 0, 0, 7})); 18 19 auto result_rvalue = fplus::replace_if(is_even, 0, std::vector<int>({ 1, 3, 4, 6, 7 })); 20 REQUIRE_EQ(result_rvalue, std::vector<int>({1, 3, 0, 0, 7})); 21 } 22 23 TEST_CASE("replace_test - replace_elem_at_idx") 24 { 25 std::vector<int> v = { 1, 3, 4, 4, 7 }; 26 auto result = fplus::replace_elem_at_idx(2, 0, v); 27 REQUIRE_EQ(result, std::vector<int>({1, 3, 0, 4, 7})); 28 29 auto result_rvalue = fplus::replace_elem_at_idx(2, 0, std::vector<int>({ 1, 3, 4, 4, 7 })); 30 REQUIRE_EQ(result_rvalue, std::vector<int>({1, 3, 0, 4, 7})); 31 } 32 33 TEST_CASE("replace_test - replace_elems") 34 { 35 std::vector<int> v = { 1, 3, 4, 4, 7 }; 36 auto result = fplus::replace_elems(4, 0, v); 37 REQUIRE_EQ(result, std::vector<int>({1, 3, 0, 0, 7})); 38 39 auto result_rvalue = fplus::replace_elems(4, 0, std::vector<int>({1, 3, 0, 0, 7})); 40 REQUIRE_EQ(result_rvalue, std::vector<int>({1, 3, 0, 0, 7})); 41 } 42 43 TEST_CASE("replace_test - replace_tokens") 44 { 45 const std::string source = "haha"; 46 const std::string dest = "hihi"; 47 const std::string input = "oh, hahaha!"; 48 auto result = fplus::replace_tokens(source, dest, input); 49 REQUIRE_EQ(result, std::string("oh, hihiha!")); 50 } 51