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 | |
| 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')
| -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 +  | 
