/// <summary> /// Serializes originalDataset to JSON, deserializes, and re-serializes. /// Verifies that both datasets are equal, and both json serializations are equal! /// </summary> private void VerifyJsonTripleTrip(DicomDataset originalDataset, bool expectFail = false) { string json = DicomTypeTranslater.SerializeDatasetToJson(originalDataset, _jsonDicomConverter); _logger.Debug($"Initial json:\n{json}"); DicomDataset recoDataset = DicomTypeTranslater.DeserializeJsonToDataset(json, _jsonDicomConverter); string json2 = DicomTypeTranslater.SerializeDatasetToJson(recoDataset, _jsonDicomConverter); _logger.Debug($"Final json:\n{json}"); if (expectFail) { Assert.AreNotEqual(json, json2); } else { Assert.AreEqual(json, json2); } // NOTE: Group length elements have been retired from the standard, and have never been included in any JSON conversion. // Remove them here to allow comparison between datasets. originalDataset.RemoveGroupLengths(); if (expectFail) { Assert.False(DicomDatasetHelpers.ValueEquals(originalDataset, recoDataset)); } else { Assert.True(DicomDatasetHelpers.ValueEquals(originalDataset, recoDataset)); } }
public void BsonRoundTrip_TagWithMultipleVrs_SameAfterConversion() { DicomTypeTranslater.SerializeBinaryData = true; var usItem = new DicomUnsignedShort(DicomTag.GrayLookupTableDataRETIRED, 0, 1, ushort.MaxValue); var owItem = new DicomOtherWord(DicomTag.GrayLookupTableDataRETIRED, 0, 1, ushort.MaxValue); Assert.True(usItem.Tag.DictionaryEntry.ValueRepresentations.Length == 3); Assert.True(owItem.Tag.DictionaryEntry.ValueRepresentations.Length == 3); var usDataset = new DicomDataset { usItem }; var owDataset = new DicomDataset { owItem }; BsonDocument usDocument = DicomTypeTranslaterReader.BuildBsonDocument(usDataset); BsonDocument owDocument = DicomTypeTranslaterReader.BuildBsonDocument(owDataset); Assert.NotNull(usDocument); Assert.NotNull(owDocument); DicomDataset recoUsDataset = DicomTypeTranslaterWriter.BuildDicomDataset(usDocument); DicomDataset recoOwDataset = DicomTypeTranslaterWriter.BuildDicomDataset(owDocument); Assert.True(DicomDatasetHelpers.ValueEquals(usDataset, recoUsDataset)); Assert.True(DicomDatasetHelpers.ValueEquals(owDataset, recoOwDataset)); }
public void TestMultipleElementSequences() { var subDatasets = new List <DicomDataset>(); for (var i = 0; i < 3; i++) { subDatasets.Add(new DicomDataset { { DicomTag.ReferencedSOPClassUID, "ReferencedSOPClassUID-" + (i + 1) }, { DicomTag.ReferencedSOPInstanceUID, "ReferencedSOPInstanceUID-" + (i + 1) } }); } var originalDataset = new DicomDataset { { DicomTag.ReferencedImageSequence, subDatasets.ToArray() } }; var translatedDataset = new Dictionary <DicomTag, object>(); foreach (DicomItem item in originalDataset) { object value = DicomTypeTranslaterReader.GetCSharpValue(originalDataset, item); translatedDataset.Add(item.Tag, value); } var reconstructedDataset = new DicomDataset(); foreach (KeyValuePair <DicomTag, object> item in translatedDataset) { DicomTypeTranslaterWriter.SetDicomTag(reconstructedDataset, item.Key, item.Value); } Assert.True(DicomDatasetHelpers.ValueEquals(originalDataset, reconstructedDataset)); }
private static void VerifyBsonTripleTrip(DicomDataset ds) { BsonDocument bsonDoc = DicomTypeTranslaterReader.BuildBsonDocument(ds); DicomDataset recoDataset = DicomTypeTranslaterWriter.BuildDicomDataset(bsonDoc); BsonDocument recoDoc = DicomTypeTranslaterReader.BuildBsonDocument(recoDataset); Assert.AreEqual(bsonDoc, recoDoc); Assert.True(DicomDatasetHelpers.ValueEquals(ds, recoDataset)); }
public void TestBlankAndNullSerialization() { var dataset = new DicomDataset { new DicomDecimalString(DicomTag.SelectorDSValue, default(string)), new DicomIntegerString(DicomTag.SelectorISValue, ""), new DicomFloatingPointSingle(DicomTag.SelectorFLValue, default(float)), new DicomFloatingPointDouble(DicomTag.SelectorFDValue) }; string json = DicomTypeTranslater.SerializeDatasetToJson(dataset, _jsonDicomConverter); _logger.Debug(json); DicomDataset recoDataset = DicomTypeTranslater.DeserializeJsonToDataset(json, _jsonDicomConverter); Assert.True(DicomDatasetHelpers.ValueEquals(dataset, recoDataset)); }