public async Task GivenValidAndInvalidTagValues_WhenValidate_ThenReturnedValidTagsAndStoredFailure() { DicomTag tag1 = DicomTag.DeviceSerialNumber; DicomTag tag2 = DicomTag.DeviceID; DicomDataset ds = Samples.CreateRandomInstanceDataset(); DicomElement element1 = new DicomLongString(tag1, "testvalue1"); DicomElement element2 = new DicomLongString(tag2, "testvalue2"); ds.Add(element1); ds.Add(element2); QueryTag queryTag1 = new QueryTag(new ExtendedQueryTagStoreEntry(1, tag1.GetPath(), tag1.GetDefaultVR().Code, null, QueryTagLevel.Instance, ExtendedQueryTagStatus.Ready, QueryStatus.Enabled, 0)); QueryTag queryTag2 = new QueryTag(new ExtendedQueryTagStoreEntry(2, tag2.GetPath(), tag2.GetDefaultVR().Code, null, QueryTagLevel.Instance, ExtendedQueryTagStatus.Ready, QueryStatus.Enabled, 0)); // Throw exception when validate element1 var ex = ElementValidationExceptionFactory.CreateDateIsInvalidException("testname", "testvalue"); _minimumValidator.When(x => x.Validate(element1)) .Throw(ex); // only return querytag2 long watermark = 1; var validQueryTags = await _datasetValidator.ValidateAsync(ds, watermark, new[] { queryTag1, queryTag2 }); Assert.Single(validQueryTags); Assert.Same(queryTag2, validQueryTags.First()); // error for querytag1 is logged await _tagErrorsService.Received(1) .AddExtendedQueryTagErrorAsync(queryTag1.ExtendedQueryTagStoreEntry.Key, ex.ErrorCode, 1, Arg.Any <CancellationToken>()); }
public void GivenDateIsInvalidException_WhenGetMessage_ShouldReturnExpected() { var name = "tagname"; var value = "tagvalue"; var exception = ElementValidationExceptionFactory.CreateDateIsInvalidException(name, value); Assert.Equal($"Dicom element '{name}' with value '{value}' failed validation for VR 'DA': Value cannot be parsed as a valid date.", exception.Message); }
public override void Validate(DicomElement dicomElement) { base.Validate(dicomElement); string value = dicomElement.Get <string>(); string name = dicomElement.Tag.GetFriendlyName(); if (string.IsNullOrEmpty(value)) { return; } if (!DateTime.TryParseExact(value, DateFormatDA, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out _)) { throw ElementValidationExceptionFactory.CreateDateIsInvalidException(name, value); } }