def METHOD_NAME(name, cls):
    # These have very different interfaces than the others
    if name in ['Integrator1D', 'Integrate1D']:
        return
    x = np.arange(1.0, 5.0)
    m = cls()
    assert type(m).__name__.lower() == m.name
    if isinstance(m, basic.TableModel):
        m.load(x, x)
    if isinstance(m, basic.UserModel):
        m.calc = userfunc
    if m.ndim == 2:
        pt_out = m(x, x)
        int_out = m(x, x, x, x)
    else:
        if m.name in ('log', 'log10'):
            xx = -x
        else:
            xx = x
        pt_out = m(xx)
        int_out = m(xx, xx)
    for out in (pt_out, int_out):
        assert out.dtype.type is SherpaFloat
        assert out.shape == x.shape