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