'Test implementing a function with @overload.'

@tag('important')
def test_where(self):

    pyfunc = call_where
    cfunc = jit(nopython=True)(pyfunc)
    def check(*args, **kwargs):
        expected = np_where(*args, **kwargs)
        got = cfunc(*args, **kwargs)
        self.assertPreciseEqual
    check(x=3, cond=True, y=8)
    check(True, 3, 8)
    check(np.bool_([True, False, True]), np.int32([1, 2, 3]), np.int32([4, 5, 5]))
    with self.assertRaises(errors.TypingError) as raises:
        cfunc(np.bool_([]), np.int32([]), np.int64([]))
    self.assertIn('x    and    y    should    have    the    same    dtype', str(raises.exception))
