text: const tester = require('./tester')
  const { spec, atLeast, andN } = require('./../src/funcy')
  
  tester.falsy(spec, '"spec" returns false when both "flatten" and "fmap" are not functions', { flatten: 1, fmap: 1 })
  tester.falsy(spec, '"spec" returns false when "flatten" is not a functions', { flatten: 1, fmap: () => {} })
  tester.falsy(spec, '"spec" returns false when "fmap" is not a function', { flatten: () => {}, fmap: 1 })
  tester.falsy(spec, '"spec" returns false when "flatten" is missing', { fmap: () => 1 })
  tester.falsy(spec, '"spec" returns false when "fmap" is missing', { flatten: () => 1 })
  tester.truthy(spec, '"spec" returns true when "fmap" and "flatten" are both functions', { flatten: () => {}, fmap: () => {} })
  
  tester.falsy(atLeast, '"atLeast" returns false if called with positive integer only', 1)
  tester.falsy(atLeast, '"atLeast" returns true if array length is lower than integer provided', 2, [42])
  tester.truthy(atLeast, '"atLeast" returns true if called with no arguments')
  tester.truthy(atLeast, '"atLeast" returns false if called with negative integer only', -1)
  tester.truthy(atLeast, '"atLeast" returns false if called with negative integer only', -1)
  tester.truthy(atLeast, '"atLeast" returns true if array length is equal to integer provided', 1, [42])
  tester.truthy(atLeast, '"atLeast" returns true if array length is greater than integer provided', 1, [42, 42])
  
  tester.falsy(andN, '"andN" returns false if one, falsy predicate is provided', false)
  tester.falsy(andN, '"andN" returns false if multiple predicates are provided, some of them being falsy', true, false, true)
  tester.truthy(andN, '"andN" returns true if no predicates are provided')
  tester.truthy(andN, '"andN" returns true if multiple truthy predicates are provided', true, true, true)
  