BareGit
#include <stdexcept>
#include <string>

#include <gtest/gtest.h>

#include "task.hpp"

Task<int> asyncCompute()
{
    co_return 42;
}

Task<int> asyncThrow()
{
    throw std::runtime_error("Task Error");
    co_return 0; // Unreachable
}

TEST(TaskTest, ReturnsValue)
{
    auto task = asyncCompute();
    EXPECT_EQ(task.get(), 42);
}

TEST(TaskTest, ThrowsException)
{
    auto task = asyncThrow();
    EXPECT_THROW(task.get(), std::runtime_error);
}