Define some magic methods for usertypes

This commit is contained in:
Florian Bruhin 2014-05-09 22:11:33 +02:00
parent 2190d1bb49
commit fd9f801cab
3 changed files with 30 additions and 1 deletions

View File

@ -40,6 +40,9 @@ class FakeDictTests(TestCase):
with self.assertRaises(TypeError): with self.assertRaises(TypeError):
self.fd["eggs"] = "bar" self.fd["eggs"] = "bar"
def test_repr(self):
self.assertEqual(repr(self.fd), "FakeDict('foo')")
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -37,6 +37,19 @@ class InitTests(TestCase):
nl = NeighborList([1, 2, 3]) nl = NeighborList([1, 2, 3])
self.assertEqual(nl.items, [1, 2, 3]) self.assertEqual(nl.items, [1, 2, 3])
def test_len(self):
nl = NeighborList([1, 2, 3])
self.assertEqual(len(nl), 3)
def test_repr(self):
nl = NeighborList([1, 2, 3])
self.assertEqual(repr(nl), 'NeighborList([1, 2, 3])')
def test_contains(self):
nl = NeighborList([1, 2, 3])
self.assertIn(2, nl)
self.assertNotIn(4, nl)
class DefaultTests(TestCase): class DefaultTests(TestCase):

View File

@ -23,6 +23,7 @@ Module attributes:
import operator import operator
import logging import logging
import collections.abc
_UNSET = object() _UNSET = object()
@ -55,7 +56,7 @@ class EnumBase(type):
return cls._mapping[key] return cls._mapping[key]
class NeighborList: class NeighborList(collections.abc.Sequence):
"""A list of items which saves it current position. """A list of items which saves it current position.
@ -94,6 +95,15 @@ class NeighborList:
self._mode = mode self._mode = mode
self.fuzzyval = None self.fuzzyval = None
def __getitem__(self, key):
return self._items[key]
def __len__(self):
return len(self._items)
def __repr__(self):
return '{}({})'.format(self.__class__.__name__, self._items)
def _snap_in(self, offset): def _snap_in(self, offset):
"""Set the current item to the closest item to self.fuzzyval. """Set the current item to the closest item to self.fuzzyval.
@ -208,3 +218,6 @@ class FakeDict:
def __getitem__(self, _key): def __getitem__(self, _key):
return self._val return self._val
def __repr__(self):
return "FakeDict('{}')".format(self._val)