#include "core/model/ScalarVolumeI16.hpp" #include using namespace geopro::core; TEST(ScalarVolumeI16, QuantRoundTrip) { Quant q{0.5, -10.0}; EXPECT_EQ(q.toQ(-10.0), 0); EXPECT_NEAR(q.toPhys(q.toQ(3.0)), 3.0, 0.25); // 半个量化步内 } TEST(ScalarVolumeI16, QuantClampReservesBlank) { Quant q{1.0, 0.0}; EXPECT_GT(q.toQ(-1e9), ScalarVolumeI16::kBlank); // 下钳不撞 kBlank EXPECT_EQ(q.toQ(1e9), 32767); // 上钳到 INT16_MAX } TEST(ScalarVolumeI16, IndexLayout) { ScalarVolumeI16 v(2, 2, 2); v.at(1, 0, 1) = 7; EXPECT_EQ(v.data()[(1 * 2 + 0) * 2 + 1], 7); // ((k*ny+j)*nx+i)=((1*2+0)*2+1)=5 EXPECT_EQ(v.at(1, 0, 1), 7); }