diff --git a/src/mbgl/particle/field/field_profile_validator.cpp b/src/mbgl/particle/field/field_profile_validator.cpp index a030ecb99..0a315bcfc 100644 --- a/src/mbgl/particle/field/field_profile_validator.cpp +++ b/src/mbgl/particle/field/field_profile_validator.cpp @@ -36,6 +36,8 @@ FieldProfileValidationResult FieldProfileValidator::validate(const ResolvedField if (!frame.isStructurallyValid()) return result(FieldProfileValidationCode::InvalidFrame, "frame"); if (!contract.sharedValidityRequired) return result(FieldProfileValidationCode::UnsupportedSharedValidityMode, "sharedValidityRequired=false"); + if (frame.validityPlane.valueClass != FieldValueClass::Validity) + return result(FieldProfileValidationCode::InvalidCoreUnit, "validity value class"); if ((contract.timeRelation == FieldTimeRelation::ValidGteReference && frame.frameContentIdentity.validTimeMs < frame.referenceTimeMs) || diff --git a/test/particle/field_runtime.test.cpp b/test/particle/field_runtime.test.cpp index a6231265c..2a6377d9d 100644 --- a/test/particle/field_runtime.test.cpp +++ b/test/particle/field_runtime.test.cpp @@ -113,6 +113,8 @@ TEST(ParticleFieldProfileValidator, EnforcesVelocityDirectionAndValidityCoreRule EXPECT_EQ(validate(c, f), particle::FieldProfileValidationCode::InvalidCoreUnit); f = frame(); f.validityPlane.unitID = 1; EXPECT_EQ(validate(c, f), particle::FieldProfileValidationCode::InvalidCoreUnit); + f = frame(); f.validityPlane.valueClass = particle::FieldValueClass::Scalar; + EXPECT_EQ(validate(c, f), particle::FieldProfileValidationCode::InvalidCoreUnit); } TEST(ParticleFieldProfileValidator, AppliesSchemaSharedValidityAndTimeRules) {