36 lines
697 B
C++
36 lines
697 B
C++
|
|
#include <gtest/gtest.h>
|
|||
|
|
#include <gmock/gmock-matchers.h>
|
|||
|
|
#include "rangechecked_cast.h"
|
|||
|
|
#include "PrintTo_Qt.h"
|
|||
|
|
|
|||
|
|
using namespace testing;
|
|||
|
|
|
|||
|
|
|
|||
|
|
TEST(rangechecked_cast, in_range)
|
|||
|
|
{
|
|||
|
|
ASSERT_NO_THROW({
|
|||
|
|
int8_t in = 42;
|
|||
|
|
int expected = 42;
|
|||
|
|
auto output = rangechecked_cast<int>(in);
|
|||
|
|
ASSERT_EQ(output, expected);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TEST(rangechecked_cast, above_max)
|
|||
|
|
{
|
|||
|
|
int64_t in = std::numeric_limits<int>::max() + static_cast<int64_t>(1);
|
|||
|
|
ASSERT_THROW({
|
|||
|
|
rangechecked_cast<int>(in);
|
|||
|
|
},
|
|||
|
|
std::runtime_error);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TEST(rangechecked_cast, below_lowest)
|
|||
|
|
{
|
|||
|
|
int64_t in = std::numeric_limits<int>::lowest() - static_cast<int64_t>(1);
|
|||
|
|
ASSERT_THROW({
|
|||
|
|
rangechecked_cast<int>(in);
|
|||
|
|
},
|
|||
|
|
std::runtime_error);
|
|||
|
|
}
|