745 lines
33 KiB
JavaScript
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 );
|
|
});
|