|
- #include <gtest/gtest.h>
-
- #define CPPCORE_CONVERT_CAST_THROW
- #include <cppcore/conversion/convert_cast.h>
-
- using namespace ::cppcore;
-
- enum class test_enum
- {
- test0 = 0,
- test1,
- test2,
- test256 = 256,
- };
-
- TEST(convert_cast_test, i8)
- {
- EXPECT_THROW(convert_cast<int8_t>(static_cast< int16_t>(128)), convert_exception);
- EXPECT_THROW(convert_cast<int8_t>(static_cast< int32_t>(128)), convert_exception);
- EXPECT_THROW(convert_cast<int8_t>(static_cast< int64_t>(128)), convert_exception);
-
- EXPECT_THROW(convert_cast<int8_t>(static_cast< uint8_t>(128)), convert_exception);
- EXPECT_THROW(convert_cast<int8_t>(static_cast<uint16_t>(128)), convert_exception);
- EXPECT_THROW(convert_cast<int8_t>(static_cast<uint32_t>(128)), convert_exception);
- EXPECT_THROW(convert_cast<int8_t>(static_cast<uint64_t>(128)), convert_exception);
-
- EXPECT_EQ (convert_cast<int8_t>(static_cast< int8_t>(1)), static_cast<int8_t>(1));
- EXPECT_EQ (convert_cast<int8_t>(static_cast< int16_t>(2)), static_cast<int8_t>(2));
- EXPECT_EQ (convert_cast<int8_t>(static_cast< int32_t>(3)), static_cast<int8_t>(3));
- EXPECT_EQ (convert_cast<int8_t>(static_cast< int64_t>(4)), static_cast<int8_t>(4));
-
- EXPECT_EQ (convert_cast<int8_t>(static_cast< uint8_t>(4)), static_cast<int8_t>(4));
- EXPECT_EQ (convert_cast<int8_t>(static_cast<uint16_t>(5)), static_cast<int8_t>(5));
- EXPECT_EQ (convert_cast<int8_t>(static_cast<uint32_t>(6)), static_cast<int8_t>(6));
- EXPECT_EQ (convert_cast<int8_t>(static_cast<uint64_t>(7)), static_cast<int8_t>(7));
- }
-
- TEST(convert_cast_test, u8)
- {
- EXPECT_THROW(convert_cast<uint8_t>(static_cast< int8_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint8_t>(static_cast< int16_t>(256)), convert_exception);
- EXPECT_THROW(convert_cast<uint8_t>(static_cast< int32_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint8_t>(static_cast< int64_t>(256)), convert_exception);
-
- EXPECT_THROW(convert_cast<uint8_t>(static_cast<uint16_t>(256)), convert_exception);
- EXPECT_THROW(convert_cast<uint8_t>(static_cast<uint32_t>(256)), convert_exception);
- EXPECT_THROW(convert_cast<uint8_t>(static_cast<uint64_t>(256)), convert_exception);
-
- EXPECT_EQ (convert_cast<uint8_t>(static_cast< int8_t>(1)), static_cast<uint8_t>(1));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast< int16_t>(2)), static_cast<uint8_t>(2));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast< int32_t>(3)), static_cast<uint8_t>(3));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast< int64_t>(4)), static_cast<uint8_t>(4));
-
- EXPECT_EQ (convert_cast<uint8_t>(static_cast< uint8_t>(4)), static_cast<uint8_t>(4));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast<uint16_t>(5)), static_cast<uint8_t>(5));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast<uint32_t>(6)), static_cast<uint8_t>(6));
- EXPECT_EQ (convert_cast<uint8_t>(static_cast<uint64_t>(7)), static_cast<uint8_t>(7));
- }
-
- TEST(convert_cast_test, i16)
- {
- EXPECT_THROW(convert_cast<int16_t>(static_cast< int32_t>(32'768)), convert_exception);
- EXPECT_THROW(convert_cast<int16_t>(static_cast< int64_t>(32'768)), convert_exception);
-
- EXPECT_THROW(convert_cast<int16_t>(static_cast<uint16_t>(32'768)), convert_exception);
- EXPECT_THROW(convert_cast<int16_t>(static_cast<uint32_t>(32'768)), convert_exception);
- EXPECT_THROW(convert_cast<int16_t>(static_cast<uint64_t>(32'768)), convert_exception);
-
- EXPECT_EQ (convert_cast<int16_t>(static_cast< int8_t>(1)), static_cast<int16_t>(1));
- EXPECT_EQ (convert_cast<int16_t>(static_cast< int16_t>(2)), static_cast<int16_t>(2));
- EXPECT_EQ (convert_cast<int16_t>(static_cast< int32_t>(3)), static_cast<int16_t>(3));
- EXPECT_EQ (convert_cast<int16_t>(static_cast< int64_t>(4)), static_cast<int16_t>(4));
-
- EXPECT_EQ (convert_cast<int16_t>(static_cast< uint8_t>(4)), static_cast<int16_t>(4));
- EXPECT_EQ (convert_cast<int16_t>(static_cast<uint16_t>(5)), static_cast<int16_t>(5));
- EXPECT_EQ (convert_cast<int16_t>(static_cast<uint32_t>(6)), static_cast<int16_t>(6));
- EXPECT_EQ (convert_cast<int16_t>(static_cast<uint64_t>(7)), static_cast<int16_t>(7));
- }
-
- TEST(convert_cast_test, u16)
- {
- EXPECT_THROW(convert_cast<uint16_t>(static_cast< int8_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint16_t>(static_cast< int16_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint16_t>(static_cast< int32_t>(65'536)), convert_exception);
- EXPECT_THROW(convert_cast<uint16_t>(static_cast< int64_t>(65'536)), convert_exception);
-
- EXPECT_THROW(convert_cast<uint16_t>(static_cast<uint32_t>(65'536)), convert_exception);
- EXPECT_THROW(convert_cast<uint16_t>(static_cast<uint64_t>(65'536)), convert_exception);
-
- EXPECT_EQ (convert_cast<uint16_t>(static_cast< int8_t>(1)), static_cast<int16_t>(1));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast< int16_t>(2)), static_cast<int16_t>(2));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast< int32_t>(3)), static_cast<int16_t>(3));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast< int64_t>(4)), static_cast<int16_t>(4));
-
- EXPECT_EQ (convert_cast<uint16_t>(static_cast< uint8_t>(4)), static_cast<int16_t>(4));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast<uint16_t>(5)), static_cast<int16_t>(5));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast<uint32_t>(6)), static_cast<int16_t>(6));
- EXPECT_EQ (convert_cast<uint16_t>(static_cast<uint64_t>(7)), static_cast<int16_t>(7));
- }
-
- TEST(convert_cast_test, i32)
- {
- EXPECT_THROW(convert_cast<int32_t>(static_cast< int64_t>(2'147'483'648)), convert_exception);
-
- EXPECT_THROW(convert_cast<int32_t>(static_cast<uint32_t>(2'147'483'648)), convert_exception);
- EXPECT_THROW(convert_cast<int32_t>(static_cast<uint64_t>(2'147'483'648)), convert_exception);
-
- EXPECT_EQ (convert_cast<int32_t>(static_cast< int8_t>(1)), static_cast<int32_t>(1));
- EXPECT_EQ (convert_cast<int32_t>(static_cast< int16_t>(2)), static_cast<int32_t>(2));
- EXPECT_EQ (convert_cast<int32_t>(static_cast< int32_t>(3)), static_cast<int32_t>(3));
- EXPECT_EQ (convert_cast<int32_t>(static_cast< int64_t>(4)), static_cast<int32_t>(4));
-
- EXPECT_EQ (convert_cast<int32_t>(static_cast< uint8_t>(4)), static_cast<int32_t>(4));
- EXPECT_EQ (convert_cast<int32_t>(static_cast<uint16_t>(5)), static_cast<int32_t>(5));
- EXPECT_EQ (convert_cast<int32_t>(static_cast<uint32_t>(6)), static_cast<int32_t>(6));
- EXPECT_EQ (convert_cast<int32_t>(static_cast<uint64_t>(7)), static_cast<int32_t>(7));
- }
-
- TEST(convert_cast_test, u32)
- {
- EXPECT_THROW(convert_cast<uint32_t>(static_cast< int8_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint32_t>(static_cast< int16_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint32_t>(static_cast< int32_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint32_t>(static_cast< int64_t>(4'294'967'296)), convert_exception);
-
- EXPECT_THROW(convert_cast<uint32_t>(static_cast<uint64_t>(4'294'967'296)), convert_exception);
-
- EXPECT_EQ (convert_cast<uint32_t>(static_cast< int8_t>(1)), static_cast<int32_t>(1));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast< int16_t>(2)), static_cast<int32_t>(2));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast< int32_t>(3)), static_cast<int32_t>(3));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast< int64_t>(4)), static_cast<int32_t>(4));
-
- EXPECT_EQ (convert_cast<uint32_t>(static_cast< uint8_t>(4)), static_cast<int32_t>(4));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast<uint16_t>(5)), static_cast<int32_t>(5));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast<uint32_t>(6)), static_cast<int32_t>(6));
- EXPECT_EQ (convert_cast<uint32_t>(static_cast<uint64_t>(7)), static_cast<int32_t>(7));
- }
-
- TEST(convert_cast_test, i64)
- {
- EXPECT_THROW(convert_cast<int64_t>(static_cast<uint64_t>(std::numeric_limits<int64_t>::max()) + 1), convert_exception);
-
- EXPECT_EQ (convert_cast<int64_t>(static_cast< int8_t>(1)), static_cast<int64_t>(1));
- EXPECT_EQ (convert_cast<int64_t>(static_cast< int16_t>(2)), static_cast<int64_t>(2));
- EXPECT_EQ (convert_cast<int64_t>(static_cast< int32_t>(3)), static_cast<int64_t>(3));
- EXPECT_EQ (convert_cast<int64_t>(static_cast< int64_t>(4)), static_cast<int64_t>(4));
-
- EXPECT_EQ (convert_cast<int64_t>(static_cast< uint8_t>(4)), static_cast<int64_t>(4));
- EXPECT_EQ (convert_cast<int64_t>(static_cast<uint16_t>(5)), static_cast<int64_t>(5));
- EXPECT_EQ (convert_cast<int64_t>(static_cast<uint32_t>(6)), static_cast<int64_t>(6));
- EXPECT_EQ (convert_cast<int64_t>(static_cast<uint64_t>(7)), static_cast<int64_t>(7));
- }
-
- TEST(convert_cast_test, u64)
- {
- EXPECT_THROW(convert_cast<uint64_t>(static_cast< int8_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint64_t>(static_cast< int16_t>( -1)), convert_exception);
- EXPECT_THROW(convert_cast<uint64_t>(static_cast< int32_t>( -1)), convert_exception);
-
- EXPECT_EQ (convert_cast<uint64_t>(static_cast< int8_t>(1)), static_cast<int64_t>(1));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast< int16_t>(2)), static_cast<int64_t>(2));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast< int32_t>(3)), static_cast<int64_t>(3));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast< int64_t>(4)), static_cast<int64_t>(4));
-
- EXPECT_EQ (convert_cast<uint64_t>(static_cast< uint8_t>(4)), static_cast<int64_t>(4));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast<uint16_t>(5)), static_cast<int64_t>(5));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast<uint32_t>(6)), static_cast<int64_t>(6));
- EXPECT_EQ (convert_cast<uint64_t>(static_cast<uint64_t>(7)), static_cast<int64_t>(7));
- }
-
- TEST(convert_cast_test, enum)
- {
- EXPECT_EQ(convert_cast< int8_t>( test_enum::test0), static_cast< int8_t>( 0));
- EXPECT_EQ(convert_cast<int16_t>( test_enum::test1), static_cast<int16_t>( 1));
- EXPECT_EQ(convert_cast<int32_t>( test_enum::test2), static_cast<int32_t>( 2));
- EXPECT_EQ(convert_cast<int64_t>(test_enum::test256), static_cast<int64_t>(256));
-
- EXPECT_EQ(convert_cast< uint8_t>( test_enum::test0), static_cast< uint8_t>( 0));
- EXPECT_EQ(convert_cast<uint16_t>( test_enum::test1), static_cast<uint16_t>( 1));
- EXPECT_EQ(convert_cast<uint32_t>( test_enum::test2), static_cast<uint32_t>( 2));
- EXPECT_EQ(convert_cast<uint64_t>(test_enum::test256), static_cast<uint64_t>(256));
- }
|