|  |  |  | 
|---|
|  |  |  | <script type='text/javascript' src='../editor/src/browser.js'></script> | 
|---|
|  |  |  | <script type='text/javascript' src='../editor/src/svgutils.js'></script> | 
|---|
|  |  |  | <script type='text/javascript' src='../editor/src/draw.js'></script> | 
|---|
|  |  |  | <script type='text/javascript' src='qunit/qunit.js'></script> | 
|---|
|  |  |  | <script type='text/javascript' src='qunit/qunit.js'></script> | 
|---|
|  |  |  | <script type='text/javascript'> | 
|---|
|  |  |  | $(function() { | 
|---|
|  |  |  | // log function | 
|---|
|  |  |  | 
|---|
|  |  |  | // Set up <svg> with nonce. | 
|---|
|  |  |  | var svg_n = document.createElementNS(SVGNS, 'svg'); | 
|---|
|  |  |  | svg_n.setAttributeNS(XMLNSNS, 'xmlns:se', SENS); | 
|---|
|  |  |  | svg_n.setAttributeNS(SENS, 'se:nonce', NONCE); | 
|---|
|  |  |  | svg_n.setAttributeNS(SENS, 'se:nonce', NONCE); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var setupSvgWith3Layers = function(svgElem) { | 
|---|
|  |  |  | var layer1 = document.createElementNS(SVGNS, 'g'); | 
|---|
|  |  |  | 
|---|
|  |  |  | layer3.appendChild(layer3_title); | 
|---|
|  |  |  | svgElem.appendChild(layer3); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var cleanupSvg = function(svgElem) { | 
|---|
|  |  |  | while(svgElem.firstChild) {svgElem.removeChild(svgElem.firstChild);} | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test draw module', function() { | 
|---|
|  |  |  | expect(4); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(svgedit.draw); | 
|---|
|  |  |  | equals(typeof svgedit.draw, typeof {}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(svgedit.draw.Drawing); | 
|---|
|  |  |  | equals(typeof svgedit.draw.Drawing, typeof function(){}); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test document creation', function() { | 
|---|
|  |  |  | expect(3); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | var doc = new svgedit.draw.Drawing(); | 
|---|
|  |  |  | ok(false, 'Created drawing without a valid <svg> element'); | 
|---|
|  |  |  | 
|---|
|  |  |  | doc = new svgedit.draw.Drawing(svg_n); | 
|---|
|  |  |  | equals(doc.getNonce(), NONCE); | 
|---|
|  |  |  | equals(doc.getSvgElem().getAttributeNS(SENS, 'nonce'), NONCE); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doc.clearNonce(); | 
|---|
|  |  |  | ok(!doc.getNonce()); | 
|---|
|  |  |  | ok(!doc.getSvgElem().getAttributeNS(SENS, 'se:nonce')); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | doc.setNonce(NONCE); | 
|---|
|  |  |  | equals(doc.getNonce(), NONCE); | 
|---|
|  |  |  | equals(doc.getSvgElem().getAttributeNS(SENS, 'nonce'), NONCE); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getId() and getNextId() without nonce', function() { | 
|---|
|  |  |  | expect(7); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var elem2 = document.createElementNS(SVGNS, 'circle'); | 
|---|
|  |  |  | elem2.id = 'svg_2'; | 
|---|
|  |  |  | svg.appendChild(elem2); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(doc.getNextId(), "svg_4"); | 
|---|
|  |  |  | equals(doc.getId(), "svg_4"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // clean out svg document | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getId() and getNextId() with nonce', function() { | 
|---|
|  |  |  | expect(7); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var prefix = "svg_" + NONCE; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var elem2 = document.createElementNS(SVGNS, 'circle'); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg_n); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test releaseId()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ok(result); | 
|---|
|  |  |  | equals(doc.getNextId(), firstId); | 
|---|
|  |  |  | equals(doc.getNextId(), "svg_3"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(!doc.releaseId("bad-id")); | 
|---|
|  |  |  | ok(doc.releaseId(firstId)); | 
|---|
|  |  |  | ok(!doc.releaseId(firstId)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getNumLayers', function() { | 
|---|
|  |  |  | expect(3); | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(drawing.getNumLayers(), 3); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(typeof drawing.hasLayer, typeof function() {}); | 
|---|
|  |  |  | ok(!drawing.hasLayer('invalid-layer')); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test identifyLayers() with empty document', function() { | 
|---|
|  |  |  | expect(9); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // By default, an empty document gets an empty group created. | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test identifyLayers() with some layers', function() { | 
|---|
|  |  |  | expect(5); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(svg.childNodes.length, 3); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(drawing.getNumLayers(), 3); | 
|---|
|  |  |  | equals(drawing.all_layers[0][1], svg.childNodes.item(0)); | 
|---|
|  |  |  | equals(drawing.all_layers[1][1], svg.childNodes.item(1)); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test identifyLayers() with some layers and orphans', function() { | 
|---|
|  |  |  | expect(10); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var orphan1 = document.createElementNS(SVGNS, 'rect'); | 
|---|
|  |  |  | var orphan2 = document.createElementNS(SVGNS, 'rect'); | 
|---|
|  |  |  | svg.appendChild(orphan1); | 
|---|
|  |  |  | svg.appendChild(orphan2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(svg.childNodes.length, 5); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(drawing.getNumLayers(), 4); | 
|---|
|  |  |  | equals(drawing.all_layers[0][1], svg.childNodes.item(0)); | 
|---|
|  |  |  | equals(drawing.all_layers[1][1], svg.childNodes.item(1)); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getLayerName()', function() { | 
|---|
|  |  |  | expect(4); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(drawing.getNumLayers(), 3); | 
|---|
|  |  |  | equals(drawing.getLayerName(0), LAYER1); | 
|---|
|  |  |  | equals(drawing.getLayerName(1), LAYER2); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getCurrentLayer()', function() { | 
|---|
|  |  |  | expect(4); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test setCurrentLayer() and getCurrentLayerName()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.setCurrentLayer); | 
|---|
|  |  |  | equals(typeof drawing.setCurrentLayer, typeof function(){}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.setCurrentLayer(LAYER2); | 
|---|
|  |  |  | equals(drawing.getCurrentLayerName(LAYER2), LAYER2); | 
|---|
|  |  |  | equals(drawing.getCurrentLayer(), drawing.all_layers[1][1]); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test createLayer()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.createLayer); | 
|---|
|  |  |  | equals(typeof drawing.createLayer, typeof function(){}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var NEW_LAYER_NAME = 'Layer A'; | 
|---|
|  |  |  | var layer_g = drawing.createLayer(NEW_LAYER_NAME); | 
|---|
|  |  |  | equals(4, drawing.getNumLayers()); | 
|---|
|  |  |  | equals(layer_g, drawing.getCurrentLayer()); | 
|---|
|  |  |  | equals(NEW_LAYER_NAME, drawing.getCurrentLayerName()); | 
|---|
|  |  |  | equals(NEW_LAYER_NAME, drawing.getLayerName(3)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getLayerVisibility()', function() { | 
|---|
|  |  |  | expect(5); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.getLayerVisibility); | 
|---|
|  |  |  | equals(typeof drawing.getLayerVisibility, typeof function(){}); | 
|---|
|  |  |  | ok(drawing.getLayerVisibility(LAYER1)); | 
|---|
|  |  |  | ok(drawing.getLayerVisibility(LAYER2)); | 
|---|
|  |  |  | ok(drawing.getLayerVisibility(LAYER3)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test setLayerVisibility()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.setLayerVisibility); | 
|---|
|  |  |  | equals(typeof drawing.setLayerVisibility, typeof function(){}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ok(!drawing.getLayerVisibility(LAYER1)); | 
|---|
|  |  |  | ok(drawing.getLayerVisibility(LAYER2)); | 
|---|
|  |  |  | ok(!drawing.getLayerVisibility(LAYER3)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.setLayerVisibility(LAYER3, 'test-string'); | 
|---|
|  |  |  | ok(!drawing.getLayerVisibility(LAYER3)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(!drawing.getLayerVisibility(LAYER3)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test getLayerOpacity()', function() { | 
|---|
|  |  |  | expect(5); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.getLayerOpacity); | 
|---|
|  |  |  | equals(typeof drawing.getLayerOpacity, typeof function(){}); | 
|---|
|  |  |  | ok(drawing.getLayerOpacity(LAYER1) == 1.0); | 
|---|
|  |  |  | ok(drawing.getLayerOpacity(LAYER2) == 1.0); | 
|---|
|  |  |  | ok(drawing.getLayerOpacity(LAYER3) == 1.0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test setLayerOpacity()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ok(drawing.setLayerOpacity); | 
|---|
|  |  |  | equals(typeof drawing.setLayerOpacity, typeof function(){}); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.setLayerOpacity(LAYER3, 100); | 
|---|
|  |  |  | ok(drawing.getLayerOpacity(LAYER3) == 1.0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | cleanupSvg(svg); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test deleteCurrentLayer()', function() { | 
|---|
|  |  |  | expect(6); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg); | 
|---|
|  |  |  | setupSvgWith3Layers(svg); | 
|---|
|  |  |  | drawing.identifyLayers(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing.setCurrentLayer(LAYER2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var curLayer = drawing.getCurrentLayer(); | 
|---|
|  |  |  | equals(curLayer, drawing.all_layers[1][1]); | 
|---|
|  |  |  | var deletedLayer = drawing.deleteCurrentLayer(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | equals(curLayer, deletedLayer); | 
|---|
|  |  |  | equals(2, drawing.getNumLayers()); | 
|---|
|  |  |  | equals(LAYER1, drawing.all_layers[0][0]); | 
|---|
|  |  |  | equals(LAYER3, drawing.all_layers[1][0]); | 
|---|
|  |  |  | equals(drawing.getCurrentLayer(), drawing.all_layers[1][1]); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | test('Test svgedit.draw.randomizeIds()', function() { | 
|---|
|  |  |  | expect(9); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | // if there is a nonce. | 
|---|
|  |  |  | var drawing = new svgedit.draw.Drawing(svg_n.cloneNode(true)); | 
|---|
|  |  |  | ok(!!drawing.getNonce()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing = new svgedit.draw.Drawing(svg.cloneNode(true)); | 
|---|
|  |  |  | ok(!drawing.getNonce()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing = new svgedit.draw.Drawing(svg.cloneNode(true)); | 
|---|
|  |  |  | ok(!drawing.getNonce()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | drawing = new svgedit.draw.Drawing(svg_n.cloneNode(true)); | 
|---|
|  |  |  | ok(!drawing.getNonce()); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | </head> | 
|---|
|  |  |  | <body> | 
|---|
|  |  |  | </head> | 
|---|
|  |  |  | <body> | 
|---|
|  |  |  | <h1 id='qunit-header'>Unit Tests for draw.js</h1> | 
|---|
|  |  |  | <h2 id='qunit-banner'></h2> | 
|---|
|  |  |  | <h2 id='qunit-userAgent'></h2> | 
|---|
|  |  |  | 
|---|
|  |  |  | </ol> | 
|---|
|  |  |  | <div id='anchor' style='visibility:hidden'> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </body> | 
|---|
|  |  |  | </body> | 
|---|
|  |  |  | </html> | 
|---|