def test_contains(self): l = SingleLinkedList() self.assertFalse(l.contains(0)) self.assertFalse(l.contains(1)) self.assertFalse(l.contains(None)) l = SingleLinkedList([1, 2, 3]) self.assertTrue(l.contains(1)) self.assertTrue(l.contains(2)) self.assertTrue(l.contains(2.0)) self.assertTrue(l.contains(3)) self.assertFalse(l.contains(4)) self.assertFalse(l.contains(-1)) self.assertFalse(l.contains(None)) self.assertFalse(l.contains({'some': 'datatype'})) self.assertFalse(l.contains(2.01))
class SingleLinkedSet: """ Data structure for storing only unique values. Not thread-safe. """ def __init__(self, iterable=None): self._container = SingleLinkedList() if iterable: for item in iterable: self.add(item) def add(self, value): if not self._container.contains(value): self._container.append(value) def contains(self, value): return self._container.contains(value) def __contains__(self, value): return self.contains(value)