text: import { paths } from './paths'
  
  const obj = {
    a : {
      b : {
        c : 1,
        d : 2,
      },
    },
    p : [ { q : 3 }, 'Hi' ],
    x : {
      y : 'Alice',
      z : [ [ {} ] ],
    },
  }
  
  test('with string path + curry', () => {
    const pathsInput = [ 'a.b.d', 'p.q' ]
    const expected = [ 2, undefined ]
    const result = paths(pathsInput, obj)
    const curriedResult = paths(pathsInput)(obj)
  
    expect(result).toEqual(expected)
    expect(curriedResult).toEqual(expected)
  })
  
  test('with array path', () => {
    const result = paths([
      [ 'a', 'b', 'c' ],
      [ 'x', 'y' ],
    ],
    obj)
  
    expect(result).toEqual([ 1, 'Alice' ])
  })
  
  test('takes a paths that contains indices into arrays', () => {
    expect(paths([
      [ 'p', 0, 'q' ],
      [ 'x', 'z', 0, 0 ],
    ],
    obj)).toEqual([ 3, {} ])
    expect(paths([
      [ 'p', 0, 'q' ],
      [ 'x', 'z', 2, 1 ],
    ],
    obj)).toEqual([ 3, undefined ])
  })
  
  test('gets a deep property\'s value from objects', () => {
    expect(paths([ [ 'a', 'b' ] ], obj)).toEqual([ obj.a.b ])
    expect(paths([ [ 'p', 0 ] ], obj)).toEqual([ obj.p[ 0 ] ])
  })
  
  test('returns undefined for items not found', () => {
    expect(paths([ [ 'a', 'x', 'y' ] ], obj)).toEqual([ undefined ])
    expect(paths([ [ 'p', 2 ] ], obj)).toEqual([ undefined ])
  })
  