diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2011-06-08 10:43:47 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2011-06-08 11:07:47 +0200 |
commit | b7071ce13476cae789377c280aa274e6242fd756 (patch) | |
tree | 9cabdc2dfb6dd5c9e2d5d7d7fbd22686d42dbf5c /git/test/test_util.py | |
parent | fcc166d3a6e235933e823e82e1fcf6160a32a5d3 (diff) | |
download | gitpython-b7071ce13476cae789377c280aa274e6242fd756.tar.gz |
util: Added test for iterable list, and implemented __contains__ and __del__ functionality
Diffstat (limited to 'git/test/test_util.py')
-rw-r--r-- | git/test/test_util.py | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/git/test/test_util.py b/git/test/test_util.py index e55a6d15..a11c15c3 100644 --- a/git/test/test_util.py +++ b/git/test/test_util.py @@ -7,8 +7,8 @@ import os import tempfile -from git.test.lib import * from git.util import * +from git.test.lib import * from git.objects.util import * from git import * from git.cmd import dashify @@ -16,6 +16,15 @@ from git.cmd import dashify import time +class TestIterableMember(object): + """A member of an iterable list""" + __slots__ = ("name", "prefix_name") + + def __init__(self, name): + self.name = name + self.prefix_name = name + + class TestUtils(TestBase): def setup(self): self.testdict = { @@ -107,3 +116,51 @@ class TestUtils(TestBase): assert isinstance(Actor.committer(cr), Actor) assert isinstance(Actor.author(cr), Actor) #END assure config reader is handled + + def test_iterable_list(self): + for args in (('name',), ('name', 'prefix_')): + l = IterableList('name') + + m1 = TestIterableMember('one') + m2 = TestIterableMember('two') + + l.extend((m1, m2)) + + assert len(l) == 2 + + # contains works with name and identity + assert m1.name in l + assert m2.name in l + assert m2 in l + assert m2 in l + assert 'invalid' not in l + + # with string index + assert l[m1.name] is m1 + assert l[m2.name] is m2 + + # with int index + assert l[0] is m1 + assert l[1] is m2 + + # with getattr + assert l.one is m1 + assert l.two is m2 + + # test exceptions + self.failUnlessRaises(AttributeError, getattr, l, 'something') + self.failUnlessRaises(IndexError, l.__getitem__, 'something') + + # delete by name and index + self.failUnlessRaises(IndexError, l.__delitem__, 'something') + del(l[m2.name]) + assert len(l) == 1 + assert m2.name not in l and m1.name in l + del(l[0]) + assert m1.name not in l + assert len(l) == 0 + + self.failUnlessRaises(IndexError, l.__delitem__, 0) + self.failUnlessRaises(IndexError, l.__delitem__, 'something') + #END for each possible mode + |