123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- var test = require('tap').test;
- var summary = require('./summary.js');
- test('testing data method', function (t) {
- t.deepEqual(
- summary([2, 3, 7, -2, 0, 1, 1]).data(),
- [2, 3, 7, -2, 0, 1, 1]
- );
- t.end();
- });
- test('testing sort method', function (t) {
- const data = [2, 3, 7, -2, 0, 1, 1];
- t.deepEqual(
- summary(data, true).sort(),
- [2, 3, 7, -2, 0, 1, 1]
- );
- t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');
- t.deepEqual(
- summary(data, false).sort(),
- [-2, 0, 1, 1, 2, 3, 7]
- );
- t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');
- t.deepEqual(
- summary(data).sort(),
- [-2, 0, 1, 1, 2, 3, 7]
- );
- t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');
- t.end();
- });
- test('testing sort method when cached', function (t) {
- const s = summary([2, 3, 7, -2, 0, 1, 1]);
- t.deepEqual(s.sort(), [-2, 0, 1, 1, 2, 3, 7]);
- t.deepEqual(s.sort(), [-2, 0, 1, 1, 2, 3, 7]);
- t.end();
- });
- test('testing size method', function (t) {
- t.equal(
- summary([1, 10]).size(),
- 2
- );
- t.end();
- });
- test('testing sum method', function (t) {
- t.equal(
- summary([1, 10]).sum(),
- 11
- );
- t.end();
- });
- test('testing sum for variable lengths', function (t) {
- const data = [];
- for (let i = 0; i < 256; i++) {
- data.push(i);
- t.equal(summary(data).sum(), (i**2 + i) / 2);
- }
- t.end();
- });
- test('testing sum method when cached', function (t) {
- const s = summary([1, 10]);
- t.equal(s.sum(), 11);
- t.equal(s.sum(), 11);
- t.end();
- });
- test('testing mode method', function (t) {
- t.equal(
- summary([10, 11, 12, 11, 12, 7, 12]).mode(),
- 12
- );
- t.equal(
- summary([10, 13, 12, 13, 12, 13, 12]).mode(),
- 13
- );
- t.equal(
- summary([1, 2, 2, 3, 3, 3, 4]).mode(),
- 3
- );
- t.equal(
- summary([1, 2, 2, 3, 3, 4]).mode(),
- 3
- );
- t.equal(
- summary([1, 2, 2, 2, 3, 3, 4]).mode(),
- 2
- );
- t.equal(
- summary([1, 2, 3]).mode(),
- 3
- );
- t.end();
- });
- test('testing mode method when cached', function (t) {
- const s = summary([1, 2, 3]);
- t.equal(s.mode(), 3);
- t.equal(s.mode(), 3);
- t.end();
- });
- test('testing mean method', function (t) {
- t.equal(
- summary([2, 4]).mean(),
- 3
- );
- t.end();
- });
- test('testing mean method when cached', function (t) {
- const s = summary([2, 4]);
- t.equal(s.mean(), 3);
- t.equal(s.mean(), 3);
- t.end();
- });
- test('testing quartile method', function (t) {
- var data = summary([
- 2, 27, 10, 29, 16, 8, 5, 19, 2, 2, 18,28,
- 7, 28, 28, 25, 19, 14, 18, 21, 25, 29, 7,
- 3, 21, 3, 24, 18, 12, 25
- ]);
- t.equal(data.quartile(0.00), 2.00);
- t.equal(data.quartile(0.13), 3.00);
- t.equal(data.quartile(0.26), 7.00);
- t.equal(data.quartile(0.39), 14.0);
- t.equal(data.quartile(0.52), 18.0);
- t.equal(data.quartile(0.65), 21.0);
- t.equal(data.quartile(0.78), 25.0);
- t.equal(data.quartile(0.91), 28.0);
- t.equal(data.quartile(1.00), 29.0);
- // when cached
- t.equal(data.quartile(0.00), 2.00);
- t.equal(data.quartile(0.13), 3.00);
- t.equal(data.quartile(0.26), 7.00);
- t.equal(data.quartile(0.39), 14.0);
- t.equal(data.quartile(0.52), 18.0);
- t.equal(data.quartile(0.65), 21.0);
- t.equal(data.quartile(0.78), 25.0);
- t.equal(data.quartile(0.91), 28.0);
- t.equal(data.quartile(1.00), 29.0);
- t.end();
- });
- test('testing median method', function (t) {
- var data = summary([
- 2, 27, 10, 29, 16, 8, 5, 19, 2, 2, 18,28,
- 7, 28, 28, 25, 19, 14, 18, 21, 25, 29, 7,
- 3, 21, 3, 24, 18, 12, 25
- ]);
- t.equal(data.median(), 18);
- // when cached
- t.equal(data.median(), 18);
- t.end();
- });
- test('testing variance method', function (t) {
- t.equal(summary([-2, -1, 0, 1, 2]).variance(), 2.5);
- t.end();
- });
- test('testing variance method when cached', function (t) {
- const s = summary([-2, -1, 0, 1, 2]);
- t.equal(s.variance(), 2.5);
- t.equal(s.variance(), 2.5);
- t.end();
- });
- test('testing sd method', function (t) {
- t.equal(summary([-2, -1, 0, 1, 2]).sd(), Math.sqrt(2.5));
- t.end();
- });
- test('testing sd method when cached', function (t) {
- const s = summary([-2, -1, 0, 1, 2]);
- t.equal(s.sd(), Math.sqrt(2.5));
- t.equal(s.sd(), Math.sqrt(2.5));
- t.end();
- });
- test('testing max method', function (t) {
- t.equal(summary([6, 10, 2, 5]).max(), 10);
- t.end();
- });
- test('testing max method when cached', function (t) {
- const s = summary([6, 10, 2, 5]);
- t.equal(s.max(), 10);
- t.equal(s.max(), 10);
- t.end();
- });
- test('testing min method', function (t) {
- t.equal(summary([6, 10, 2, 5]).min(), 2);
- t.end();
- });
- test('testing min method when cached', function (t) {
- const s = summary([6, 10, 2, 5]);
- t.equal(s.min(), 2);
- t.equal(s.min(), 2);
- t.end();
- });
- test('typed array', function (t) {
- t.equal(summary(new Int8Array([2, 4])).mean(), 3);
- t.end();
- });
- test('not array', function (t) {
- t.throws(() => summary({ length: 0 }), TypeError);
- t.end();
- });
|