| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | require('should');var DBSCAN = require('../lib/index.js').DBSCAN;describe('DBSCAN', function() {  describe('run', function() {    it('should return correct clusters for regular density set', function() {      var dbscan = new DBSCAN();      var dataset = [        [1, 1], [0, 1], [1, 0],        [10, 10], [10, 13], [13, 13],        [30, 30], [30, 33], [49, 49], [33, 33], [36, 36]      ];      // small radius      dbscan.run(dataset, 5, 2)        .should.be.eql([          [0, 1, 2],          [3, 4, 5],          [6, 7, 9, 10]        ]);      dbscan.noise.should.eql([8]);      // big radius      dbscan.run(dataset, 50, 2).should.be.eql([        [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 8]      ]);      dbscan.noise.should.eql([]);    });  });  describe('regionQuery', function() {    it('should return nearest neighborhood of a point', function() {      var dataset = [        [1, 1], [2, 2], [3, 3],        [50, 50], [51, 51]      ];      var dbscan = new DBSCAN(dataset);      dbscan.epsilon = 1;      dbscan._regionQuery(1).should.eql([1]);      dbscan.epsilon = 2;      dbscan._regionQuery(1).should.eql([0, 1, 2]);      dbscan._regionQuery(4).should.eql([3, 4]);      dbscan.epsilon = 100;      dbscan._regionQuery(1).should.eql([0, 1, 2, 3, 4]);    });  });  describe('mergeArrays', function() {    it('should merge two arrays', function() {      var dbscan = new DBSCAN();      dbscan._mergeArrays([1, 2, 3], [2, 3, 4, 5])        .should.eql([1, 2, 3, 4, 5]);      dbscan._mergeArrays([2, 3, 4, 5], [1, 2, 3])        .should.eql([2, 3, 4, 5, 1]);    });  });  describe('euclideanDistance', function() {    it('should return distance between two points', function() {      var dbscan = new DBSCAN();      dbscan._euclideanDistance([1, 1], [3, 1]).should.eql(2);      dbscan._euclideanDistance([1, 1], [1, 3]).should.eql(2);    });  });});
 |