'Test that the different modes are producing the correct results using
a uniform kernel with three elements. This version includes a NaN
value in the original array.'

@pytest.mark.parametrize(option_names, options)
def test_uniform_3_withnan(self, boundary, nan_treatment, normalize_kernel):

    x = np.array([1.0, np.nan, 3.0], dtype=u'float64')
    y = np.array([1.0, 1.0, 1.0], dtype=u'float64')
    z = convolve_fft(x, y, boundary=boundary, nan_treatment=nan_treatment, normalize_kernel=normalize_kernel)
    answer_dict = {u'sum': np.array([1.0, 4.0, 3.0], dtype=u'float64'), u'sum_nozeros': np.array([1.0, 4.0, 3.0], dtype=u'float64'), u'sum_zeros': np.array([1.0, 4.0, 3.0], dtype=u'float64'), u'sum_nozeros_interpnan': np.array([1.0, 4.0, 3.0], dtype=u'float64'), u'average': np.array([1.0, 2.0, 3.0], dtype=u'float64'), u'sum_wrap': np.array([4.0, 4.0, 4.0], dtype=u'float64'), u'average_wrap': np.array([(4 / 3.0), (4 / 3.0), (4 / 3.0)], dtype=u'float64'), u'average_wrap_interpnan': np.array([2, 2, 2], dtype=u'float64'), u'average_nozeros': np.array([(1 / 2.0), (4 / 3.0), (3 / 2.0)], dtype=u'float64'), u'average_nozeros_interpnan': np.array([1.0, 2.0, 3.0], dtype=u'float64'), u'average_zeros': np.array([(1 / 3.0), (4 / 3.0), (3 / 3.0)], dtype=u'float64'), u'average_zeros_interpnan': np.array([(1 / 2.0), (4 / 2.0), (3 / 2.0)], dtype=u'float64')}
    for key in list(answer_dict.keys()):
        if (u'sum' in key):
            answer_dict[(key + u'_interpnan')] = ((answer_dict[key] * 3.0) / 2.0)
    if normalize_kernel:
        answer_key = u'average'
    else:
        answer_key = u'sum'
    if (boundary == u'wrap'):
        answer_key += u'_wrap'
    else:
        answer_key += u'_zeros'
    if (nan_treatment == u'interpolate'):
        answer_key += u'_interpnan'
    assert_array_almost_equal_nulp(z, answer_dict[answer_key], 10)
