aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js')
-rw-r--r--framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js414
1 files changed, 0 insertions, 414 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js
deleted file mode 100644
index 725bd475..00000000
--- a/framework/src/onos/web/gui/src/main/webapp/tests/app/view/topo/topoModel-spec.js
+++ /dev/null
@@ -1,414 +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 -- Topo View -- Topo Model Service - Unit Tests
- */
-describe('factory: view/topo/topoModel.js', function() {
- var $log, fs, rnd, tms;
-
- // stop random numbers from being quite so random
- var mockRandom = {
- // mock spread returns s + 1
- spread: function (s) {
- return s + 1;
- },
- // mock random dimension returns d / 2 - 1
- randDim: function (d) {
- return d/2 - 1;
- },
- mock: 'yup'
- };
-
- // to mock out the [lng,lat] <=> [x,y] transformations, we will
- // add/subtract 2000, 3000 respectively:
- // lng:2005 === x:5, lat:3004 === y:4
-
- var mockProjection = function (lnglat) {
- return [lnglat[0] - 2000, lnglat[1] - 3000];
- };
-
- mockProjection.invert = function (xy) {
- return [xy[0] + 2000, xy[1] + 3000];
- };
-
- // our test devices and hosts:
- var dev1 = {
- 'class': 'device',
- id: 'dev1',
- x: 17,
- y: 27,
- online: true
- },
- dev2 = {
- 'class': 'device',
- id: 'dev2',
- x: 18,
- y: 28,
- online: true
- },
- host1 = {
- 'class': 'host',
- id: 'host1',
- x: 23,
- y: 33,
- cp: {
- device: 'dev1',
- port: 7
- },
- ingress: 'dev1/7-host1'
- },
- host2 = {
- 'class': 'host',
- id: 'host2',
- x: 24,
- y: 34,
- cp: {
- device: 'dev0',
- port: 0
- },
- ingress: 'dev0/0-host2'
- };
-
-
- // our test api
- var api = {
- projection: function () { return mockProjection; },
- network: {
- nodes: [dev1, dev2, host1, host2],
- links: [],
- lookup: {dev1: dev1, dev2: dev2, host1: host1, host2: host2},
- revLinkToKey: {}
- },
- restyleLinkElement: function () {},
- removeLinkElement: function () {}
- };
-
- // our test dimensions and well known locations..
- var dim = [20, 40],
- randLoc = [9, 19], // random location using randDim(): d/2-1
- randHostLoc = [40, 50], // host "near" random location
- // given that 'nearDist' = 15
- // and spread(15) = 16
- // 9 + 15 + 16 = 40; 19 + 15 + 16 = 50
- nearDev1 = [48,58], // [17+15+16, 27+15+16]
- dev1Loc = [17,27],
- dev2Loc = [18,28],
- host1Loc = [23,33],
- host2Loc = [24,34];
-
- // implement some custom matchers...
- beforeEach(function () {
- jasmine.addMatchers({
- toBePositionedAt: function () {
- return {
- compare: function (actual, xy) {
- var result = {},
- actCoord = [actual.x, actual.y];
-
- result.pass = (actual.x === xy[0]) && (actual.y === xy[1]);
-
- if (result.pass) {
- // for negation with ".not"
- result.message = 'Expected [' + actCoord +
- '] NOT to be positioned at [' + xy + ']';
- } else {
- result.message = 'Expected [' + actCoord +
- '] to be positioned at [' + xy + ']';
- }
- return result;
- }
- }
- },
- toHaveEndPoints: function () {
- return {
- compare: function (actual, xy1, xy2) {
- var result = {};
-
- result.pass = (actual.source.x === xy1[0]) &&
- (actual.source.y === xy1[1]) &&
- (actual.target.x === xy2[0]) &&
- (actual.target.y === xy2[1]);
-
- if (result.pass) {
- // for negation with ".not"
- result.message = 'Expected ' + actual +
- ' NOT to have endpoints [' + xy1 + ']-[' + xy2 + ']';
- } else {
- result.message = 'Expected ' + actual +
- ' to have endpoints [' + xy1 + ']-[' + xy2 + ']';
- }
- return result;
- }
- }
- },
- toBeFixed: function () {
- return {
- compare: function (actual) {
- var result = {
- pass: actual.fixed
- };
- if (result.pass) {
- result.message = 'Expected ' + actual +
- ' NOT to be fixed!';
- } else {
- result.message = 'Expected ' + actual +
- ' to be fixed!';
- }
- return result;
- }
- }
- }
- });
- });
-
- beforeEach(module('ovTopo', 'onosUtil'));
-
- beforeEach(function () {
- module(function ($provide) {
- $provide.value('RandomService', mockRandom);
- });
- });
-
- beforeEach(inject(function (_$log_, FnService, RandomService, TopoModelService) {
- $log = _$log_;
- fs = FnService;
- rnd = RandomService;
- tms = TopoModelService;
- tms.initModel(api, dim);
- }));
-
-
- it('should install the mock random service', function () {
- expect(rnd.mock).toBe('yup');
- expect(rnd.spread(4)).toBe(5);
- expect(rnd.randDim(8)).toBe(3);
- });
-
- it('should install the mock projection', function () {
- expect(tms.coordFromLngLat({lng: 2005, lat: 3004})).toEqual([5,4]);
- expect(tms.lngLatFromCoord([5,4])).toEqual([2005,3004]);
- });
-
- it('should define TopoModelService', function () {
- expect(tms).toBeDefined();
- });
-
- it('should define api functions', function () {
- expect(fs.areFunctions(tms, [
- 'initModel', 'newDim', 'destroyModel',
- 'positionNode', 'createDeviceNode', 'createHostNode',
- 'createHostLink', 'createLink',
- 'coordFromLngLat', 'lngLatFromCoord',
- 'findLink', 'findLinkById', 'findDevices',
- 'findAttachedHosts', 'findAttachedLinks', 'findBadLinks'
- ])).toBeTruthy();
- });
-
- // === unit tests for positionNode()
-
- it('should position a node using meta x/y', function () {
- var node = {
- metaUi: { x:37, y:48 }
- };
- tms.positionNode(node);
- expect(node).toBePositionedAt([37,48]);
- expect(node).toBeFixed();
- });
-
- it('should position a node by translating lng/lat', function () {
- var node = {
- location: {
- type: 'latlng',
- lng: 2008,
- lat: 3009
- }
- };
- tms.positionNode(node);
- expect(node).toBePositionedAt([8,9]);
- expect(node).toBeFixed();
- });
-
- it('should position a device with no location randomly', function () {
- var node = { 'class': 'device' };
- tms.positionNode(node);
- expect(node).toBePositionedAt(randLoc);
- expect(node).not.toBeFixed();
- });
-
- it('should position a device randomly even if x/y set', function () {
- var node = { 'class': 'device', x: 1, y: 2 };
- tms.positionNode(node);
- expect(node).toBePositionedAt(randLoc);
- expect(node).not.toBeFixed();
- });
-
- it('should NOT reposition a device randomly on update', function () {
- var node = { 'class': 'device', x: 1, y: 2 };
- tms.positionNode(node, true);
- expect(node).toBePositionedAt([1,2]);
- expect(node).not.toBeFixed();
- });
-
- it('should position a host close to its device', function () {
- var node = { 'class': 'host', cp: { device: 'dev1' } };
- tms.positionNode(node);
-
- // note: nearDist is 15; spread(15) adds 16; dev1 at [17,27]
-
- expect(node).toBePositionedAt(nearDev1);
- expect(node).not.toBeFixed();
- });
-
- it('should randomize host with no assoc device', function () {
- var node = { 'class': 'host', cp: { device: 'dev0' } };
- tms.positionNode(node);
-
- // note: no device gives 'rand loc' [9,19]
- // nearDist is 15; spread(15) adds 16
-
- expect(node).toBePositionedAt(randHostLoc);
- expect(node).not.toBeFixed();
- });
-
- // === unit tests for createDeviceNode()
-
- it('should create a basic device node', function () {
- var node = tms.createDeviceNode({ id: 'foo' });
- expect(node).toBePositionedAt(randLoc);
- expect(node).not.toBeFixed();
- expect(node.class).toEqual('device');
- expect(node.svgClass).toEqual('node device');
- expect(node.id).toEqual('foo');
- });
-
- it('should create device node with type', function () {
- var node = tms.createDeviceNode({ id: 'foo', type: 'cool' });
- expect(node).toBePositionedAt(randLoc);
- expect(node).not.toBeFixed();
- expect(node.class).toEqual('device');
- expect(node.svgClass).toEqual('node device cool');
- expect(node.id).toEqual('foo');
- });
-
- it('should create online device node with type', function () {
- var node = tms.createDeviceNode({ id: 'foo', type: 'cool', online: true });
- expect(node).toBePositionedAt(randLoc);
- expect(node).not.toBeFixed();
- expect(node.class).toEqual('device');
- expect(node.svgClass).toEqual('node device cool online');
- expect(node.id).toEqual('foo');
- });
-
- it('should create online device node with type and lng/lat', function () {
- var node = tms.createDeviceNode({
- id: 'foo',
- type: 'yowser',
- online: true,
- location: {
- type: 'latlng',
- lng: 2048,
- lat: 3096
- }
- });
- expect(node).toBePositionedAt([48,96]);
- expect(node).toBeFixed();
- expect(node.class).toEqual('device');
- expect(node.svgClass).toEqual('node device yowser online');
- expect(node.id).toEqual('foo');
- });
-
- // === unit tests for createHostNode()
-
- it('should create a basic host node', function () {
- var node = tms.createHostNode({ id: 'bar', cp: { device: 'dev0' } });
- expect(node).toBePositionedAt(randHostLoc);
- expect(node).not.toBeFixed();
- expect(node.class).toEqual('host');
- expect(node.svgClass).toEqual('node host endstation');
- expect(node.id).toEqual('bar');
- });
-
- it('should create a host with type', function () {
- var node = tms.createHostNode({
- id: 'bar',
- type: 'classic',
- cp: { device: 'dev1' }
- });
- expect(node).toBePositionedAt(nearDev1);
- expect(node).not.toBeFixed();
- expect(node.class).toEqual('host');
- expect(node.svgClass).toEqual('node host classic');
- expect(node.id).toEqual('bar');
- });
-
- // === unit tests for createHostLink()
-
- it('should create a basic host link', function () {
- var link = tms.createHostLink(host1);
- expect(link.source).toEqual(host1);
- expect(link.target).toEqual(dev1);
- expect(link).toHaveEndPoints(host1Loc, dev1Loc);
- expect(link.key).toEqual('dev1/7-host1');
- expect(link.class).toEqual('link');
- expect(link.type()).toEqual('hostLink');
- expect(link.linkWidth()).toEqual(1);
- expect(link.online()).toEqual(true);
- });
-
- it('should return null for failed endpoint lookup', function () {
- spyOn($log, 'error');
- var link = tms.createHostLink(host2);
- expect(link).toBeNull();
- expect($log.error).toHaveBeenCalledWith(
- 'Node(s) not on map for link:\n[dst] "dev0" missing'
- );
- });
-
- // === unit tests for createLink()
-
- it('should return null for missing endpoints', function () {
- spyOn($log, 'error');
- var link = tms.createLink({src: 'dev0', dst: 'dev00'});
- expect(link).toBeNull();
- expect($log.error).toHaveBeenCalledWith(
- 'Node(s) not on map for link:\n[src] "dev0" missing\n[dst] "dev00" missing'
- );
- });
-
- it('should create a basic link', function () {
- var linkData = {
- src: 'dev1',
- dst: 'dev2',
- id: 'baz',
- type: 'zoo',
- online: true,
- linkWidth: 1.5
- },
- link = tms.createLink(linkData);
- expect(link.source).toEqual(dev1);
- expect(link.target).toEqual(dev2);
- expect(link).toHaveEndPoints(dev1Loc, dev2Loc);
- expect(link.key).toEqual('baz');
- expect(link.class).toEqual('link');
- expect(link.fromSource).toBe(linkData);
- expect(link.type()).toEqual('zoo');
- expect(link.online()).toEqual(true);
- expect(link.linkWidth()).toEqual(1.5);
- });
-
- // TODO: more unit tests for additional functions....
-});