Merge pull request #241 from pganssle/othermod_example
Add tests for othermod
This commit is contained in:
commit
0ec24aa8db
|
@ -46,7 +46,9 @@ setup(
|
||||||
'Operating System :: MacOS :: MacOS X',
|
'Operating System :: MacOS :: MacOS X',
|
||||||
],
|
],
|
||||||
packages=['rustapi_module'],
|
packages=['rustapi_module'],
|
||||||
rust_extensions=[RustExtension('rustapi_module.datetime', 'Cargo.toml',
|
rust_extensions=[RustExtension('rustapi_module.othermod', 'Cargo.toml',
|
||||||
|
rustc_flags=get_py_version_cfgs()),
|
||||||
|
RustExtension('rustapi_module.datetime', 'Cargo.toml',
|
||||||
rustc_flags=get_py_version_cfgs())],
|
rustc_flags=get_py_version_cfgs())],
|
||||||
install_requires=install_requires,
|
install_requires=install_requires,
|
||||||
tests_require=tests_require,
|
tests_require=tests_require,
|
||||||
|
|
|
@ -11,6 +11,13 @@ pub struct ModClass {
|
||||||
|
|
||||||
#[pymethods]
|
#[pymethods]
|
||||||
impl ModClass {
|
impl ModClass {
|
||||||
|
#[new]
|
||||||
|
fn __new__(obj: &PyRawObject) -> PyResult<()> {
|
||||||
|
obj.init(|_| ModClass {
|
||||||
|
_somefield: String::from("contents"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fn noop(&self, x: usize) -> usize {
|
fn noop(&self, x: usize) -> usize {
|
||||||
x
|
x
|
||||||
}
|
}
|
||||||
|
@ -25,5 +32,9 @@ fn double(x: i32) -> i32 {
|
||||||
fn othermod(_py: Python, m: &PyModule) -> PyResult<()> {
|
fn othermod(_py: Python, m: &PyModule) -> PyResult<()> {
|
||||||
m.add_function(wrap_function!(double))?;
|
m.add_function(wrap_function!(double))?;
|
||||||
m.add_class::<ModClass>()?;
|
m.add_class::<ModClass>()?;
|
||||||
|
|
||||||
|
m.add("USIZE_MIN", usize::min_value())?;
|
||||||
|
m.add("USIZE_MAX", usize::max_value())?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
36
examples/rustapi_module/tests/test_othermod.py
Normal file
36
examples/rustapi_module/tests/test_othermod.py
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
from rustapi_module import othermod
|
||||||
|
|
||||||
|
from hypothesis import given, assume
|
||||||
|
from hypothesis import strategies as st
|
||||||
|
|
||||||
|
INTEGER32_ST = st.integers(min_value=(-(2**31)), max_value=(2**31 - 1))
|
||||||
|
USIZE_ST = st.integers(min_value=othermod.USIZE_MIN,
|
||||||
|
max_value=othermod.USIZE_MAX)
|
||||||
|
|
||||||
|
@given(x=INTEGER32_ST)
|
||||||
|
def test_double(x):
|
||||||
|
expected = x*2
|
||||||
|
assume(-(2**31) <= expected <= (2**31 - 1))
|
||||||
|
assert othermod.double(x) == expected
|
||||||
|
|
||||||
|
def test_modclass():
|
||||||
|
# Test that the repr of the class itself doesn't crash anything
|
||||||
|
repr(othermod.ModClass)
|
||||||
|
|
||||||
|
assert isinstance(othermod.ModClass, type)
|
||||||
|
|
||||||
|
def test_modclass_instance():
|
||||||
|
mi = othermod.ModClass()
|
||||||
|
|
||||||
|
repr(mi)
|
||||||
|
repr(mi.__class__)
|
||||||
|
|
||||||
|
assert isinstance(mi, othermod.ModClass)
|
||||||
|
assert isinstance(mi, object)
|
||||||
|
|
||||||
|
@given(x=USIZE_ST)
|
||||||
|
def test_modclas_noop(x):
|
||||||
|
mi = othermod.ModClass()
|
||||||
|
|
||||||
|
assert mi.noop(x) == x
|
||||||
|
|
Loading…
Reference in a new issue