def METHOD_NAME(self, ntime, nchan, max_delay, batch_shape=()):
    fdmt = Fdmt()
    f0        = 1000.
    bw        = 400.
    df        = bw / nchan
    exponent  = -2.0
    fdmt.init(nchan, max_delay, f0, df, exponent, 'cuda')
    ishape = batch_shape + (nchan, ntime)
    oshape = batch_shape + (max_delay, ntime)
    idata = bf.asarray(np.random.normal(size=ishape)
                       .astype(np.float32), space='cuda')
    odata1 = bf.asarray(-999 * np.ones(oshape, np.float32),
                        space='cuda')
    fdmt.execute(idata, odata1)
    odata1 = odata1.copy('system')
    if max_delay > 1:
        self.assertEqual(odata1.min(), -999)
    # TODO: Need better tests
    self.assertLess(odata1.max(), 100.)
    odata2 = bf.asarray(-999 * np.ones(oshape, np.float32),
                        space='cuda')
    workspace_size = fdmt.get_workspace_size(idata, odata2)
    workspace = bf.asarray(np.empty(workspace_size, np.uint8), space='cuda')
    workspace_ptr = workspace.ctypes.data
    fdmt.execute_workspace(idata, odata2, workspace_ptr, workspace_size)
    odata2 = odata2.copy('system')
    np.testing.assert_equal(odata1, odata2)