Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions assertpy/assertpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -685,6 +685,17 @@ def does_not_contain_entry(self, *entries):
self._err('Expected <%s> to not contain entry %s, but did.' % (self.val, e))
return self

### set assertions ###
def is_subset_of(self, superset):
"""Asserts that val is a set and its items are contained within the set, 'superset'"""
if not isinstance(self.val, (set, frozenset)):
raise TypeError('val is not a set/frozenset')
if not isinstance(superset, (set, frozenset)):
raise TypeError('argument is not a set/frozenset')
if not self.val.issubset(superset):
self._err('Expected <%s> to be a subset of <%s>, but was not.' % (self.val, superset))
return self

### datetime assertions ###
def is_before(self, other):
"""Asserts that val is a date and is before other date."""
Expand Down
38 changes: 38 additions & 0 deletions tests/test_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from assertpy import assert_that,fail

class TestSet(object):

def test_val_type_error(self):
try:
assert_that(1).is_subset_of(set([1,2]))
fail('should have raised TypeError')
except TypeError:
pass

def test_arg_type_error(self):
try:
assert_that(set([])).is_subset_of(None)
fail('should have raised TypeError')
except TypeError:
pass

def test_val_edge_case(self):
assert_that(set()).is_subset_of(set([1,2,3]))

def test_arg_edge_case(self):
try:
assert_that(set([1,2,3])).is_subset_of(set())
fail('should have raised error')
except AssertionError as ex:
assert_that(str(ex)).is_equal_to('Expected <%s> to be a subset of <%s>, but was not.' % (set([1,2,3]), set()))

def test_positive_normal_case(self):
assert_that(set([1])).is_subset_of(set([1,2,3]))

def test_negative_normal_case(self):
try:
assert_that(set([1,2,3])).is_subset_of(set([1]))
fail('should have raised error')
except AssertionError as ex:
assert_that(str(ex)).is_equal_to('Expected <%s> to be a subset of <%s>, but was not.' % (set([1,2,3]), set([1])))