mirror of
https://github.com/BlackMATov/promise.hpp.git
synced 2025-12-13 03:46:29 +07:00
move to github actions
This commit is contained in:
@@ -22,10 +22,17 @@ target_link_libraries(${PROJECT_NAME} promise.hpp)
|
||||
|
||||
target_compile_options(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
/W4 /bigobj>
|
||||
$<$<CXX_COMPILER_ID:MSVC>: /bigobj /wd4702>)
|
||||
|
||||
target_compile_options(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
|
||||
-Wall -Wextra -Wpedantic>)
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
/WX /W4>
|
||||
PRIVATE
|
||||
$<$<CXX_COMPILER_ID:GNU>:
|
||||
-Werror -Wall -Wextra -Wpedantic>
|
||||
PRIVATE
|
||||
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
|
||||
-Werror -Weverything -Wconversion>)
|
||||
|
||||
add_test(${PROJECT_NAME} ${PROJECT_NAME})
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
#define STATIC_REQUIRE(...)\
|
||||
static_assert(__VA_ARGS__, #__VA_ARGS__);\
|
||||
REQUIRE(__VA_ARGS__);
|
||||
REQUIRE(__VA_ARGS__)
|
||||
|
||||
#define STATIC_REQUIRE_FALSE(...)\
|
||||
static_assert(!(__VA_ARGS__), "!(" #__VA_ARGS__ ")");\
|
||||
REQUIRE(!(__VA_ARGS__));
|
||||
REQUIRE(!(__VA_ARGS__))
|
||||
|
||||
@@ -60,16 +60,16 @@ TEST_CASE("jobber") {
|
||||
REQUIRE(v5 == 4);
|
||||
}
|
||||
{
|
||||
const float pi = 3.14159265358979323846264338327950288f;
|
||||
const double pi = 3.14159265358979323846264338327950288;
|
||||
jb::jobber j(1);
|
||||
auto p0 = j.async([](float angle){
|
||||
auto p0 = j.async([](double angle){
|
||||
return std::sin(angle);
|
||||
}, pi);
|
||||
auto p1 = j.async([](float angle){
|
||||
auto p1 = j.async([](double angle){
|
||||
return std::cos(angle);
|
||||
}, pi * 2);
|
||||
REQUIRE(p0.get() == doctest::Approx(0.f).epsilon(0.01f));
|
||||
REQUIRE(p1.get() == doctest::Approx(1.f).epsilon(0.01f));
|
||||
REQUIRE(p0.get() == doctest::Approx(0.0).epsilon(0.01));
|
||||
REQUIRE(p1.get() == doctest::Approx(1.0).epsilon(0.01));
|
||||
}
|
||||
{
|
||||
jb::jobber j(1);
|
||||
@@ -303,29 +303,29 @@ TEST_CASE("jobber") {
|
||||
jb::jobber j(2);
|
||||
jb::jobber g(2);
|
||||
|
||||
std::vector<jb::promise<float>> jp(50);
|
||||
std::vector<jb::promise<double>> jp(50);
|
||||
for ( auto& jpi : jp ) {
|
||||
jpi = j.async([&g](){
|
||||
std::vector<jb::promise<float>> gp(50);
|
||||
std::vector<jb::promise<double>> gp(50);
|
||||
for ( std::size_t i = 0; i < gp.size(); ++i ) {
|
||||
gp[i] = g.async([](float angle){
|
||||
gp[i] = g.async([](double angle){
|
||||
return std::sin(angle);
|
||||
}, static_cast<float>(i));
|
||||
}, static_cast<double>(i));
|
||||
}
|
||||
return std::accumulate(gp.begin(), gp.end(), 0.f,
|
||||
[](float r, jb::promise<float>& f){
|
||||
return std::accumulate(gp.begin(), gp.end(), 0.0,
|
||||
[](double r, jb::promise<double>& f){
|
||||
return r + f.get();
|
||||
});
|
||||
});
|
||||
}
|
||||
float r0 = std::accumulate(jp.begin(), jp.end(), 0.f,
|
||||
[](float r, jb::promise<float>& f){
|
||||
double r0 = std::accumulate(jp.begin(), jp.end(), 0.0,
|
||||
[](double r, jb::promise<double>& f){
|
||||
return r + f.get();
|
||||
});
|
||||
float r1 = 0.f;
|
||||
double r1 = 0.0;
|
||||
for ( std::size_t i = 0; i < 50; ++i ) {
|
||||
r1 += std::sin(static_cast<float>(i));
|
||||
r1 += std::sin(static_cast<double>(i));
|
||||
}
|
||||
REQUIRE(r0 == doctest::Approx(r1 * 50.f).epsilon(0.01f));
|
||||
REQUIRE(r0 == doctest::Approx(r1 * 50.0).epsilon(0.01));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1303,28 +1303,28 @@ TEST_CASE("promise") {
|
||||
}
|
||||
SUBCASE("then_tuple") {
|
||||
{
|
||||
float check_42_float = 0.f;
|
||||
double check_42_double = 0.0;
|
||||
pr::make_resolved_promise()
|
||||
.then_tuple([](){
|
||||
return std::make_tuple(
|
||||
pr::make_resolved_promise(32),
|
||||
pr::make_resolved_promise(10.f));
|
||||
}).then([&check_42_float](const std::tuple<int, float>& t){
|
||||
check_42_float = std::get<0>(t) + std::get<1>(t);
|
||||
pr::make_resolved_promise(10.0));
|
||||
}).then([&check_42_double](const std::tuple<int, double>& t){
|
||||
check_42_double = std::get<0>(t) + std::get<1>(t);
|
||||
});
|
||||
REQUIRE(check_42_float == doctest::Approx(42.f).epsilon(0.01f));
|
||||
REQUIRE(check_42_double == doctest::Approx(42.0).epsilon(0.01));
|
||||
}
|
||||
{
|
||||
float check_42_float = 0.f;
|
||||
double check_42_double = 0.0;
|
||||
pr::make_resolved_promise(42)
|
||||
.then_tuple([](int){
|
||||
return std::make_tuple(
|
||||
pr::make_resolved_promise(32),
|
||||
pr::make_resolved_promise(10.f));
|
||||
}).then([&check_42_float](const std::tuple<int, float>& t){
|
||||
check_42_float = std::get<0>(t) + std::get<1>(t);
|
||||
pr::make_resolved_promise(10.0));
|
||||
}).then([&check_42_double](const std::tuple<int, double>& t){
|
||||
check_42_double = static_cast<double>(std::get<0>(t)) + std::get<1>(t);
|
||||
});
|
||||
REQUIRE(check_42_float == doctest::Approx(42.f).epsilon(0.01f));
|
||||
REQUIRE(check_42_double == doctest::Approx(42.0).epsilon(0.01));
|
||||
}
|
||||
{
|
||||
bool call_fail_with_logic_error = false;
|
||||
|
||||
Reference in New Issue
Block a user