public override UInt32 GetMetersValue(List<WorkingData> meters, SpatialRecord spatialRecord) { var returnValue = new UInt32(); for (int i = 0; i < meters.Count; i++) { var sectionId = ((DDI - StartingDdi) * 16) + (i + 1); var meter = (ISOEnumeratedMeter)meters.SingleOrDefault(x => x.DeviceElementUseId == sectionId); var value = (EnumeratedValue)spatialRecord.GetMeterValue(meter); int meterInt; if (value.Value.Code == DefinedTypeEnumerationInstanceList.dtiPrescriptionUsed.ToModelEnumMember().Code) meterInt = 0; else if (value.Value.Code == DefinedTypeEnumerationInstanceList.dtiPrescriptionOverridden.ToModelEnumMember().Code) meterInt = 1; else meterInt = 3; returnValue |= Convert.ToUInt32(meterInt << (i * 2)); } return returnValue; }
public void GivenMetersWithStartAt382WhenGetMetersValueThenValuesCorrect() { SpatialRecord spatialRecord; var meters = CreateMeters(out spatialRecord, 241); var creator = new CondensedSectionOverrideStateMeterCreator(382); var result = creator.GetMetersValue(meters, spatialRecord); Assert.AreEqual(0x44444444, result); }