All files / is isNative.ts

100% Statements 10/10
100% Branches 4/4
50% Functions 2/4
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27                      3x     15x 1x 1x 1x 1x 1x 1x 1x   1x      
import { isFunction } from './isFunction'
 
/**
 * @param value The value to check
 * @returns {boolean} Returns true if the value is a pristine native function, else false
 *
 * @see {@link https://lodash.com/docs#isNative}
 *
 * @since v0.1.0-beta.1
 */
export function isNative(value: unknown) {
  return isFunction(value) && /native code/.test(value.toString())
}
 
if (import.meta.vitest) {
  const { test, expect } = import.meta.vitest
  test('isNative', () => {
    const originalAssign = Object.assign
    expect(isNative(originalAssign)).toBe(true)
    Object.assign = () => {}
    expect(isNative(Object.assign)).toBe(false)
    Object.assign = originalAssign
 
    expect(isNative(() => {})).toBe(false)
  })
}