def test_unresample_nearest_real_sampling_cpu():

    # Basic Unresample layer
    layer = Unresample(InterpolationType.NEAREST)

    # Run a forward and backward pass
    output, forward_time, backward_time, gradcheck_res = utils.mapped_resample_test(
        layer,
        input=params.input_3x4().repeat(bs, channels, 1, 1),
        sample_map=params.sample_map7(),
        cuda=False)

    # Manually computed correct result
    correct_output = torch.tensor([[1, 6], [10, 0], [0, 11]]).double()

    # Assert gradient check has passed
    assert gradcheck_res

    # Assert outputs match
    testing.assert_allclose(output, correct_output)
def test_unresample_bispherical_real_sampling_cuda():

    # Basic Unresample layer
    layer = Unresample(InterpolationType.BISPHERICAL)

    # Run a forward and backward pass
    output, forward_time, backward_time, gradcheck_res = utils.mapped_resample_test(
        layer,
        input=params.input_3x4().repeat(bs, channels, 1, 1),
        sample_map=params.sample_map7(),
        cuda=True)

    # Manually computed correct result
    correct_output = torch.tensor([[0.5, 5.5], [9.5, 9.5],
                                   [1.5, 10.5]]).double().cuda()

    # Assert gradient check has passed
    assert gradcheck_res

    # Assert outputs match
    testing.assert_allclose(output, correct_output)