diff --git a/tests/function/test_float16.cc b/tests/function/test_float16.cc index 77ea19a6f..708577440 100644 --- a/tests/function/test_float16.cc +++ b/tests/function/test_float16.cc @@ -13,6 +13,7 @@ // limitations under the License. #include +#include #include #include "fastdeploy/core/fd_tensor.h" #include "fastdeploy/core/float16.h" @@ -141,4 +142,26 @@ TEST(float16, isnan) { EXPECT_EQ(std::isnan(c), true); } +TEST(float16, fd_tensor_cpu) { + FDTensor tensor; + + std::vector input_data = {float16(1.0f), float16(0.5f), + float16(0.33333f), float16(0.0f)}; + EXPECT_EQ(input_data[0].x, 0x3c00); + EXPECT_EQ(input_data[1].x, 0x3800); + EXPECT_EQ(input_data[2].x, 0x3555); + EXPECT_EQ(input_data[3].x, 0x0000); + + tensor.Resize({4, 1}, FDDataType::FP16); + std::memcpy(tensor.Data(), input_data.data(), + input_data.size() * sizeof(float16)); + float16* data_ptr = reinterpret_cast(tensor.Data()); + + EXPECT_NE(data_ptr, nullptr); + EXPECT_EQ(input_data.size(), static_cast(tensor.Numel())); + for (size_t i = 0; i < input_data.size(); ++i) { + EXPECT_EQ(data_ptr[i].x, input_data[i].x); + } +} + } // namespace fastdeploy \ No newline at end of file