diff options
author | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2018-11-12 23:09:25 +0100 |
---|---|---|
committer | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2018-11-28 13:42:25 +0100 |
commit | 675847a99f1640c87df0a6187eeb34b90d903666 (patch) | |
tree | 78483c739c2b164cd6b098d952658d636e3be745 /spec/helpers.js | |
parent | fa0461eeddf65a249e1a674305684ae756a69965 (diff) | |
download | svg.js-675847a99f1640c87df0a6187eeb34b90d903666.tar.gz svg.js-675847a99f1640c87df0a6187eeb34b90d903666.zip |
plumber differences between node and browser so that tests run on both
Diffstat (limited to 'spec/helpers.js')
-rw-r--r-- | spec/helpers.js | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/spec/helpers.js b/spec/helpers.js new file mode 100644 index 0000000..23f92bb --- /dev/null +++ b/spec/helpers.js @@ -0,0 +1,159 @@ +import { getWindow } from '../src/utils/window.js' + +function tag(name, attrs, children) { + let doc = getWindow().document + var el = doc.createElement(name) + + for(var i in attrs){ + el.setAttribute(i, attrs[i]) + } + + for(var i in children){ + if(typeof children[i] == 'string') + children[i] = doc.createTextNode(children[i]) + + el.appendChild(children[i]) + } + + return el +} + +export function fixtures () { + return tag('svg', { + height:0, + width:0, + id:'inlineSVG' + },[ + tag('defs', {}, [ + tag('linearGradient', {}, [ + tag('stop', {offset: '5%', 'stop-color': 'green'}), + tag('stop', {offset: '95%', 'stop-color': 'gold'}), + ]), + tag('radialGradient', {}, [ + tag('stop', {offset: '5%', 'stop-color': 'green'}), + tag('stop', {offset: '95%', 'stop-color': 'gold'}), + ]) + ]), + tag('desc', {}, ['Some description']), + tag('path', { + id: 'lineAB', + d: 'M 100 350 l 150 -300', + stroke: 'red', + 'stroke-width': '3', + fill: 'none' + }), + tag('path', { + id: 'lineBC', + d: 'M 250 50 l 150 300', + stroke: 'red', + 'stroke-width': '3', + fill: 'none' + }), + tag('path', { + d: 'M 175 200 l 150 0', + stroke: 'green', + 'stroke-width': '3', + fill: 'none' + }), + tag('path', { + d: 'M 100 350 q 150 -300 300 0', + stroke: 'blue', + 'stroke-width': '5', + fill: 'none' + }), + tag('g', { + stroke: 'black', + 'stroke-width': '2', + fill: 'black', + id: 'pointGroup' + },[ + tag('circle', { + id: 'pointA', + cx: '100', + cy: '350', + r: '3', + }), + tag('circle', { + id: 'pointB', + cx: '250', + cy: '50', + r: '50', + }), + tag('circle', { + id: 'pointC', + cx: '400', + cy: '350', + r: '50', + }) + ]), + tag('g', { + 'font-size': '30', + font: 'sans-serif', + fill: 'black', + stroke: 'none', + 'text-anchor': 'middle', + id: 'labelGroup' + },[ + tag('text', { + x: '100', + y: '350', + dy: '-30', + }, ['A']), + tag('text', { + x: '250', + y: '50', + dy: '-10', + }, ['B']), + tag('text', { + x: '400', + y: '350', + dx: '30', + }, ['C']) + ]), + tag('polygon', {points: '200,10 250,190 160,210'}), + tag('polyline', {points: '20,20 40,25 60,40 80,120 120,140 200,180'}) + ]) +} + +export function buildFixtures () { + let doc = getWindow().document + let body = doc.body || doc.documentElement + + let div = doc.createElement('div') + div.id = 'fixtures' + + try { + // FIXME: doesnt work in svgdom + div.style.position = 'absolute' + div.style.top = 0 + div.style.left = 0 + } catch (e) {} + + div.appendChild(fixtures()) + body.appendChild(div) +} + +export function buildCanvas () { + let doc = getWindow().document + let body = doc.body || doc.documentElement + + let div = doc.createElement('div') + div.id = 'canvas' + + try { + // FIXME: doesnt work in svgdom + div.style.position = 'absolute' + div.style.top = 0 + div.style.left = 0 + } catch (e) {} + body.appendChild(div) +} + +export function clear () { + let doc = getWindow().document + let canvas = doc.getElementById('canvas') + //let fixtures = doc.getElementById('fixtures') + + //fixtures.parentNode.removeChild(fixtures) + canvas.parentNode.removeChild(canvas) +} |