Skip to content

A pythonic assertion library

License

Notifications You must be signed in to change notification settings

artisanofcode/python-conjecture

Conjecture

A pythonic assertion library.

🛠 Installing

Poetry

poetry add conjecture 

pip

pip install conjecture 

🎓 Usage

Basic

A basic assertion.

>>> import conjecture >>> assert5== conjecture.has(lambdav: v <10) >>> assert5== conjecture.has(lambdav: v >10) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError

Built-in conjectures

General

Matching none.

>>> import conjecture >>> assertNone== conjecture.none()

Matching anything.

>>> import conjecture >>> assertNone== conjecture.anything() >>> assert123== conjecture.anything() >>> assert"abc"== conjecture.anything()

Mapping

Matching keys.

>>> import conjecture >>> assert{"a": 1} == conjecture.has_key("a") >>> assert{"a": 1} == conjecture.has_key("a", of=1) >>> assert{"a": 1} == conjecture.has_key("a", of=conjecture.less_than(5))

Object

Matching instances of a class.

>>> import conjecture >>> assert123== conjecture.instance_of(int) >>> assert"abc"== conjecture.instance_of((str, bytes))

Matching values.

>>> import conjecture >>> assert123== conjecture.equal_to(123) >>> assert"abc"== conjecture.equal_to("abc")

Matching attributes.

>>> import conjecture >>> assert1== conjecture.has_attribute("__class__") >>> assert1== conjecture.has_attribute("__class__", of=int) >>> assert1== conjecture.has_attribute("__class__", of=conjecture.instance_of(type))

Rich ordering

Matching lesser values.

>>> import conjecture >>> assert5== conjecture.greater_than(1) >>> assert5== conjecture.greater_than_or_equal_to(1)

Matching greater values.

>>> import conjecture >>> assert1== conjecture.less_than(5) >>> assert1== conjecture.less_than_or_equal_to(5)

Size

Matching empty collections.

>>> import conjecture >>> assertlist() == conjecture.empty() >>> assertset() == conjecture.empty() >>> asserttuple() == conjecture.empty() >>> assertdict() == conjecture.empty()

Matching length of collections.

>>> import conjecture >>> assert [1, 2, 3, 4, 5] == conjecture.length_of(5) >>> assert [1, 2, 3] == conjecture.length_of(conjecture.less_than(5))

String

Matching string prefixes.

>>> import conjecture >>> assert"foo bar baz"== conjecture.prefixed_with("foo") >>> assertb"foo bar baz"== conjecture.prefixed_with(b"foo")

Matching string suffixes.

>>> import conjecture >>> assert"foo bar baz"== conjecture.suffixed_with("baz") >>> assertb"foo bar baz"== conjecture.suffixed_with(b"baz")

Combined conjectures

Matching all conditions.

>>> import conjecture >>> assert5== conjecture.has(lambdav: v <=5) & conjecture.has(lambdav: v=>5) >>> assert6== conjecture.has(lambdav: v <=5) & conjecture.has(lambdav: v=>5) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError >>> assert5== conjecture.all_of( ... conjecture.has(lambdav: v <=5), ... conjecture.has(lambdav: v=>5) ... ) >>> assert6== conjecture.all_of( ... conjecture.has(lambdav: v <=5), ... conjecture.has(lambdav: v=>5) ... ) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError

Matching any conditions.

>>> import conjecture >>> assert0== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0) >>> assert5== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0) >>> assert6== conjecture.has(lambdav: v ==5) | conjecture.has(lambdav: v ==0) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError >>> assert5== conjecture.any_of( ... conjecture.has(lambdav: v ==5), ... conjecture.has(lambdav: v ==0) ... ) >>> assert6== conjecture.any_of( ... conjecture.has(lambdav: v ==5), ... conjecture.has(lambdav: v ==0) ... ) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError

Negation

A negative assertion.

>>> import conjecture >>> assert5!= conjecture.has(lambdav: v ==10) >>> assert5==~conjecture.has(lambdav: v ==10) >>> assert10==~conjecture.has(lambdav: v ==10) Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError

⚖️ Licence

This project is licensed under the MIT licence.

All documentation and images are licenced under the Creative Commons Attribution-ShareAlike 4.0 International License.

📝 Meta

This project uses Semantic Versioning.

About

A pythonic assertion library

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 3

  •  
  •  
  •