def test_invalid_find_critical_values():
    dga = DiffusionGA('just_for_test')

    fit_arr = [
        [[1,2,4], [1,2,4]],
        [[2,6,8], [1,2,4]],
        [[1,2,4], [8,7,5]]
    ]
    fit_arr = numpy.array(fit_arr)

    with pytest.raises(ValueError):
        dga._find_critical_values(fit_arr)
def test_valid_find_critical_values(optim, arr, rmin, rmax):
    ga = RealGA(fitness_test_sin_func, optim=optim)
    dga = DiffusionGA(ga)

    arr = numpy.array(arr)

    coords_best, coords_worst = dga._find_critical_values(arr)

    if optim == 'min':
        assert arr[coords_best] == rmin
        assert arr[coords_worst] == rmax
    else:
        assert arr[coords_best] == rmax
        assert arr[coords_worst] == rmin