diff options
author | CNlucius <lukai1@huawei.com> | 2016-09-13 11:40:12 +0800 |
---|---|---|
committer | CNlucius <lukai1@huawei.com> | 2016-09-13 11:41:53 +0800 |
commit | b731e2f1dd0972409b136aebc7b463dd72c9cfad (patch) | |
tree | 5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg | |
parent | ee93993458266114c29271a481ef9ce7ce621b2a (diff) |
ONOSFW-171
O/S-SFC-ONOS scenario documentation
Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365
Signed-off-by: CNlucius <lukai1@huawei.com>
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg')
6 files changed, 0 insertions, 1166 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js deleted file mode 100644 index ccf4782f..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/geodata-spec.js +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- GeoData Service - Unit Tests - */ -describe('factory: fw/svg/geodata.js', function() { - var $log, $httpBackend, fs, gds, promise; - - beforeEach(module('onosUtil', 'onosSvg')); - - beforeEach(inject(function (_$log_, _$httpBackend_, FnService, GeoDataService) { - $log = _$log_; - $httpBackend = _$httpBackend_; - fs = FnService; - gds = GeoDataService; - gds.clearCache(); - })); - - - it('should define GeoDataService', function () { - expect(gds).toBeDefined(); - }); - - it('should define api functions', function () { - expect(fs.areFunctions(gds, [ - 'clearCache', 'fetchTopoData', 'createPathGenerator' - ])).toBeTruthy(); - }); - - it('should return null when no parameters given', function () { - promise = gds.fetchTopoData(); - expect(promise).toBeNull(); - }); - - it('should augment the id of a bundled map', function () { - var id = '*foo'; - promise = gds.fetchTopoData(id); - expect(promise.meta).toBeDefined(); - expect(promise.meta.id).toBe(id); - expect(promise.meta.url).toBe('data/map/foo.json'); - }); - - it('should treat an external id as the url itself', function () { - var id = 'some/path/to/foo'; - promise = gds.fetchTopoData(id); - expect(promise.meta).toBeDefined(); - expect(promise.meta.id).toBe(id); - expect(promise.meta.url).toBe(id + '.json'); - }); - - it('should cache the returned objects', function () { - var id = 'foo'; - promise = gds.fetchTopoData(id); - expect(promise).toBeDefined(); - expect(promise.meta.wasCached).toBeFalsy(); - expect(promise.tagged).toBeUndefined(); - - promise.tagged = 'I woz here'; - - promise = gds.fetchTopoData(id); - expect(promise).toBeDefined(); - expect(promise.meta.wasCached).toBeTruthy(); - expect(promise.tagged).toEqual('I woz here'); - }); - - it('should clear the cache when asked', function () { - var id = 'foo'; - promise = gds.fetchTopoData(id); - expect(promise.meta.wasCached).toBeFalsy(); - - promise = gds.fetchTopoData(id); - expect(promise.meta.wasCached).toBeTruthy(); - - gds.clearCache(); - promise = gds.fetchTopoData(id); - expect(promise.meta.wasCached).toBeFalsy(); - }); - - - it('should log a warning if data fails to load', function () { - var id = 'foo'; - $httpBackend.expectGET('foo.json').respond(404, 'Not found'); - spyOn($log, 'warn'); - - promise = gds.fetchTopoData(id); - $httpBackend.flush(); - expect(promise.topodata).toBeUndefined(); - expect($log.warn) - .toHaveBeenCalledWith('Failed to retrieve map TopoJSON data: foo.json', - 404, 'Not found'); - }); - - // --- path generator tests - - function simpleTopology(object) { - return { - type: "Topology", - transform: {scale: [1, 1], translate: [0, 0]}, - objects: {states: object}, - arcs: [ - [[0, 0], [1, 0], [0, 1], [-1, 0], [0, -1]], - [[0, 0], [1, 0], [0, 1]], - [[1, 1], [-1, 0], [0, -1]], - [[1, 1]], - [[0, 0]] - ] - }; - } - - function simpleLineStringTopo() { - return simpleTopology({type: "LineString", arcs: [1, 2]}); - } - - it('should use default settings if none are supplied', function () { - var gen = gds.createPathGenerator(simpleLineStringTopo()); - expect(gen.settings.objectTag).toBe('states'); - expect(gen.settings.logicalSize).toBe(1000); - expect(gen.settings.mapFillScale).toBe(.95); - // best we can do for now is test that projection is a function ... - expect(fs.isF(gen.settings.projection)).toBeTruthy(); - }); - - it('should allow us to override default settings', function () { - var gen = gds.createPathGenerator(simpleLineStringTopo(), { - mapFillScale: .80 - }); - expect(gen.settings.objectTag).toBe('states'); - expect(gen.settings.logicalSize).toBe(1000); - expect(gen.settings.mapFillScale).toBe(.80); - }); - - it('should create transformed geodata, and a path generator', function () { - var gen = gds.createPathGenerator(simpleLineStringTopo()); - expect(fs.isO(gen.settings)).toBeTruthy(); - expect(fs.isO(gen.geodata)).toBeTruthy(); - expect(fs.isF(gen.pathgen)).toBeTruthy(); - }); - // NOTE: we probably should have more unit tests that assert stuff about - // the transformed data (geo data) -- though perhaps we can rely on - // the unit testing of TopoJSON? See... - // https://github.com/mbostock/topojson/blob/master/test/feature-test.js - // and, what about the path generator?, and the computed bounds? - // In summary, more work should be done here.. - -}); diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/glyph-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/glyph-spec.js deleted file mode 100644 index 9709ec73..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/glyph-spec.js +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- Glyph Service - Unit Tests - */ -describe('factory: fw/svg/glyph.js', function() { - var $log, fs, gs, d3Elem, svg; - - var numBaseGlyphs = 42, - vbBird = '352 224 113 112', - vbGlyph = '0 0 110 110', - vbBadge = '0 0 10 10', - longPrefix = 'M95.8,9.2H14.2c-2.8,0-5,2.2-5,5v81.5c0,2.8,2.2,5,5,' + - '5h81.5c2.8,0,5-2.2,5-5V14.2C100.8,11.5,98.5,9.2,95.8,9.2z ', - tablePrefix = 'M15.9,19.1h-8v-13h8V19.1z M90.5,6.1H75.6v13h14.9V6.1' + - 'z M71.9,6.1H56.9v13h14.9V6.1z M53.2,6.1H38.3v13h14.9V6.1z M34.5,' + - '6.1H19.6v13h14.9V6.1z M102.2,6.1h-8v13h8V6.1z ', - prefixLookup = { - bird: 'M427.7,300.4', - unknown: 'M35,40a5', - node: 'M15,100a5', - switch: 'M10,20a10', - roadm: 'M10,35l25-', - endstation: 'M10,15a5,5', - router: 'M10,55A45,45', - bgpSpeaker: 'M10,40a45,35', - chain: 'M60.4,77.6c-', - crown: 'M99.5,21.6c0,', - lock: 'M79.4,48.6h', - topo: 'M97.2,76.3H86.6', - refresh: 'M102.6,40.8L88.4', - garbage: 'M94.6,20.2c', - - // navigation specific glyphs - flowTable: tablePrefix + 'M102.2,23.6H7.9v', - portTable: tablePrefix + 'M102.6,23.6v78.5H', - groupTable: 'M16,19.1H8v-13h', - - // toolbar specific glyphs - summary: longPrefix + 'M16.7', - details: longPrefix + 'M16.9', - ports: 'M98,9.2H79.6c', - map: 'M95.8,9.2H14.2c-2.8,0-5,2.2-5,5v66', - cycleLabels: 'M72.5,33.9c', - oblique: 'M80.9,30.2h', - filters: 'M24.8,13.3L', - resetZoom: 'M86,79.8L', - relatedIntents: 'M99.9,43.7', - nextIntent: 'M88.1,55.7', - prevIntent: 'M22.5,55.6', - intentTraffic: 'M14.7,71.5h', - allTraffic: 'M15.7,64.5h-7v', - flows: 'M93.8,46.1c', - eqMaster: 'M100.1,46.9l', - - // badges - uiAttached: 'M2,2.5a.5,.5', - checkMark: 'M2.6,4.5c0', - xMark: 'M9.0,7.2C8.2', - triangleUp: 'M0.5,6.2c0', - triangleDown: 'M9.5,4.2c0', - plus: 'M4,2h2v2h2v2', - minus: 'M2,4h6v2', - play: 'M2.5,2l5.5,3', - stop: 'M2.5,2.5h5', - - cloud: 'M37.6,79.5c-6.9,8.7-20.4,8.6', - - // our test ones.. - triangle: 'M.5,.2', - diamond: 'M.2,.5' - }, - glyphIds = [ - 'unknown', 'node', 'switch', 'roadm', 'endstation', 'router', - 'bgpSpeaker', 'chain', 'crown', 'lock', 'topo', 'refresh', - 'garbage', - 'flowTable', 'portTable', 'groupTable', - 'summary', 'details', 'ports', 'map', 'cycleLabels', - 'oblique', 'filters', 'resetZoom', 'relatedIntents', 'nextIntent', - 'prevIntent', 'intentTraffic', 'allTraffic', 'flows', 'eqMaster' - ], - badgeIds = [ - 'uiAttached', 'checkMark', 'xMark', 'triangleUp', 'triangleDown', - 'plus', 'minus', 'play', 'stop' - ], - spriteIds = [ - 'cloud' - ]; - - beforeEach(module('onosUtil', 'onosSvg')); - - beforeEach(inject(function (_$log_, FnService, GlyphService) { - var body = d3.select('body'); - $log = _$log_; - fs = FnService; - gs = GlyphService; - d3Elem = body.append('defs').attr('id', 'myDefs'); - svg = body.append('svg').attr('id', 'mySvg'); - })); - - afterEach(function () { - d3.select('#mySvg').remove(); - d3.select('#myDefs').remove(); - gs.clear(); - }); - - it('should define GlyphService', function () { - expect(gs).toBeDefined(); - }); - - it('should define api functions', function () { - expect(fs.areFunctions(gs, [ - 'clear', 'init', 'registerGlyphs', 'registerGlyphSet', - 'ids', 'glyph', 'loadDefs', 'addGlyph' - ])).toBe(true); - }); - - it('should start with no glyphs loaded', function () { - expect(gs.ids()).toEqual([]); - }); - - it('should load the base set of glyphs into the cache', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - }); - - it('should remove glyphs from the cache on clear', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - gs.clear(); - expect(gs.ids().length).toEqual(0); - }); - - function verifyGlyphLoadedInCache(id, vbox, expPfxId) { - var pfxId = expPfxId || id, - glyph = gs.glyph(id), - prefix = prefixLookup[pfxId], - plen = prefix.length; - expect(fs.contains(gs.ids(), id)).toBe(true); - expect(glyph).toBeDefined(); - expect(glyph.id).toEqual(id); - expect(glyph.vb).toEqual(vbox); - expect(glyph.d.slice(0, plen)).toEqual(prefix); - } - - it('should be configured with the correct number of glyphs', function () { - var nGlyphs = 1 + glyphIds.length + badgeIds.length + spriteIds.length; - expect(nGlyphs).toEqual(numBaseGlyphs); - }); - - it('should load the bird glyph', function() { - gs.init(); - verifyGlyphLoadedInCache('bird', vbBird); - }); - - it('should load the regular glyphs', function () { - gs.init(); - glyphIds.forEach(function (id) { - verifyGlyphLoadedInCache(id, vbGlyph); - }); - }); - - it('should load the badge glyphs', function () { - gs.init(); - badgeIds.forEach(function (id) { - verifyGlyphLoadedInCache(id, vbBadge); - }); - }); - - it('should load the sprites', function () { - gs.init(); - spriteIds.forEach(function (id) { - verifyGlyphLoadedInCache(id, vbGlyph); - }); - }); - - - // define some glyphs that we want to install - - var testVbox = '0 0 1 1', - triVbox = '0 0 12 12', - diaVbox = '0 0 15 15', - dTriangle = 'M.5,.2l.3,.6,h-.6z', - dDiamond = 'M.2,.5l.3,-.3l.3,.3l-.3,.3z', - newGlyphs = { - _viewbox: testVbox, - triangle: dTriangle, - diamond: dDiamond - }, - dupGlyphs = { - _viewbox: testVbox, - router: dTriangle, - switch: dDiamond - }, - altNewGlyphs = { - _triangle: triVbox, - triangle: dTriangle, - _diamond: diaVbox, - diamond: dDiamond - }, - altDupGlyphs = { - _router: triVbox, - router: dTriangle, - _switch: diaVbox, - switch: dDiamond - }, - badGlyphSet = { - triangle: dTriangle, - diamond: dDiamond - }, - warnMsg = 'GlyphService.registerGlyphs(): ', - warnMsgSet = 'GlyphService.registerGlyphSet(): ', - idCollision = warnMsg + 'ID collision: ', - idCollisionSet = warnMsgSet + 'ID collision: ', - missVbSet = warnMsgSet + 'no "_viewbox" property found', - missVbCustom = warnMsg + 'Missing viewbox property: ', - missVbTri = missVbCustom + '"_triangle"', - missVbDia = missVbCustom + '"_diamond"'; - - - it('should install new glyphs as a glyph-set', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphSet(newGlyphs); - expect(ok).toBe(true); - expect($log.warn).not.toHaveBeenCalled(); - - expect(gs.ids().length).toEqual(numBaseGlyphs + 2); - verifyGlyphLoadedInCache('triangle', testVbox); - verifyGlyphLoadedInCache('diamond', testVbox); - }); - - it('should not overwrite glyphs (via glyph-set) with dup IDs', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphSet(dupGlyphs); - expect(ok).toBe(false); - expect($log.warn).toHaveBeenCalledWith(idCollisionSet + '"switch"'); - expect($log.warn).toHaveBeenCalledWith(idCollisionSet + '"router"'); - - expect(gs.ids().length).toEqual(numBaseGlyphs); - // verify original glyphs still exist... - verifyGlyphLoadedInCache('router', vbGlyph); - verifyGlyphLoadedInCache('switch', vbGlyph); - }); - - it('should replace glyphs (via glyph-set) if asked nicely', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphSet(dupGlyphs, true); - expect(ok).toBe(true); - expect($log.warn).not.toHaveBeenCalled(); - - expect(gs.ids().length).toEqual(numBaseGlyphs); - // verify glyphs have been overwritten... - verifyGlyphLoadedInCache('router', testVbox, 'triangle'); - verifyGlyphLoadedInCache('switch', testVbox, 'diamond'); - }); - - it ('should complain if missing _viewbox in a glyph-set', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphSet(badGlyphSet); - expect(ok).toBe(false); - expect($log.warn).toHaveBeenCalledWith(missVbSet); - expect(gs.ids().length).toEqual(numBaseGlyphs); - }); - - it('should install new glyphs', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphs(altNewGlyphs); - expect(ok).toBe(true); - expect($log.warn).not.toHaveBeenCalled(); - - expect(gs.ids().length).toEqual(numBaseGlyphs + 2); - verifyGlyphLoadedInCache('triangle', triVbox); - verifyGlyphLoadedInCache('diamond', diaVbox); - }); - - it('should not overwrite glyphs with dup IDs', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphs(altDupGlyphs); - expect(ok).toBe(false); - expect($log.warn).toHaveBeenCalledWith(idCollision + '"switch"'); - expect($log.warn).toHaveBeenCalledWith(idCollision + '"router"'); - - expect(gs.ids().length).toEqual(numBaseGlyphs); - // verify original glyphs still exist... - verifyGlyphLoadedInCache('router', vbGlyph); - verifyGlyphLoadedInCache('switch', vbGlyph); - }); - - it('should replace glyphs if asked nicely', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphs(altDupGlyphs, true); - expect(ok).toBe(true); - expect($log.warn).not.toHaveBeenCalled(); - - expect(gs.ids().length).toEqual(numBaseGlyphs); - // verify glyphs have been overwritten... - verifyGlyphLoadedInCache('router', triVbox, 'triangle'); - verifyGlyphLoadedInCache('switch', diaVbox, 'diamond'); - }); - - it ('should complain if missing custom viewbox', function () { - gs.init(); - expect(gs.ids().length).toEqual(numBaseGlyphs); - spyOn($log, 'warn'); - - var ok = gs.registerGlyphs(badGlyphSet); - expect(ok).toBe(false); - expect($log.warn).toHaveBeenCalledWith(missVbTri); - expect($log.warn).toHaveBeenCalledWith(missVbDia); - expect(gs.ids().length).toEqual(numBaseGlyphs); - }); - - function verifyPathPrefix(elem, prefix) { - var plen = prefix.length, - d = elem.select('path').attr('d'); - expect(d.slice(0, plen)).toEqual(prefix); - } - - function verifyLoadedInDom(id, vb, expPfxId) { - var pfxId = expPfxId || id, - symbol = d3Elem.select('#' + id); - expect(symbol.size()).toEqual(1); - expect(symbol.attr('viewBox')).toEqual(vb); - verifyPathPrefix(symbol, prefixLookup[pfxId]); - } - - it('should load base glyphs into the DOM', function () { - gs.init(); - gs.loadDefs(d3Elem); - expect(d3Elem.selectAll('symbol').size()).toEqual(numBaseGlyphs); - verifyLoadedInDom('bgpSpeaker', vbGlyph); - }); - - it('should load custom glyphs into the DOM', function () { - gs.init(); - gs.registerGlyphSet(newGlyphs); - gs.loadDefs(d3Elem); - expect(d3Elem.selectAll('symbol').size()).toEqual(numBaseGlyphs + 2); - verifyLoadedInDom('diamond', testVbox); - }); - - it('should load only specified glyphs into the DOM', function () { - gs.init(); - gs.loadDefs(d3Elem, ['crown', 'chain', 'node']); - expect(d3Elem.selectAll('symbol').size()).toEqual(3); - verifyLoadedInDom('crown', vbGlyph); - verifyLoadedInDom('chain', vbGlyph); - verifyLoadedInDom('node', vbGlyph); - }); - - it('should add a glyph with default size', function () { - gs.init(); - var retval = gs.addGlyph(svg, 'crown'); - var what = svg.selectAll('use'); - expect(what.size()).toEqual(1); - expect(what.attr('width')).toEqual('40'); - expect(what.attr('height')).toEqual('40'); - expect(what.attr('xlink:href')).toEqual('#crown'); - expect(what.classed('glyph')).toBeTruthy(); - expect(what.classed('overlay')).toBeFalsy(); - - // check a couple on retval, which should be the same thing.. - expect(retval.attr('xlink:href')).toEqual('#crown'); - expect(retval.classed('glyph')).toBeTruthy(); - }); - - it('should add a glyph with given size', function () { - gs.init(); - gs.addGlyph(svg, 'crown', 37); - var what = svg.selectAll('use'); - expect(what.size()).toEqual(1); - expect(what.attr('width')).toEqual('37'); - expect(what.attr('height')).toEqual('37'); - expect(what.attr('xlink:href')).toEqual('#crown'); - expect(what.classed('glyph')).toBeTruthy(); - expect(what.classed('overlay')).toBeFalsy(); - }); - - it('should add a glyph marked as overlay', function () { - gs.init(); - gs.addGlyph(svg, 'crown', 20, true); - var what = svg.selectAll('use'); - expect(what.size()).toEqual(1); - expect(what.attr('width')).toEqual('20'); - expect(what.attr('height')).toEqual('20'); - expect(what.attr('xlink:href')).toEqual('#crown'); - expect(what.classed('glyph')).toBeTruthy(); - expect(what.classed('overlay')).toBeTruthy(); - }); -}); diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/icon-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/icon-spec.js deleted file mode 100644 index 99d7bc38..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/icon-spec.js +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- Icon Service - Unit Tests - */ -describe('factory: fw/svg/icon.js', function() { - var is, d3Elem; - - var viewBox = '0 0 50 50', - glyphSize = '50', - iconSize = '20'; - - - beforeEach(module('onosSvg')); - - beforeEach(inject(function (IconService) { - is = IconService; - d3Elem = d3.select('body').append('div').attr('id', 'myDiv'); - })); - - afterEach(function () { - d3.select('#myDiv').remove(); - }); - - it('should define IconService', function () { - expect(is).toBeDefined(); - }); - - function checkElemSize(elem, dim) { - expect(elem.attr('width')).toEqual(dim); - expect(elem.attr('height')).toEqual(dim); - } - - function verifyIconStructure(iconClass, useHref, iSize, vBox, gSize) { - var isz = iSize || iconSize, - vbx = vBox || viewBox, - gsz = gSize || glyphSize; - - var svg = d3Elem.selectAll('svg'); - expect(svg.size()).toBe(1); - checkElemSize(svg, isz); - expect(svg.attr('viewBox')).toEqual(vbx); - - var g = svg.selectAll('g'); - expect(g.size()).toBe(1); - expect(g.classed('icon')).toBeTruthy(); - expect(g.classed(iconClass)).toBeTruthy(); - - var rect = g.select('rect'); - expect(rect.size()).toBe(1); - checkElemSize(rect, gsz); - expect(rect.attr('rx')).toEqual('5'); - - if (useHref) { - var use = g.select('use'); - expect(use.classed('glyph')).toBeTruthy(); - expect(use.attr('xlink:href')).toEqual(useHref); - checkElemSize(use, gsz); - } - } - - it('should load an icon into a div', function () { - expect(d3Elem.html()).toEqual(''); - is.loadIconByClass(d3Elem, 'active'); - verifyIconStructure('active', '#checkMark'); - }); - - it('should allow us to specify the icon size', function () { - expect(d3Elem.html()).toEqual(''); - is.loadIconByClass(d3Elem, 'inactive', 32); - verifyIconStructure('inactive', '#xMark', '32'); - }); - - it('should verify triangleUp icon', function () { - expect(d3Elem.html()).toEqual(''); - is.loadIconByClass(d3Elem, 'upArrow', 10); - verifyIconStructure('upArrow', '#triangleUp', '10'); - }); - - it('should verify triangleDown icon', function () { - expect(d3Elem.html()).toEqual(''); - is.loadIconByClass(d3Elem, 'downArrow', 10); - verifyIconStructure('downArrow', '#triangleDown', '10'); - }); - - it('should verify no icon is displayed', function () { - expect(d3Elem.html()).toEqual(''); - is.loadIconByClass(d3Elem, 'tableColSortNone', 10); - verifyIconStructure('tableColSortNone', null, '10'); - }); - -}); diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js deleted file mode 100644 index 27848d1a..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- Map Service - Unit Tests - */ -describe('factory: fw/svg/map.js', function() { - var $log, $httpBackend, fs, ms, d3Elem, promise; - - beforeEach(module('onosUtil', 'onosSvg')); - - beforeEach(inject(function (_$log_, _$httpBackend_, FnService, MapService) { - $log = _$log_; - $httpBackend = _$httpBackend_; - fs = FnService; - ms = MapService; - //ms.clearCache(); - d3Elem = d3.select('body').append('svg').append('g').attr('id', 'mapLayer'); - })); - - afterEach(function () { - d3.select('svg').remove(); - }); - - it('should define MapService', function () { - expect(ms).toBeDefined(); - }); - - it('should define api functions', function () { - expect(fs.areFunctions(ms, [ - 'loadMapInto' - ])).toBeTruthy(); - }); - - var fakeMapId = '../tests/app/fw/svg/fake-map-data', - fakeMapUrl = fakeMapId + '.json'; - - var fakeMapData = { - "type": "Topology", - "objects": { - "states": { - "type": "GeometryCollection", - "geometries": [ - { "type": "Polygon", "arcs": [[0, 1]]}, - { "type": "Polygon", "arcs": [[2, 3]]} - ] - } - }, - "arcs": [ - [ [6347, 2300], [ -16, -9], [ -22, 1], [ -5, 3], [ 9, 6], [ 27, 7], [ 7, -8]], - [ [6447, 2350], [ -4, -4], [ -19, -41], [ -66, -14], [ 4, 9], [ 14, 2]], - [ [6290, 2347], [ -2, 83], [ -2, 76], [ -2, 75], [ -2, 76], [ -2, 76], [ -2, 75]], - [ [6329, 4211], [ -3, 6], [ -2, 4], [ 2, 1], [ 28, -1], [ 28, 0]] - ], - "transform": { - "scale": [0.005772872856602365, 0.0024829805705001468], - "translate": [-124.70997774915153, 24.542349340056283] - } - }; - - - it('should load map into layer', function () { - $httpBackend.expectGET(fakeMapUrl).respond(fakeMapData); - - var obj = ms.loadMapInto(d3Elem, fakeMapId); - //$httpBackend.flush(); - // TODO: figure out how to test this function as a black box test. - - expect(obj).toBeTruthy(); - - // todo: assert that paths are added to map layer element - }); - -}); diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js deleted file mode 100644 index ab2bfa3e..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- SVG Util Service - Unit Tests - */ -describe('factory: fw/svg/svgUtil.js', function() { - var $log, fs, sus, svg, defs, force; - - var noop = function () {}; - - beforeEach(module('onosUtil', 'onosSvg')); - - beforeEach(inject(function (_$log_, FnService, SvgUtilService) { - $log = _$log_; - fs = FnService; - sus = SvgUtilService; - svg = d3.select('body').append('svg').attr('id', 'mySvg'); - defs = svg.append('defs'); - force = d3.layout.force(); - })); - - afterEach(function () { - d3.select('svg').remove(); - }); - - it('should define SvgUtilService', function () { - expect(sus).toBeDefined(); - }); - - it('should define api functions', function () { - expect(fs.areFunctions(sus, [ - 'createDragBehavior', 'loadGlowDefs', 'cat7', - 'translate', 'scale', 'skewX', 'rotate', - 'stripPx', 'safeId', 'visible' - ])).toBeTruthy(); - }); - - // === createDragBehavior - // TODO: break up drag into separate functions for testing - // d3 needs better testing support... - - // Note: just checking to see if error message was called - // because jasmine spy isn't catching the right newline char - it('should complain if function given no parameters', function () { - spyOn($log, 'error'); - expect(sus.createDragBehavior()).toBeNull(); - expect($log.error).toHaveBeenCalled(); - }); - - it('should complain if function is not given clickEnabled', function () { - spyOn($log, 'error'); - expect(sus.createDragBehavior(force, noop, noop, noop)).toBeNull(); - expect($log.error).toHaveBeenCalled(); - }); - - it('should complain if function is not given dragEnabled', function () { - spyOn($log, 'error'); - expect(sus.createDragBehavior(force, noop, noop)).toBeNull(); - expect($log.error).toHaveBeenCalled(); - }); - - it('should complain if function is not given atDragEnd', function () { - spyOn($log, 'error'); - expect(sus.createDragBehavior(force, noop)).toBeNull(); - expect($log.error).toHaveBeenCalled(); - }); - - it('should complain if function is not given selectCb', function () { - spyOn($log, 'error'); - expect(sus.createDragBehavior(force)).toBeNull(); - expect($log.error).toHaveBeenCalled(); - }); - - // === loadGlowDefs - function checkAttrs(glow, r, g, b) { - var filterEffects, feColor, feBlur, feMerge, feMergeNodes; - - // filter attrs - expect(glow.attr('x')).toBe('-50%'); - expect(glow.attr('y')).toBe('-50%'); - expect(glow.attr('width')).toBe('200%'); - expect(glow.attr('height')).toBe('200%'); - - filterEffects = d3.selectAll(glow.node().childNodes); - expect(filterEffects.size()).toBe(3); - - // Note: d3 didn't recognize 'feColorMatrix' and others as valid selectors - // this is a work around - feColor = d3.select(filterEffects[0].shift()); - feBlur = d3.select(filterEffects[0].shift()); - feMerge = d3.select(filterEffects[0].shift()); - - // feColorMatrix attrs - expect(feColor.empty()).toBe(false); - expect(feColor.attr('type')).toBe('matrix'); - expect(feColor.attr('values')).toBe( - '0 0 0 0 ' + r + ' ' + - '0 0 0 0 ' + g + ' ' + - '0 0 0 0 ' + b + ' ' + - '0 0 0 1 0 ' - ); - - // feGuassianBlur attrs - expect(feBlur.empty()).toBe(false); - expect(feBlur.attr('stdDeviation')).toBe('3'); - expect(feBlur.attr('result')).toBe('coloredBlur'); - - // feMerge attrs - feMergeNodes = d3.selectAll(feMerge.node().childNodes); - expect(feMergeNodes.size()).toBe(2); - expect(d3.select(feMergeNodes[0][0]).attr('in')).toBe('coloredBlur'); - expect(d3.select(feMergeNodes[0][1]).attr('in')).toBe('SourceGraphic'); - } - - it('should load glow definitions', function () { - var blue, yellow; - sus.loadGlowDefs(defs); - - expect(defs.empty()).toBe(false); - expect((defs.selectAll('filter')).size()).toBe(2); - - // blue-glow specific - blue = defs.select('#blue-glow'); - expect(blue.empty()).toBe(false); - checkAttrs(blue, 0.0, 0.0, 0.7); - - // yellow-glow specific - yellow = defs.select('#yellow-glow'); - expect(yellow.empty()).toBe(false); - checkAttrs(yellow, 1.0, 1.0, 0.3); - }); - - // === cat7 - - it('should define two methods on the api', function () { - var cat7 = sus.cat7(); - expect(fs.areFunctions(cat7, [ - 'testCard', 'getColor' - ])).toBeTruthy(); - }); - - it('should provide a certain shade of blue', function () { - expect(sus.cat7().getColor('foo', false, 'light')).toEqual('#3E5780'); - }); - - it('should not matter what the ID really is for shade of blue', function () { - expect(sus.cat7().getColor('bar', false, 'light')).toEqual('#3E5780'); - }); - - it('should provide different shade of blue for muted', function () { - expect(sus.cat7().getColor('foo', true, 'light')).toEqual('#A8B8CC'); - }); - - - it('should provide an alternate (dark) shade of blue', function () { - expect(sus.cat7().getColor('foo', false, 'dark')).toEqual('#304860'); - }); - - it('should provide an alternate (dark) shade of blue for muted', function () { - expect(sus.cat7().getColor('foo', true, 'dark')).toEqual('#304860'); - }); - - it('should iterate across the colors', function () { - expect(sus.cat7().getColor('foo', false, 'light')).toEqual('#3E5780'); - expect(sus.cat7().getColor('bar', false, 'light')).toEqual('#78533B'); - expect(sus.cat7().getColor('baz', false, 'light')).toEqual('#CB4D28'); - expect(sus.cat7().getColor('goo', false, 'light')).toEqual('#018D61'); - expect(sus.cat7().getColor('zoo', false, 'light')).toEqual('#8A2979'); - expect(sus.cat7().getColor('pip', false, 'light')).toEqual('#006D73'); - expect(sus.cat7().getColor('sdh', false, 'light')).toEqual('#56AF00'); - // and cycle back to the first color for item #8 - expect(sus.cat7().getColor('bri', false, 'light')).toEqual('#3E5780'); - // and return the same color for the same ID - expect(sus.cat7().getColor('zoo', false, 'light')).toEqual('#8A2979'); - }); - - // === translate(), scale(), skewX(), rotate() - - it('should translate from two args', function () { - expect(sus.translate(1,2)).toEqual('translate(1,2)'); - }); - - it('should translate from an array', function () { - expect(sus.translate([3,4])).toEqual('translate(3,4)'); - }); - - it('should scale', function () { - expect(sus.scale(1.5,2.5)).toEqual('scale(1.5,2.5)'); - }); - - it('should skewX', function () { - expect(sus.skewX(3.14)).toEqual('skewX(3.14)'); - }); - - it('should rotate', function () { - expect(sus.rotate(45)).toEqual('rotate(45)'); - }); - - - // === stripPx() - - it('should not affect a number', function () { - expect(sus.stripPx('4')).toEqual('4'); - }); - - it('should remove trailing px', function () { - expect(sus.stripPx('4px')).toEqual('4'); - }); - - // === visible() - - it('should hide and show an element', function () { - var r = svg.append('rect'); - - sus.visible(r, false); - expect(r.style('visibility')).toEqual('hidden'); - expect(sus.visible(r)).toBe(false); - - sus.visible(r, true); - expect(r.style('visibility')).toEqual('visible'); - expect(sus.visible(r)).toBe(true); - }); -}); diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/zoom-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/zoom-spec.js deleted file mode 100644 index d70c87fb..00000000 --- a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/svg/zoom-spec.js +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SVG -- Zoom Service - Unit Tests - */ -describe('factory: fw/svg/zoom.js', function() { - var $log, fs, zs, svg, zoomLayer, zoomer; - - var cz = 'ZoomService.createZoomer(): ', - d3s = ' (D3 selection) property defined'; - - beforeEach(module('onosUtil', 'onosSvg')); - - beforeEach(inject(function (_$log_, FnService, ZoomService) { - $log = _$log_; - fs = FnService; - zs = ZoomService; - svg = d3.select('body').append('svg').attr('id', 'mySvg'); - zoomLayer = svg.append('g').attr('id', 'myZoomlayer'); - })); - - afterEach(function () { - d3.select('#mySvg').remove(); - // Note: since zoomLayer is a child of svg, it should be removed also - }); - - it('should define ZoomService', function () { - expect(zs).toBeDefined(); - }); - - it('should define api functions', function () { - expect(fs.areFunctions(zs, ['createZoomer'])).toBeTruthy(); - }); - - function verifyZoomerApi() { - expect(fs.areFunctions(zoomer, [ - 'panZoom', 'reset', 'translate', 'scale', 'scaleExtent' - ])).toBeTruthy(); - } - - it('should fail gracefully with no option object', function () { - spyOn($log, 'error'); - - zoomer = zs.createZoomer(); - expect($log.error).toHaveBeenCalledWith(cz + 'No "svg" (svg tag)' + d3s); - expect($log.error).toHaveBeenCalledWith(cz + 'No "zoomLayer" (g tag)' + d3s); - expect(zoomer).toBeNull(); - }); - - it('should complain if we miss required options', function () { - spyOn($log, 'error'); - - zoomer = zs.createZoomer({}); - expect($log.error).toHaveBeenCalledWith(cz + 'No "svg" (svg tag)' + d3s); - expect($log.error).toHaveBeenCalledWith(cz + 'No "zoomLayer" (g tag)' + d3s); - expect(zoomer).toBeNull(); - }); - - it('should work with minimal parameters', function () { - spyOn($log, 'error'); - - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer - }); - expect($log.error).not.toHaveBeenCalled(); - verifyZoomerApi(); - }); - - it('should start at scale 1 and translate 0,0', function () { - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer - }); - verifyZoomerApi(); - expect(zoomer.translate()).toEqual([0,0]); - expect(zoomer.scale()).toEqual(1); - }); - - it('should allow programmatic pan/zoom', function () { - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer - }); - verifyZoomerApi(); - expect(zoomer.translate()).toEqual([0,0]); - expect(zoomer.scale()).toEqual(1); - - zoomer.panZoom([20,30], 3); - expect(zoomer.translate()).toEqual([20,30]); - expect(zoomer.scale()).toEqual(3); - }); - - it('should provide default scale extent', function () { - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer - }); - expect(zoomer.scaleExtent()).toEqual([0.25, 10]); - }); - - it('should allow us to override the minimum zoom', function () { - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer, - zoomMin: 1.23 - }); - expect(zoomer.scaleExtent()).toEqual([1.23, 10]); - }); - - it('should allow us to override the maximum zoom', function () { - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer, - zoomMax: 13 - }); - expect(zoomer.scaleExtent()).toEqual([0.25, 13]); - }); - - // TODO: test zoomed() where we fake out the d3.event.sourceEvent etc... - // need to check default enabled (true) and custom enabled predicate - // need to check that the callback is invoked also - - it('should invoke the callback on programmatic pan/zoom', function () { - var foo = { cb: function () {} }; - spyOn(foo, 'cb'); - - zoomer = zs.createZoomer({ - svg: svg, - zoomLayer: zoomLayer, - zoomCallback: foo.cb - }); - - zoomer.panZoom([0,0], 2); - expect(foo.cb).toHaveBeenCalled(); - }); - -}); |