feat: add V3 field fixtures and RN regression host
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -357,6 +357,26 @@ TEST(Source, ParticleFieldV3V2DecodesAllSupportedChannelCombinations) {
|
||||
EXPECT_TRUE(combined.snapshot->hasVector());
|
||||
}
|
||||
|
||||
TEST(Source, ParticleFieldV3BusinessFixtureShapesRemainProviderNeutral) {
|
||||
// These are the exact four offline-business shapes used by STEP-070 fixtures:
|
||||
// Wind/Tide are velocity vectors, Rain is scalar-only, and Wave is scalar+direction.
|
||||
const std::vector<char> valid{1, 1};
|
||||
const auto wind = particle::LocalParticleFieldFeed::load(v2Metadata(false, true, "VELOCITY"),
|
||||
v2Payload(std::nullopt, floatBytes({1, 2, 3, 4}), valid));
|
||||
const auto tide = particle::LocalParticleFieldFeed::load(v2Metadata(false, true, "VELOCITY"),
|
||||
v2Payload(std::nullopt, floatBytes({0.1f, 0.2f, 0.3f, 0.4f}), valid));
|
||||
const auto rain = particle::LocalParticleFieldFeed::load(v2Metadata(true, false),
|
||||
v2Payload(floatBytes({1, 2}), std::nullopt, valid));
|
||||
const auto wave = particle::LocalParticleFieldFeed::load(v2Metadata(true, true, "DIRECTION"),
|
||||
v2Payload(floatBytes({1, 9}), floatBytes({0, 1, 0, 1}), valid));
|
||||
ASSERT_TRUE(wind) << wind.message; ASSERT_TRUE(tide) << tide.message;
|
||||
ASSERT_TRUE(rain) << rain.message; ASSERT_TRUE(wave) << wave.message;
|
||||
EXPECT_EQ(wave.snapshot->vectorSemantics, particle::VectorSemantics::Direction);
|
||||
EXPECT_FALSE(rain.snapshot->hasVector());
|
||||
EXPECT_TRUE(wind.snapshot->isTimeInterpolationCompatibleWith(*tide.snapshot));
|
||||
EXPECT_FALSE(wind.snapshot->isTimeInterpolationCompatibleWith(*wave.snapshot));
|
||||
}
|
||||
|
||||
TEST(Source, ParticleFieldV3V2RejectsInvalidPlaneAndSemanticsContracts) {
|
||||
const std::vector<char> valid{1, 1};
|
||||
auto neither = particle::LocalParticleFieldFeed::load(v2Metadata(false, false), v2Payload(std::nullopt, std::nullopt, valid));
|
||||
|
||||
Reference in New Issue
Block a user