forked from ramda/ramda
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnthArg.js
34 lines (28 loc) · 1022 Bytes
/
nthArg.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var R = require('../source/index.js');
var eq = require('./shared/eq.js');
describe('nthArg', function() {
it('returns a function which returns its nth argument', function() {
eq(R.nthArg(0)('foo', 'bar'), 'foo');
eq(R.nthArg(1)('foo', 'bar'), 'bar');
});
it('accepts negative offsets', function() {
eq(R.nthArg(-1)('foo', 'bar'), 'bar');
eq(R.nthArg(-2)('foo', 'bar'), 'foo');
eq(R.nthArg(-3)('foo', 'bar'), undefined);
});
it('returns a function with length n + 1 when n >= 0', function() {
eq(R.nthArg(0).length, 1);
eq(R.nthArg(1).length, 2);
eq(R.nthArg(2).length, 3);
eq(R.nthArg(3).length, 4);
});
it('returns a function with length 1 when n < 0', function() {
eq(R.nthArg(-1).length, 1);
eq(R.nthArg(-2).length, 1);
eq(R.nthArg(-3).length, 1);
});
it('returns a curried function', function() {
eq(R.nthArg(1)('foo', 'bar'), R.nthArg(1)('foo')('bar'));
eq(R.nthArg(2)('foo', 'bar', 'baz'), R.nthArg(2)('foo')('bar')('baz'));
});
});