2017-07-26 04:37:36 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
import word_count
|
|
|
|
|
|
|
|
current_dir = os.path.abspath(os.path.dirname(__file__))
|
2018-07-30 20:52:22 +00:00
|
|
|
path = os.path.join(current_dir, "zen-of-python.txt")
|
2017-07-26 04:37:36 +00:00
|
|
|
|
|
|
|
|
2020-06-05 12:33:15 +00:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def contents() -> str:
|
2018-07-30 20:52:22 +00:00
|
|
|
text = """
|
|
|
|
The Zen of Python, by Tim Peters
|
2017-07-26 04:37:36 +00:00
|
|
|
|
|
|
|
Beautiful is better than ugly.
|
|
|
|
Explicit is better than implicit.
|
|
|
|
Simple is better than complex.
|
|
|
|
Complex is better than complicated.
|
|
|
|
Flat is better than nested.
|
|
|
|
Sparse is better than dense.
|
|
|
|
Readability counts.
|
|
|
|
Special cases aren't special enough to break the rules.
|
|
|
|
Although practicality beats purity.
|
|
|
|
Errors should never pass silently.
|
|
|
|
Unless explicitly silenced.
|
|
|
|
In the face of ambiguity, refuse the temptation to guess.
|
|
|
|
There should be one-- and preferably only one --obvious way to do it.
|
|
|
|
Although that way may not be obvious at first unless you're Dutch.
|
|
|
|
Now is better than never.
|
|
|
|
Although never is often better than *right* now.
|
|
|
|
If the implementation is hard to explain, it's a bad idea.
|
|
|
|
If the implementation is easy to explain, it may be a good idea.
|
2018-07-30 20:52:22 +00:00
|
|
|
Namespaces are one honking great idea -- let's do more of those!
|
|
|
|
"""
|
2020-06-05 12:33:15 +00:00
|
|
|
return text * 1000
|
2018-07-30 20:52:22 +00:00
|
|
|
|
2017-07-26 04:37:36 +00:00
|
|
|
|
2020-06-05 12:33:15 +00:00
|
|
|
def test_word_count_rust_parallel(benchmark, contents):
|
|
|
|
count = benchmark(word_count.search, contents, "is")
|
2017-07-26 04:37:36 +00:00
|
|
|
assert count == 10000
|
|
|
|
|
|
|
|
|
2020-06-05 12:33:15 +00:00
|
|
|
def test_word_count_rust_sequential(benchmark, contents):
|
|
|
|
count = benchmark(word_count.search_sequential, contents, "is")
|
2017-07-26 04:37:36 +00:00
|
|
|
assert count == 10000
|
|
|
|
|
|
|
|
|
2020-06-05 12:33:15 +00:00
|
|
|
def test_word_count_python_sequential(benchmark, contents):
|
|
|
|
count = benchmark(word_count.search_py, contents, "is")
|
2017-07-26 04:37:36 +00:00
|
|
|
assert count == 10000
|