def test_map_no_call():
    explorer = Explorer(parallel='thread')
    cached = explorer.cache_function(my_function)
    data = explorer.map(cached, processes=2, x=range(5))
    data_no_call = explorer.map_no_call(cached, x=range(2, 9))
    print(data, data_no_call)
    assert data_no_call[-1] is None
    assert data_no_call[-2] is None
    assert all(data_no_call[0:3] == data[2:])
def test_maps():
    explorer = Explorer()

    def my_function(x):
        return x + 1

    data = explorer.map(my_function, x=range(5))
    print(data)
    assert np.allclose(data, np.arange(1, 6))

    def my_function(x, y):
        return x + y

    data = explorer.map(my_function, x=range(5), y=range(3))
    print(data)
    assert data.shape == (5, 3)
    assert data[1, 2] == my_function(1, 2)
    assert data[4, 2] == 4 + 2
def test_mproc_cache():
    explorer = Explorer(parallel='process', cache=FunctoolsCache_Mproc())
    data = explorer.map(my_function, processes=2, x=range(5))
    print('cache info', my_function.cache_info())
    print('cache', my_function._cache)
    data_no_call = explorer.map_no_call(my_function, x=range(2, 9))
    print(data, data_no_call)
    assert data_no_call[-1] is None
    assert data_no_call[-2] is None
    assert all(data_no_call[0:3] == data[2:])
def test_mproc_cache(tmpdir):
    cache = JobLibCache(str(tmpdir), verbose=1)
    # smoke
    explorer = Explorer(parallel='joblib', cache=cache)
    parallel = JobLib(n_jobs=3, verbose=10)

    explorer = Explorer(parallel=parallel, cache=cache)
    func = explorer.cache_function(my_function)

    start = time.time()
    data = explorer.map(func, processes=2, x=range(6))
    dur = time.time() - start
    assert dur < 6 * DELAY

    data_no_call = explorer.map_no_call(func, x=range(3, 10))
    print(data, data_no_call)
    assert data_no_call[-1] is None
    assert data_no_call[-2] is None
    assert all(data_no_call[0:3] == data[3:])
def test_mproc():
    explorer = Explorer(parallel='process')
    data = explorer.map(my_function, processes=2, x=range(5))
    print(data)
    assert np.allclose(data, np.arange(1, 6))