package org.dcm4che3.io;
import static org.junit.Assert.*;
import java.io.File;
import org.dcm4che3.data.BulkData;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Sequence;
import org.dcm4che3.io.DicomInputStream.IncludeBulkData;
import org.junit.Test;
/**
* @author Gunter Zeilinger <gunterze@gmail.com>
*/
public class DicomInputStreamTest {
@Test
public void testPart10ExplicitVR() throws Exception {
Attributes attrs = readFromResource("DICOMDIR", IncludeBulkData.YES);
Sequence seq = attrs.getSequence(null, Tag.DirectoryRecordSequence);
assertEquals(44, seq.size());
}
@Test
public void testPart10Deflated() throws Exception {
Attributes attrs = readFromResource("report_dfl", IncludeBulkData.YES);
Sequence seq = attrs.getSequence(null, Tag.ContentSequence);
assertEquals(5, seq.size());
}
@Test
public void testPart10BigEndian() throws Exception {
Attributes attrs = readFromResource("US-RGB-8-epicard", IncludeBulkData.NO);
assertEquals(3, attrs.getInt(Tag.SamplesPerPixel, 0));
}
@Test
public void testImplicitVR() throws Exception {
Attributes attrs = readFromResource("OT-PAL-8-face", IncludeBulkData.URI);
assertEquals(1, attrs.getInt(Tag.SamplesPerPixel, 0));
Object pixelData = attrs.getValue(Tag.PixelData);
assertNotNull(pixelData);
assertTrue(pixelData instanceof BulkData);
Attributes item = attrs.getNestedDataset(Tag.ReferencedBulkDataSequence);
assertNotNull(item);
assertEquals(3, item.size());
assertEquals(Tag.PixelData, item.getInt(Tag.SelectorAttribute, 0));
assertEquals("OW", item.getString(Tag.SelectorAttributeVR));
assertEquals(((BulkData) pixelData).uri, item.getString(Tag.RetrieveURL));
}
private static Attributes readFromResource(String name,
IncludeBulkData includeBulkData)
throws Exception {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
DicomInputStream in = new DicomInputStream(
new File(cl.getResource(name).toURI()));
try {
in.setIncludeBulkData(includeBulkData);
in.setAddBulkDataReferences(includeBulkData == IncludeBulkData.URI);
return in.readDataset(-1, -1);
} finally {
in.close();
}
}
}