From e785b471f472e2ec7a0a81e11535167c545f4c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20GOUIN?= Date: Thu, 11 Jul 2019 16:03:27 +0200 Subject: [PATCH] more unit tests --- src/placing.js | 6 ++--- test/placing.test.js | 58 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/placing.js b/src/placing.js index 680072a..cca2f71 100644 --- a/src/placing.js +++ b/src/placing.js @@ -23,7 +23,7 @@ module.exports = (options) => { /** * @param {Object} nodes */ - debugMap: (nodes) => { + /*debugMap: (nodes) => { const b = self.getBounds(nodes); const map = newmap(b.w, b.h).map(row => row.map(() => [])); @@ -38,7 +38,7 @@ module.exports = (options) => { })); out = out.map(row => row.map(cell => cell + new Array(maxLen - cell.length).fill(' ').join(''))); console.log('\n' + out.map(row => row.join('|')).join('\n') + '\n'); - }, + },*/ /** * Get the current bounds of the graph of nodes @@ -255,7 +255,7 @@ module.exports = (options) => { * @returns {null|Object} */ applyLinks: (nodes, links, depth = 0) => { - if (self.debug) self.debugMap(nodes); + //if (self.debug) self.debugMap(nodes); if (!self.isValid(nodes, links)) { if (self.debug) console.log(`${new Array(depth).fill('.').join('')}invalid node placement`); diff --git a/test/placing.test.js b/test/placing.test.js index 334bb2c..22d92d1 100644 --- a/test/placing.test.js +++ b/test/placing.test.js @@ -129,7 +129,21 @@ describe('getPosition', () => { }, 'a', true); expect(res).toEqual({x: null, y: null, free: true}); }); - test('constrained to another', () => { + test('constrained to another not placed', () => { + const res = placing({debug: true, 'max-link-length': 2}).getPosition({ + 'a': { + const: { + afterX: [], + beforeX: ['b'], + afterY: [], + beforeY: [] + } + }, + 'b': {} + }, 'a', true); + expect(res).toEqual({x: null, y: null, free: true}); + }); + test('constrained to another left', () => { const res = placing({debug: true, 'max-link-length': 2}).getPosition({ 'a': { const: { @@ -143,6 +157,48 @@ describe('getPosition', () => { }, 'a', true); expect(res).toEqual({x: 1, y: 0, free: false}); }); + test('constrained to another right', () => { + const res = placing({debug: true, 'max-link-length': 2}).getPosition({ + 'a': { + const: { + afterX: ['b'], + beforeX: [], + afterY: [], + beforeY: [] + } + }, + 'b': {x: 0, y: 0} + }, 'a', true); + expect(res).toEqual({x: -1, y: 0, free: false}); + }); + test('constrained to another up', () => { + const res = placing({debug: true, 'max-link-length': 2}).getPosition({ + 'a': { + const: { + afterX: [], + beforeX: [], + afterY: [], + beforeY: ['b'] + } + }, + 'b': {x: 0, y: 0} + }, 'a', true); + expect(res).toEqual({x: 0, y: 1, free: false}); + }); + test('constrained to another down', () => { + const res = placing({debug: true, 'max-link-length': 2}).getPosition({ + 'a': { + const: { + afterX: [], + beforeX: [], + afterY: ['b'], + beforeY: [] + } + }, + 'b': {x: 0, y: 0} + }, 'a', true); + expect(res).toEqual({x: 0, y: -1, free: false}); + }); test('double constrained diagonal', () => { const res = placing({debug: true, 'max-link-length': 2}).getPosition({ 'a': {