move to github actions

This commit is contained in:
BlackMATov
2021-08-06 03:56:15 +07:00
parent 383c8a6f95
commit 461f71a033
12 changed files with 157 additions and 162 deletions

View File

@@ -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})

View File

@@ -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__))

View File

@@ -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));
}
}

View File

@@ -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;