test.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. var test = require('tape').test;
  3. var find = require('./find.js');
  4. test('can find an element', function (t) {
  5. var arr = [1, 2, 3, 4, 5];
  6. var found = find(arr, function (el) {
  7. return el === 2;
  8. });
  9. t.equal(2, found);
  10. t.end();
  11. });
  12. test('can find an element from an object', function (t) {
  13. var arr = [{name: 'adam'}, {name: 'eve'}, {name: 'john'}];
  14. var found = find(arr, function (el) {
  15. return el.name === 'eve';
  16. });
  17. t.deepEqual({name: 'eve'}, found);
  18. t.end();
  19. });
  20. test('returns undefined if no callback returns true', function (t) {
  21. var arr = [6, 7, 8];
  22. var found = find(arr, function (el) {
  23. return el === 1;
  24. });
  25. t.equal(found, undefined);
  26. t.end();
  27. });
  28. test('setting object as thisArg', function (t) {
  29. t.plan(3);
  30. function Car() {}
  31. var car = new Car();
  32. var arr = [1, 2, 3];
  33. find(arr, function (el) {
  34. t.ok(this instanceof Car, 'this should be instanceof Car');
  35. }, car);
  36. });
  37. test('loop should exit on first find', function (t) {
  38. t.plan(3);
  39. var arr = [1, 2, 3, 4, 5];
  40. find(arr, function (el, index) {
  41. t.ok(true, 'element ' + index);
  42. return el === 3;
  43. });
  44. });
  45. test(
  46. 'third callback argument array should be equal to first argument array',
  47. function (t) {
  48. t.plan(3);
  49. var arr = [1, 2, 3];
  50. find(arr, function (el, index, array) {
  51. t.deepEqual(arr, array);
  52. });
  53. }
  54. );
  55. test(
  56. 'should throw TypeError if second argument is not a function',
  57. function (t) {
  58. t.plan(1);
  59. var arr = [1, 2, 3];
  60. try {
  61. find(arr, 'string');
  62. } catch (e) {
  63. t.ok(e instanceof TypeError);
  64. }
  65. }
  66. );