mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-11-04 14:50:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <scwx/util/float.hpp>
 | 
						|
 | 
						|
#include <gtest/gtest.h>
 | 
						|
 | 
						|
namespace scwx
 | 
						|
{
 | 
						|
namespace util
 | 
						|
{
 | 
						|
 | 
						|
class Float16Test :
 | 
						|
    public testing ::TestWithParam<std ::pair<std::uint16_t, float>>
 | 
						|
{
 | 
						|
};
 | 
						|
 | 
						|
TEST(FloatTest, Decode32Positive1)
 | 
						|
{
 | 
						|
   uint16_t msw = 0x3f80;
 | 
						|
   uint16_t lsw = 0x0000;
 | 
						|
 | 
						|
   float x = DecodeFloat32(msw, lsw);
 | 
						|
 | 
						|
   EXPECT_FLOAT_EQ(x, 1.0f);
 | 
						|
}
 | 
						|
 | 
						|
TEST(FloatTest, Decode32Negative1)
 | 
						|
{
 | 
						|
   uint16_t msw = 0xbf80;
 | 
						|
   uint16_t lsw = 0x0000;
 | 
						|
 | 
						|
   float x = DecodeFloat32(msw, lsw);
 | 
						|
 | 
						|
   EXPECT_FLOAT_EQ(x, -1.0f);
 | 
						|
}
 | 
						|
 | 
						|
TEST(FloatTest, Decode32Positive12345678)
 | 
						|
{
 | 
						|
   uint16_t msw = 0x4b3c;
 | 
						|
   uint16_t lsw = 0x614e;
 | 
						|
 | 
						|
   float x = DecodeFloat32(msw, lsw);
 | 
						|
 | 
						|
   EXPECT_FLOAT_EQ(x, 12345678.0f);
 | 
						|
}
 | 
						|
 | 
						|
TEST_P(Float16Test, DecodeFloat16)
 | 
						|
{
 | 
						|
   auto param = GetParam();
 | 
						|
 | 
						|
   std::uint16_t hex = param.first;
 | 
						|
 | 
						|
   float x = DecodeFloat16(hex);
 | 
						|
 | 
						|
   EXPECT_FLOAT_EQ(x, param.second);
 | 
						|
}
 | 
						|
 | 
						|
INSTANTIATE_TEST_SUITE_P(
 | 
						|
   FloatTest,
 | 
						|
   Float16Test,
 | 
						|
   testing::Values(std::pair<std::uint16_t, float> {0x4400, 2.0f},
 | 
						|
                   std::pair<std::uint16_t, float> {0x59ab, 90.6875f},
 | 
						|
                   std::pair<std::uint16_t, float> {0x593e, 83.875f},
 | 
						|
                   std::pair<std::uint16_t, float> {0x54dc, 38.875f},
 | 
						|
                   std::pair<std::uint16_t, float> {0xc82a, -4.1640625f},
 | 
						|
                   std::pair<std::uint16_t, float> {0x5bb4, 123.25f}));
 | 
						|
 | 
						|
} // namespace util
 | 
						|
} // namespace scwx
 |