Skip to content

Commit

Permalink
Update the "unique values" how-to documentation to use new
Browse files Browse the repository at this point in the history
@group_requirement decorator.
  • Loading branch information
shawnbrown committed Dec 3, 2018
1 parent b2d3d80 commit 9de2ebc
Showing 1 changed file with 30 additions and 36 deletions.
66 changes: 30 additions & 36 deletions docs/how-to/unique-values.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,75 +10,69 @@
How to Assert Unique Values
###########################

To assert that values are unique, we can define a callable class
that generates :class:`Extra` differences when duplicates are
discovered.
To assert that values are unique, we can define a group-requirement
that generates :class:`Extra` differences when duplicate values are
encountered.

You can copy the following class to use in your own tests:
You can copy the ``is_unique()`` function to use in your own tests:

.. tabs::

.. group-tab:: Pytest

.. code-block:: python
:emphasize-lines: 22
:emphasize-lines: 21
from datatest import validate
from datatest import group_requirement
from datatest import Extra
def make_is_unique():
previously_seen = set()
@group_requirement
def is_unique(iterable):
"""values should be unique"""
seen = set()
for element in iterable:
if element in seen:
yield Extra(element)
else:
seen.add(element)
def is_unique(value):
"""values should be unique"""
if value in previously_seen:
return Extra(value)
previously_seen.add(value)
return True
return is_unique
def test_is_unique():
def test_unique_data():
data = ['a', 'b', 'a', 'c'] # <- 'a' is not unique
is_unique = make_is_unique()
validate(data, is_unique)
.. group-tab:: Unittest

.. code-block:: python
:emphasize-lines: 24
:emphasize-lines: 23
from datatest import DataTestCase
from datatest import group_requirement
from datatest import Extra
def make_is_unique():
previously_seen = set()
def is_unique(value):
"""values should be unique"""
if value in previously_seen:
return Extra(value)
previously_seen.add(value)
return True
return is_unique
@group_requirement
def is_unique(iterable):
"""values should be unique"""
seen = set()
for element in iterable:
if element in seen:
yield Extra(element)
else:
seen.add(element)
class MyTest(DataTestCase):
def test_is_unique(self):
def test_unique_data(self):
data = ['a', 'a', 'b', 'c'] # <- 'a' is not unique
is_unique = make_is_unique()
self.assertValid(data, is_unique)
Expand All @@ -100,7 +94,7 @@ counts are equal to ``1``:
from datatest import validate
def test_is_unique():
def test_unique_data():
data = ['a', 'a', 'b', 'c'] # <- 'a' is not unique
Expand All @@ -117,7 +111,7 @@ counts are equal to ``1``:
class MyTest(DataTestCase):
def test_is_unique(self):
def test_unique_data(self):
data = ['a', 'a', 'b', 'c'] # <- 'a' is not unique
Expand Down

0 comments on commit 9de2ebc

Please sign in to comment.