1.2.0 • Published 9 years ago

defunct v1.2.0

Weekly downloads
4
License
BSD-3-Clause
Repository
github
Last release
9 years ago

defunct

Library of functional helper functions

build status

Installation

This module is installed via npm:

$ npm install defunct

Example Usage

var d = require('defunct');
it('should be able to multiply', function(t) {
  var mul = d.mul(10);
  t.equal(mul(5), 50, 'multiply')
  t.end();
});

it('should be able to divide', function(t) {
  var div = d.div(10);
  t.equal(div(50), 5, 'divide')
  t.end();
});

it('should be able to add', function(t) {
  var add = d.add(10);
  t.equal(add(50), 60, 'add')
  t.end();
});

it('should be able to subtract', function(t) {
  var sub = d.sub(10);
  t.equal(sub(50), 40, 'subtract')
  t.end();
});

it('should be able to return a constant function', 2, function(t) {
  var c = d.constant('my constant');
  t.equal(c('hello'), 'my constant', 'constant 1');
  t.equal(c('world'), 'my constant', 'constant 2');
  t.end();
});

it('should be able to select (string path)', function(t) {
  var locator = d.selector('my.property');
  var data = {
    my: {
      property: 42
    }
  };
  t.equal(locator(data), 42, 'simple selector');

  var data2 = {
    my: {
      property: {
        a: 'nested',
        o: 'object'
      }
    }
  };
  t.deepEqual(locator(data2), { a: 'nested', o: 'object' }, 'nested selector');

  t.end();
});

it('should be able to select (array path)', function(t) {
  var locator = d.selector(['my', 'property']);
  var data = {
    my: {
      property: 42
    }
  };
  t.equal(locator(data), 42, 'simple selector');

  var data2 = {
    my: {
      property: {
        a: 'nested',
        o: 'object'
      }
    }
  };
  t.deepEqual(locator(data2), { a: 'nested', o: 'object' }, 'nested selector');

  t.end();
});

it('should be able to ensure monotonic sequences', function(t) {
  var monotonic = d.monotonic();
  var last = -Infinity;
  t.equal(monotonic(1000), 1000, 'simple case');
  t.equal(monotonic(1001), 1001, 'no conflicts');

  var last = 1001, x;
  for (var i = 0; i < 5; i++) {
    x = monotonic(1001);
    t.ok(x > last, 'multiple conflicts');
    last = x;
  }

  for (var i = 0; i < 5; i++) {
    x = monotonic(1001 + i + 1);
    t.ok(x > last, 'no more conflicts');
    last = x;
  }

  t.end();
});

it('should fallback to normal monotonic timestamp with no args', function(t) {
  var monotonic = d.monotonic();
  var last = -Infinity, x;
  for (var i = 0; i < 10; i++) {
    var now = Date.now();
    x = monotonic();
    t.ok(x >= now, 'gte current time');
    t.ok(x > last, 'should have no conflicts');
    last = x;
  }
  t.end();
});
1.2.0

9 years ago

1.1.1

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago

0.0.1

10 years ago