diff --git a/src/__tests__/distance_matrix/creation.test.js b/src/__tests__/distance_matrix/creation.test.js index 1b59287..ee72a79 100644 --- a/src/__tests__/distance_matrix/creation.test.js +++ b/src/__tests__/distance_matrix/creation.test.js @@ -83,6 +83,10 @@ describe('DistanceMatrix creation', () => { ); }); + it('fromCompact empty', () => { + expect(DistanceMatrix.fromCompact([]).to2DArray()).toStrictEqual([]); + }); + it('zeros', () => { expect(DistanceMatrix.zeros(3).to2DArray()).toStrictEqual([ [0, 0, 0], diff --git a/src/__tests__/distance_matrix/export.test.js b/src/__tests__/distance_matrix/export.test.js index fbdf1ff..4aced5f 100644 --- a/src/__tests__/distance_matrix/export.test.js +++ b/src/__tests__/distance_matrix/export.test.js @@ -13,6 +13,10 @@ describe('DistanceMatrix export', () => { expect(matrix.toCompact()).toStrictEqual([1, 2, 3, 2, 3, 3]); }); + it('toCompact empty', () => { + expect(new DistanceMatrix(0).toCompact()).toStrictEqual([]); + }); + it('toSymmetricMatrix', () => { const matrix = new DistanceMatrix([ [0, 1, 2, 3], diff --git a/src/distanceMatrix.js b/src/distanceMatrix.js index 75c620b..babdd29 100644 --- a/src/distanceMatrix.js +++ b/src/distanceMatrix.js @@ -97,6 +97,12 @@ export class DistanceMatrix extends SymmetricMatrix { */ static fromCompact(compact) { const compactSize = compact.length; + + if (compactSize === 0) { + return new this(0); + } + + // compactSize in Natural integer range ]0;∞] // compactSize = (sideSize * (sideSize - 1)) / 2 // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2 const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;