blob: bd931030b9a1cab2ca01d582a2d4ff4ebc61a76a [file] [log] [blame]
import pytest
from more_executors import f_return, f_return_error, f_return_cancelled
CANCELLED = object()
FALSEY = {
"False": False,
"None": None,
"emptystr": "",
"emptylist": [],
"emptydict": {},
"zero": 0,
"error": RuntimeError("simulated error"),
"cancelled": CANCELLED,
}
TRUTHY = {
"True": True,
"object": object(),
"num": 123,
"str": "testing",
"list": ["foo"],
"dict": {"key": "val"},
}
@pytest.fixture(params=FALSEY.keys())
def falsey(request):
return FALSEY[request.param]
@pytest.fixture(params=TRUTHY.keys())
def truthy(request):
return TRUTHY[request.param]
def as_future(x):
if x is CANCELLED:
return f_return_cancelled()
if isinstance(x, Exception):
return f_return_error(x)
return f_return(x)
def assert_future_equal(future, value):
if value is CANCELLED:
assert future.cancelled()
elif isinstance(value, Exception):
assert future.exception() == value
else:
assert future.result() == value
def resolve_value(value, falsey_instance, truthy_instance):
if value is falsey:
return falsey_instance
if value is truthy:
return truthy_instance
return value
def resolve_inputs(values, falsey_real, truthy_real):
return [resolve_value(x, falsey_real, truthy_real) for x in values]