Files
config-pacs-docker/nv/html/dwv/tests/state/state.test.js
2025-02-26 14:49:25 +07:00

745 lines
33 KiB
JavaScript

/**
* Tests for the 'app/state.js' file.
*/
/** @module tests/state */
// Do not warn if these variables were not defined before.
/* global QUnit */
QUnit.module("state");
/**
* Test a state file.
* @param {String} version The state format version.
* @param {String} type The type of drawing.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.TestState = function ( version, type, assert ) {
var done = assert.async();
// test file request
var request = new XMLHttpRequest();
var urlRoot = "https://raw.githubusercontent.com/ivmartel/dwv/master";
var url = urlRoot + "/tests/state/v" + version + "/state-" + type + ".json";
request.open('GET', url, true);
request.onerror = function (event) {
console.log(event);
};
request.onload = function (/*event*/) {
// status 200: "OK"; status 0: "debug"
if ( this.status !== 200 && this.status !== 0 ) {
assert.ok( false, "Error while loading test data." );
done();
return;
}
// read state
var state = new dwv.State();
var jsonData = state.fromJSON( this.responseText );
// check drawings values
dwv.utils.test.CheckDrawings(
jsonData.drawings, jsonData.drawingsDetails, version, type, assert );
// delete drawing to allow simple equal check
delete jsonData.drawings;
delete jsonData.drawingsDetails;
// check values expect drawings
dwv.utils.test.CheckStateHeader( jsonData, version, assert );
// finish async test
done();
};
// send request
request.send(null);
};
/**
* Check state header.
* @param {Object} jsonData The input data to check.
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckStateHeader = function (jsonData, version, assert) {
// header data
var headerData = {
"version": version,
"window-center": 441,
"window-width": 911,
"position": { "i": 0, "j": 0, "k": 0 },
"scale": 1,
"scaleCenter": { "x": 0, "y": 0 },
"translation": { "x": 0, "y": 0 }
};
assert.deepEqual( jsonData, headerData );
};
/**
* Check drawings.
* @param {Object} drawings The drawing object to check
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {String} type The type of drawing.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckDrawings = function (drawings, details, version, type, assert) {
// first level: layer
assert.equal( drawings.className, "Layer", "State drawings is a layer.");
// second level: position groups
if ( drawings.children.length === 5 &&
( type === "ruler_multi-slice" || type === "line_multi-slice" ) ) {
dwv.utils.test.CheckRulerDrawings( drawings.children, details, version, assert );
} else if ( drawings.children.length === 1 ) {
var layerKid = drawings.children[0];
assert.equal( layerKid.className, "Group", "Layer first level is a group.");
assert.equal( layerKid.attrs.name, "position-group", "Layer first level is a position group.");
assert.equal( layerKid.attrs.id, "slice-0_frame-0", "Position group has the proper id.");
// third level: shape group(s)
var posGroupKid = layerKid.children[0];
assert.equal( posGroupKid.className, "Group", "Position group first level is a group.");
// shape specific checks
if ( type === "arrow" ) {
dwv.utils.test.CheckArrowDrawing( posGroupKid, details, version, assert );
} else if ( type === "ruler" && version !== "0.1" ) {
var refRuler = {
'id': "4gvkz8v6wzw",
'points': [51,135,216,134],
'colour': "#ffff80",
'text': "165.0mm",
'textExpr': "{length}",
'longText': "What a ruler!"
};
dwv.utils.test.CheckRulerDrawing( posGroupKid, details, refRuler, assert );
} else if ( type === "line" && version === "0.1" ) {
var refLine = {
'id': "4gvkz8v6wzw",
'points': [51,135,216,134],
'colour': "#ffff00",
'text': "165.0mm",
'textExpr': "{length}",
'longText': ""
};
dwv.utils.test.CheckRulerDrawing( posGroupKid, details, refLine, assert );
} else if ( type === "roi" ) {
dwv.utils.test.CheckRoiDrawing( posGroupKid, details, version, assert );
} else if ( type === "hand" ) {
dwv.utils.test.CheckHandDrawing( posGroupKid, details, version, assert );
} else if ( type === "ellipse" ) {
dwv.utils.test.CheckEllipseDrawing( posGroupKid, details, version, assert );
} else if ( type === "protractor" ) {
dwv.utils.test.CheckProtractorDrawing( posGroupKid, details, version, assert );
} else if ( type === "rectangle" ) {
dwv.utils.test.CheckRectangleDrawing( posGroupKid, details, version, assert );
} else {
assert.ok( false, "Unknown draw type." );
}
} else {
assert.ok( false, "Not the expected number of position groups." );
}
};
/**
* Check an arrow drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckArrowDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "line-group", "Shape group is a line group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "pf8zteo5r4", "Position group first level has the proper id.");
assert.notEqual( typeof details.pf8zteo5r4, "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 3, "Shape group has 3 kids.");
var hasShape = false;
var hasLabel = false;
var hasPoly = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Line", "Shape group 'shape' is a line.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.points, [53, 136, 139, 89], "Line has the proper points.");
assert.equal( shapeGroupKid.attrs.stroke, "#ffff80", "Line has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, "Eye", "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
} else if ( shapeGroupKid.className === "RegularPolygon" ) {
hasPoly = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'extra' must not be draggable.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
assert.ok( hasPoly, "Shape group contains a polygon.");
// details
var details0 = details.pf8zteo5r4;
assert.equal( details0.textExpr, "Eye", "Details textExpr has the proper value.");
assert.equal( details0.longText, "This is an eye!", "Details longText has the proper value.");
};
/**
* Check a ruler drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} ref The reference data to compare to.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckRulerDrawing = function (posGroupKid, details, ref, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "ruler-group", "Shape group is a ruler group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, ref.id, "Position group first level has the proper id.");
assert.notEqual( typeof details[ref.id], "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 4, "Shape group has 4 kids.");
var hasShape = false;
var hasLabel = false;
var hasTick1 = false;
var hasTick2 = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Line", "Shape group 'shape' is a line.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.points, ref.points, "Line has the proper points.");
assert.equal( shapeGroupKid.attrs.stroke, ref.colour, "Line has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, ref.text, "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
} else if ( shapeGroupKid.className === "Line" ) {
if ( hasTick1 ) {
hasTick2 = true;
} else {
hasTick1 = true;
}
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'extra' must not be draggable.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
assert.ok( hasTick1, "Shape group contains a tick1.");
assert.ok( hasTick2, "Shape group contains a tick2.");
// details
var details0 = details[ref.id];
assert.equal( details0.textExpr, ref.textExpr, "Details textExpr has the proper value.");
assert.equal( details0.longText, ref.longText, "Details longText has the proper value.");
};
/**
* Check a multi slice ruler drawing.
* @param {Object} layer The draw layer.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckRulerDrawings = function (layerKids, details, version, assert) {
var ndraws = 5;
assert.equal( layerKids.length, ndraws, "Layer has " + ndraws + " kids.");
var refRulers = [
{
'id': "onzlkbs8p",
'points': [120,110,120,60],
'colour': "#ffff00",
'text': "50.00mm",
'textExpr': "{length}",
'longText': ( version === "0.1" ? "" : "First ruler." )
},
{
'id': "u9bvidgkjc9",
'points': [120,110,170,110],
'colour': "#ff0000",
'text': "50.00mm",
'textExpr': "{length}",
'longText': ( version === "0.1" ? "" : "Second ruler." )
},
{
'id': "c9abkegq62j",
'points': [120,110,120,160],
'colour': "#ffffff",
'text': "50.00mm",
'textExpr': "{length}",
'longText': ( version === "0.1" ? "" : "Third ruler." )
},
{
'id': "uiav43zjw1",
'points': [120,110,60,110],
'colour': "#00ff00",
'text': "50.00mm",
'textExpr': "{length}",
'longText': ( version === "0.1" ? "" : "Fourth ruler." )
},
{
'id': "26ir11b9ugl",
'points': [120,110,120,60],
'colour': "#ff00ff",
'text': "50.00mm",
'textExpr': "{length}",
'longText': ( version === "0.1" ? "" : "Fifth ruler." )
}
];
for ( var i = 0; i < ndraws; ++i ) {
var layerKid = layerKids[i];
assert.equal( layerKid.className, "Group", "Layer first level is a group for slice " + i + ".");
assert.equal( layerKid.attrs.name, "position-group", "Layer first level is a position group.");
assert.equal( layerKid.attrs.id, "slice-" + (i+1) + "_frame-0", "Position group has the proper id.");
// third level: shape group(s)
var posGroupKid = layerKid.children[0];
assert.equal( posGroupKid.className, "Group", "Position group first level is a group.");
dwv.utils.test.CheckRulerDrawing( posGroupKid, details, refRulers[i], assert );
}
};
/**
* Check a roi drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckRoiDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "roi-group", "Shape group is a roi group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "4l24ofouhmf", "Position group first level has the proper id.");
assert.notEqual( typeof details["4l24ofouhmf"], "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 2, "Shape group has 2 kids.");
var hasShape = false;
var hasLabel = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Line", "Shape group 'shape' is a line.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.points, [126, 40, 58, 80, 60, 116, 92, 128, 93, 143, 93, 151, 94, 151, 114, 150, 128, 150, 214, 135, 183, 56, 182, 56, 182, 56], "Line has the proper points.");
var colour = ( version === "0.1" ? "#ffff00" : "#ffff80" );
assert.equal( shapeGroupKid.attrs.stroke, colour, "Line has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
if ( version !== "0.1" ) {
assert.equal( labelGroupKid0.attrs.text, "Brain", "Text has the proper value.");
}
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
// details
if ( version !== "0.1" ) {
var details0 = details["4l24ofouhmf"];
assert.equal( details0.textExpr, "Brain", "Details textExpr has the proper value.");
assert.equal( details0.longText, "This is a squary brain!", "Details longText has the proper value.");
}
};
/**
* Check a hand drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckHandDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "freeHand-group", "Shape group is a freeHand group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "08m011yjp8je", "Position group first level has the proper id.");
assert.notEqual( typeof details["08m011yjp8je"], "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 2, "Shape group has 2 kids.");
var hasShape = false;
var hasLabel = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Line", "Shape group 'shape' is a line.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.points, [93,50,92,50,71,58,71,59,68,63,68,64,54,80,54,81,53,83,52,85,51,87,50,92,47,98,47,100,55,117,56,118,86,122,89,126,90,128,90,129,88,131,87,133,86,134,85,138,85,139,85,141,87,143,87,144,87,145,88,147,92,150,97,152,112,154,113,153,136,143,174,136,178,135,191,136,192,136,194,138,196,139,197,141,199,141,200,141,207,140,208,139,211,136,213,134,213,133,213,129,213,126,213,122,210,90,209,87,206,80,205,79,204,78,201,73,199,71,197,70,187,63,184,61,182,59,180,58,174,54,172,52,170,51,168,50,167,49,155,42,154,42,151,42,136,40,134,40,133,40,128,41,126,41,124,41,117,44,116,44,114,44,107,47,102,49,100,49,97,49,93,50,92,50,92,50], "Line has the proper points.");
assert.equal( shapeGroupKid.attrs.stroke, "#ffff80", "Line has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, "Brain", "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
// details
var details0 = details["08m011yjp8je"];
assert.equal( details0.textExpr, "Brain", "Details textExpr has the proper value.");
assert.equal( details0.longText, "This is a roundy brain!", "Details longText has the proper value.");
};
/**
* Check an ellipse drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckEllipseDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "ellipse-group", "Shape group is an ellipse group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "c6j16qt6vt6", "Position group first level has the proper id.");
assert.notEqual( typeof details.c6j16qt6vt6, "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 2, "Shape group has 2 kids.");
var hasShape = false;
var hasLabel = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Ellipse", "Shape group 'shape' is an ellipse.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.x, 90, "Ellipse has the proper x.");
assert.deepEqual( shapeGroupKid.attrs.y, 78, "Ellipse has the proper y.");
assert.deepEqual( shapeGroupKid.attrs.radiusX, 53, "Ellipse has the proper radiusX.");
assert.deepEqual( shapeGroupKid.attrs.radiusY, 32, "Ellipse has the proper radiusY.");
var colour = ( version === "0.1" ? "#ffff00" : "#ffff80" );
assert.equal( shapeGroupKid.attrs.stroke, colour, "Ellipse has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, "53.28cm2", "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
// details
if ( version !== "0.1" ) {
var details0 = details.c6j16qt6vt6;
assert.equal( details0.textExpr, "{surface}", "Details textExpr has the proper value.");
assert.equal( details0.longText, "What a surface!", "Details longText has the proper value.");
}
};
/**
* Check a protractor drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckProtractorDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "protractor-group", "Shape group is an protractor group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "49g7kqi3p4u", "Position group first level has the proper id.");
assert.notEqual( typeof details["49g7kqi3p4u"], "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 3, "Shape group has 3 kids.");
var hasShape = false;
var hasLabel = false;
var hasArc = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Line", "Shape group 'shape' is a line.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.points, [33,164,81,145,93,198], "Line has the proper points.");
var colour = ( version === "0.1" ? "#ffff00" : "#ffff80" );
assert.equal( shapeGroupKid.attrs.stroke, colour, "Line has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, "80.15°", "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
} else if ( shapeGroupKid.className === "Arc" ) {
hasArc = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'extra' must not be draggable.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
assert.ok( hasArc, "Shape group contains an arc.");
// details
if ( version !== "0.1" ) {
var details0 = details["49g7kqi3p4u"];
assert.equal( details0.textExpr, "{angle}", "Details textExpr has the proper value.");
assert.equal( details0.longText, "What an angle!", "Details longText has the proper value.");
}
};
/**
* Check a rectangle drawing.
* @param {Object} posGroupKid The position group (only) kid.
* @param {Object} details The drawing details
* @param {String} version The state format version.
* @param {Object} assert The qunit assert.
*/
dwv.utils.test.CheckRectangleDrawing = function (posGroupKid, details, version, assert) {
// check group
assert.equal( posGroupKid.attrs.name, "rectangle-group", "Shape group is a rectangle group.");
assert.ok( posGroupKid.attrs.draggable, "Shape group must be draggable.");
assert.equal( posGroupKid.attrs.id, "db0puu209qe", "Position group first level has the proper id.");
assert.notEqual( typeof details.db0puu209qe, "undefined", "Details should contain data for id.");
// kids
assert.equal( posGroupKid.children.length, 2, "Shape group has 2 kids.");
var hasShape = false;
var hasLabel = false;
for ( var i = 0; i < posGroupKid.children.length; ++i ) {
var shapeGroupKid = posGroupKid.children[i];
if ( shapeGroupKid.attrs.name === "shape" ) {
hasShape = true;
assert.equal( shapeGroupKid.className, "Rect", "Shape group 'shape' is a rectangle.");
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'shape' must not be draggable.");
assert.deepEqual( shapeGroupKid.attrs.x, 80, "Rectangle has the proper x.");
assert.deepEqual( shapeGroupKid.attrs.y, 58, "Rectangle has the proper y.");
assert.deepEqual( shapeGroupKid.attrs.width, 104, "Rectangle has the proper width.");
assert.deepEqual( shapeGroupKid.attrs.height, 64, "Rectangle has the proper height.");
var colour = ( version === "0.1" ? "#ffff00" : "#ffff80" );
assert.equal( shapeGroupKid.attrs.stroke, colour, "Rectangle has the proper colour.");
} else if ( shapeGroupKid.className === "Label" ) {
hasLabel = true;
assert.notOk( shapeGroupKid.attrs.draggable, "Shape group 'label' must not be draggable.");
assert.equal( shapeGroupKid.children.length, 2, "Label has 2 kids.");
var labelGroupKid0 = shapeGroupKid.children[0];
assert.equal( labelGroupKid0.className, "Text", "Label group first level is a text.");
assert.equal( labelGroupKid0.attrs.text, "66.56cm2", "Text has the proper value.");
var labelGroupKid1 = shapeGroupKid.children[1];
assert.equal( labelGroupKid1.className, "Tag", "Label group second level is a tag.");
}
}
assert.ok( hasShape, "Shape group contains a shape.");
assert.ok( hasLabel, "Shape group contains a label.");
// details
if ( version !== "0.1" ) {
var details0 = details.db0puu209qe;
assert.equal( details0.textExpr, "{surface}", "Details textExpr has the proper value.");
assert.equal( details0.longText, "What a rectangle!", "Details longText has the proper value.");
}
};
/**
* Tests for {@link dwv.State} v0.1 containing a line.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: line.", function (assert) {
dwv.utils.test.TestState( "0.1", "line", assert );
});
/**
* Tests for {@link dwv.State} v0.1 containing a roi.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: roi.", function (assert) {
dwv.utils.test.TestState( "0.1", "roi", assert );
});
/**
* Tests for {@link dwv.State} v0.1 containing an ellipse.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: ellipse.", function (assert) {
dwv.utils.test.TestState( "0.1", "ellipse", assert );
});
/**
* Tests for {@link dwv.State} v0.1 containing a protractor.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: protractor.", function (assert) {
dwv.utils.test.TestState( "0.1", "protractor", assert );
});
/**
* Tests for {@link dwv.State} v0.1 containing a rectangle.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: rectangle.", function (assert) {
dwv.utils.test.TestState( "0.1", "rectangle", assert );
});
/**
* Tests for {@link dwv.State} v0.1 containing a multi slice ruler.
* @function module:tests/state
*/
QUnit.test("Test read v0.1 state: line multi-slice.", function (assert) {
dwv.utils.test.TestState( "0.1", "line_multi-slice", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing an arrow.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: arrow.", function (assert) {
dwv.utils.test.TestState( "0.2", "arrow", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a ruler.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: ruler.", function (assert) {
dwv.utils.test.TestState( "0.2", "ruler", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a roi.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: roi.", function (assert) {
dwv.utils.test.TestState( "0.2", "roi", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a hand draw.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: hand.", function (assert) {
dwv.utils.test.TestState( "0.2", "hand", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing an ellipse.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: ellipse.", function (assert) {
dwv.utils.test.TestState( "0.2", "ellipse", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a protractor.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: protractor.", function (assert) {
dwv.utils.test.TestState( "0.2", "protractor", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a rectangle.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: rectangle.", function (assert) {
dwv.utils.test.TestState( "0.2", "rectangle", assert );
});
/**
* Tests for {@link dwv.State} v0.2 containing a multi slice ruler.
* @function module:tests/state
*/
QUnit.test("Test read v0.2 state: ruler multi-slice.", function (assert) {
dwv.utils.test.TestState( "0.2", "ruler_multi-slice", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing an arrow.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: arrow.", function (assert) {
dwv.utils.test.TestState( "0.3", "arrow", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a ruler.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: ruler.", function (assert) {
dwv.utils.test.TestState( "0.3", "ruler", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a roi.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: roi.", function (assert) {
dwv.utils.test.TestState( "0.3", "roi", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a hand draw.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: hand.", function (assert) {
dwv.utils.test.TestState( "0.3", "hand", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing an ellipse.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: ellipse.", function (assert) {
dwv.utils.test.TestState( "0.3", "ellipse", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a protractor.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: protractor.", function (assert) {
dwv.utils.test.TestState( "0.3", "protractor", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a rectangle.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: rectangle.", function (assert) {
dwv.utils.test.TestState( "0.3", "rectangle", assert );
});
/**
* Tests for {@link dwv.State} v0.3 containing a multi slice ruler.
* @function module:tests/state
*/
QUnit.test("Test read v0.3 state: ruler multi-slice.", function (assert) {
dwv.utils.test.TestState( "0.3", "ruler_multi-slice", assert );
});