Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / array / __tests__ / arrayLike.ts

import _isArrayLike from '../check/isArrayLike'

const eq = (x, y) => expect(x).toEqual(y)

describe('isArrayLike', () => {
  it('is true for Arrays', () => {
    eq(_isArrayLike([]), true)
    eq(_isArrayLike([1, 2, 3, 4]), true)
    eq(_isArrayLike([null]), true)
  })

  it('is true for arguments', () => {
    function test() {
      return _isArrayLike(arguments)
    }
    eq(test(), true)
    eq(test(1, 2, 3), true)
    eq(test(null), true)
  })

  it('is false for Strings', () => {
    eq(_isArrayLike(''), false)
    eq(_isArrayLike('abcdefg'), false)
  })

  it('is true for arbitrary objects with numeric length, if extreme indices are defined', () => {
    const obj1 = { length: 0 }
    const obj2 = { 0: 'something', length: 0 }
    const obj3 = { 0: void 0, length: 0 }
    const obj4 = { 0: 'zero', 1: 'one', length: 2 }
    const obj5 = { 0: 'zero', length: 2 }
    const obj6 = { 1: 'one', length: 2 }
    eq(_isArrayLike(obj1), true)
    eq(_isArrayLike(obj2), true)
    eq(_isArrayLike(obj3), true)
    eq(_isArrayLike(obj4), true)
    eq(_isArrayLike(obj5), false)
    eq(_isArrayLike(obj6), false)
  })

  it('is false for everything else', () => {
    eq(_isArrayLike(undefined), false)
    eq(_isArrayLike(1), false)
    eq(_isArrayLike({}), false)
    eq(_isArrayLike(false), false)
    eq(_isArrayLike(() => {}), false)
  })
})