source: imaps-frontend/node_modules/array-includes/test/tests.js@ d565449

main
Last change on this file since d565449 was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 4.1 KB
Line 
1'use strict';
2
3module.exports = function (includes, t) {
4 var sparseish = { length: 5, 0: 'a', 1: 'b' };
5 var overfullarrayish = { length: 2, 0: 'a', 1: 'b', 2: 'c' };
6 var thrower = { valueOf: function () { throw new RangeError('whoa'); } };
7 var numberish = { valueOf: function () { return 2; } };
8
9 t.test('simple examples', function (st) {
10 st.equal(true, includes([1, 2, 3], 1), '[1, 2, 3] includes 1');
11 st.equal(false, includes([1, 2, 3], 4), '[1, 2, 3] does not include 4');
12 st.equal(true, includes([NaN], NaN), '[NaN] includes NaN');
13 st.end();
14 });
15
16 t.test('does not skip holes', function (st) {
17 st.equal(true, includes(Array(1)), 'Array(1) includes undefined');
18 st.end();
19 });
20
21 t.test('exceptions', function (et) {
22 et.test('fromIndex conversion', function (st) {
23 st['throws'](function () { includes([0], 0, thrower); }, RangeError, 'fromIndex conversion throws');
24 st.end();
25 });
26
27 et.test('ToLength', function (st) {
28 st['throws'](function () { includes({ length: thrower, 0: true }, true); }, RangeError, 'ToLength conversion throws');
29 st.end();
30 });
31
32 et.end();
33 });
34
35 t.test('arraylike', function (st) {
36 st.equal(true, includes(sparseish, 'a'), 'sparse array-like object includes "a"');
37 st.equal(false, includes(sparseish, 'c'), 'sparse array-like object does not include "c"');
38
39 st.equal(true, includes(overfullarrayish, 'b'), 'sparse array-like object includes "b"');
40 st.equal(false, includes(overfullarrayish, 'c'), 'sparse array-like object does not include "c"');
41 st.end();
42 });
43
44 t.test('fromIndex', function (ft) {
45 ft.equal(true, includes([1], 1, NaN), 'NaN fromIndex -> 0 fromIndex');
46
47 ft.equal(true, includes([0, 1, 2], 1, 0), 'starting from 0 finds index 1');
48 ft.equal(true, includes([0, 1, 2], 1, 1), 'starting from 1 finds index 1');
49 ft.equal(false, includes([0, 1, 2], 1, 2), 'starting from 2 does not find index 1');
50
51 ft.test('number coercion', function (st) {
52 st.equal(false, includes(['a', 'b', 'c'], 'a', numberish), 'does not find "a" with object fromIndex coercing to 2');
53 st.equal(false, includes(['a', 'b', 'c'], 'a', '2'), 'does not find "a" with string fromIndex coercing to 2');
54 st.equal(true, includes(['a', 'b', 'c'], 'c', numberish), 'finds "c" with object fromIndex coercing to 2');
55 st.equal(true, includes(['a', 'b', 'c'], 'c', '2'), 'finds "c" with string fromIndex coercing to 2');
56 st.end();
57 });
58
59 ft.test('fromIndex greater than length', function (st) {
60 st.equal(false, includes([1], 1, 2), 'array of length 1 is not searched if fromIndex is > 1');
61 st.equal(false, includes([1], 1, 1), 'array of length 1 is not searched if fromIndex is >= 1');
62 st.equal(false, includes([1], 1, 1.1), 'array of length 1 is not searched if fromIndex is 1.1');
63 st.equal(false, includes([1], 1, Infinity), 'array of length 1 is not searched if fromIndex is Infinity');
64 st.end();
65 });
66
67 ft.test('negative fromIndex', function (st) {
68 st.equal(true, includes([1, 3], 1, -4), 'computed length would be negative; fromIndex is thus 0');
69 st.equal(true, includes([1, 3], 3, -4), 'computed length would be negative; fromIndex is thus 0');
70 st.equal(true, includes([1, 3], 1, -Infinity), 'computed length would be negative; fromIndex is thus 0');
71
72 st.equal(true, includes([12, 13], 13, -1), 'finds -1st item with -1 fromIndex');
73 st.equal(false, includes([12, 13], 12, -1), 'does not find -2nd item with -1 fromIndex');
74 st.equal(true, includes([12, 13], 13, -2), 'finds -2nd item with -2 fromIndex');
75
76 st.equal(true, includes(sparseish, 'b', -4), 'finds -4th item with -4 fromIndex');
77 st.equal(false, includes(sparseish, 'a', -4), 'does not find -5th item with -4 fromIndex');
78 st.equal(true, includes(sparseish, 'a', -5), 'finds -5th item with -5 fromIndex');
79 st.end();
80 });
81
82 ft.end();
83 });
84
85 t.test('strings', function (st) {
86 st.equal(true, includes('abc', 'c'), 'string includes one of its chars');
87 st.equal(false, includes('abc', 'd'), 'string does not include a char it should not');
88
89 st.equal(true, includes(Object('abc'), 'c'), 'boxed string includes one of its chars');
90 st.equal(false, includes(Object('abc'), 'd'), 'boxed string does not include a char it should not');
91
92 st.end();
93 });
94};
Note: See TracBrowser for help on using the repository browser.