tests_dicom_dicomSegmentFrameInfo.test.js
import {
DicomSegmentFrameInfo,
getSegmentFrameInfo,
isEqualSegmentFrameInfo,
getDicomSegmentFrameInfoItem
} from '../../src/dicom/dicomSegmentFrameInfo';
import {getElementsFromJSONTags} from '../../src/dicom/dicomWriter';
/**
* Tests for the 'dicom/dicomSegmentFrameInfo.js' file.
*/
/* global QUnit */
QUnit.module('dicom');
/**
* SegmentFrameInfo test: translate to element and back.
*
* @param {object} frameInfo The frameInfo as an object.
* @param {object} assert The QUnit assert.
* @param {string} testName The test name.
*/
function testSegmentFrameInfo(frameInfo, assert, testName) {
// frame info -> simple dicom element
// (treat simple code as code)
const frameInfoSimpleElements = getDicomSegmentFrameInfoItem(frameInfo);
// translate to frame info to be able to compare
const frameInfo1 = {
dimIndex:
frameInfoSimpleElements.FrameContentSequence
.value[0].DimensionIndexValues,
imagePosPat:
frameInfoSimpleElements.PlanePositionSequence
.value[0].ImagePositionPatient,
derivationImages: [
{
sourceImages: frameInfoSimpleElements.DerivationImageSequence
.value[0].SourceImageSequence.value
}
],
refSegmentNumber:
frameInfoSimpleElements.SegmentIdentificationSequence
.value[0].ReferencedSegmentNumber,
};
assert.ok(isEqualSegmentFrameInfo(frameInfo1, frameInfo),
testName + ' frame info from simple element');
// simple dicom element -> dicom element
const segmentElements = getElementsFromJSONTags(frameInfoSimpleElements);
// dicom element -> frame info
const frameInfo2 = getSegmentFrameInfo(segmentElements);
// compare
assert.ok(isEqualSegmentFrameInfo(frameInfo2, frameInfo),
testName + ' frame info from element');
}
/**
* Tests for {@link DicomSegmentFrameInfo} using simple DICOM data.
*
* @function module:tests/dicom~dicom-segment-frame-info-class
*/
QUnit.test('DICOM segment frame info class', function (assert) {
const dimIndex0 = [1, 1];
const imagePosPat0 = [0.5, 0.5, 0.5];
// tests only supports simple 1D arrays of objects
const derivationImages0 = [
{
sourceImages: [
{
referencedSOPClassUID: '',
referencedSOPInstanceUID: ''
}
]
}
];
const refSegmentNumber0 = 0;
const dsfi00 = new DicomSegmentFrameInfo(
dimIndex0, imagePosPat0, derivationImages0, refSegmentNumber0);
assert.equal(dsfi00.dimIndex, dimIndex0,
'Test #00 dimIndex');
assert.equal(dsfi00.imagePosPat, imagePosPat0,
'Test #00 imagePosPat');
assert.equal(dsfi00.derivationImages, derivationImages0,
'Test #00 derivationImages');
assert.equal(dsfi00.refSegmentNumber, refSegmentNumber0,
'Test #00 refSegmentNumber');
const frameInfo01 = {
dimIndex: dimIndex0,
imagePosPat: imagePosPat0,
derivationImages: derivationImages0,
refSegmentNumber: refSegmentNumber0
};
testSegmentFrameInfo(frameInfo01, assert, 'Test #01');
});