96 lines
2.9 KiB
C++
96 lines
2.9 KiB
C++
#include <gtest/gtest.h>
|
|
#include "io/gpr/IprHeader.hpp"
|
|
|
|
using namespace geopro::io::gpr;
|
|
|
|
TEST(IprHeaderExtended, parsesAllFieldsCaseInsensitive) {
|
|
const std::string text =
|
|
"Date: 2022-03-10\n"
|
|
"START TIME: 10:46\n"
|
|
"stop time: 11:30\n"
|
|
"Units: ns\n"
|
|
"MODE: continuous\n"
|
|
"Antennas: MALA MIRA\n"
|
|
"FREQUENCY: 200\n"
|
|
"Stacks: 4\n"
|
|
"Last Trace: 3777\n"
|
|
"Positive Direction: forward\n"
|
|
"Samples: 516\n"
|
|
"Time Interval: 0.187\n"
|
|
"TimeWindow: 96.4196\n"
|
|
"Depth: 5.0\n"
|
|
"Zero Position: 0\n"
|
|
"Dielectric: 9\n"
|
|
"Soil Type: clay\n"
|
|
"Bits: 16\n"
|
|
"Mark: none\n"
|
|
"Incident Angle: 0\n"
|
|
"Distance Interval: 0.099194\n"
|
|
"Start Position: 0\n"
|
|
"Stop Position: 375\n"
|
|
"Wheel/GPS: wheel\n"
|
|
"Wheel Calibration: 1.0\n"
|
|
"Scan/Second: 50\n"
|
|
"Position: 0\n"
|
|
"Number_of_ch: 16\n"
|
|
"Ch_X_offsets: 0.0,0.2,0.4\n"
|
|
"RTK_X_offset: 0.1\n"
|
|
"RTK_Y_offset: 0.2\n"
|
|
"RTK_Z_offset: 0.3\n"
|
|
"Channels: 1\n";
|
|
|
|
const IprHeader h = parseIprHeader(text);
|
|
|
|
EXPECT_EQ(h.samples, 516);
|
|
EXPECT_EQ(h.lastTrace, 3777);
|
|
EXPECT_EQ(h.channels, 1);
|
|
EXPECT_DOUBLE_EQ(h.timeWindowNs, 96.4196);
|
|
EXPECT_DOUBLE_EQ(h.distanceInterval, 0.099194);
|
|
|
|
EXPECT_EQ(h.date, "2022-03-10");
|
|
EXPECT_EQ(h.startTime, "10:46");
|
|
EXPECT_EQ(h.stopTime, "11:30");
|
|
EXPECT_EQ(h.units, "ns");
|
|
EXPECT_EQ(h.mode, "continuous");
|
|
EXPECT_EQ(h.antennas, "MALA MIRA");
|
|
EXPECT_DOUBLE_EQ(h.frequency, 200.0);
|
|
EXPECT_EQ(h.stacks, 4);
|
|
EXPECT_EQ(h.positiveDirection, "forward");
|
|
EXPECT_DOUBLE_EQ(h.timeInterval, 0.187);
|
|
EXPECT_DOUBLE_EQ(h.depth, 5.0);
|
|
EXPECT_DOUBLE_EQ(h.zeroPosition, 0.0);
|
|
EXPECT_DOUBLE_EQ(h.dielectric, 9.0);
|
|
EXPECT_EQ(h.soilType, "clay");
|
|
EXPECT_EQ(h.bits, 16);
|
|
EXPECT_EQ(h.mark, "none");
|
|
EXPECT_DOUBLE_EQ(h.incidentAngle, 0.0);
|
|
EXPECT_DOUBLE_EQ(h.startPosition, 0.0);
|
|
EXPECT_DOUBLE_EQ(h.stopPosition, 375.0);
|
|
EXPECT_EQ(h.wheelGps, "wheel");
|
|
EXPECT_DOUBLE_EQ(h.wheelCalibration, 1.0);
|
|
EXPECT_DOUBLE_EQ(h.scanPerSecond, 50.0);
|
|
EXPECT_DOUBLE_EQ(h.position, 0.0);
|
|
EXPECT_EQ(h.numberOfCh, 16);
|
|
EXPECT_EQ(h.chXOffsets, "0.0,0.2,0.4");
|
|
EXPECT_DOUBLE_EQ(h.rtkXOffset, 0.1);
|
|
EXPECT_DOUBLE_EQ(h.rtkYOffset, 0.2);
|
|
EXPECT_DOUBLE_EQ(h.rtkZOffset, 0.3);
|
|
}
|
|
|
|
TEST(IprHeaderExtended, missingOptionalFieldsAllowed) {
|
|
const std::string text =
|
|
"Samples: 100\n"
|
|
"Last Trace: 99\n"
|
|
"Channels: 1\n";
|
|
|
|
const IprHeader h = parseIprHeader(text);
|
|
EXPECT_EQ(h.samples, 100);
|
|
EXPECT_TRUE(h.date.isEmpty());
|
|
EXPECT_DOUBLE_EQ(h.frequency, 0.0);
|
|
}
|
|
|
|
TEST(IprHeaderExtended, missingRequiredThrows) {
|
|
const std::string text = "Samples: 100\n";
|
|
EXPECT_THROW(parseIprHeader(text), std::runtime_error);
|
|
}
|