示例#1
0
	def testExplicitGeneratorConvenienceFunctionUsage(self):
		"""Check normal operation with explicit generators using  """
		c = Controller()
		x = c.mock()
		c.generator(x.g(8, 9), [10, 11])
		c.replay()
		self.failUnless([k for k in x.g(8, 9)] == [10, 11])
示例#2
0
	def testExpectAndReturn(self):
		"""Check expect and return"""
		c = Controller()
		x = c.mock()
		c.expectAndReturn(x.g(8, 9), 5)
		c.replay()
		self.failUnless(x.g(8, 9) == 5)
		c.verify()
示例#3
0
	def testExceptionRaisedByFunctions(self):
		"""Ensure that function calls play back exceptions"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g.h(3, 4)
		c.setException(Exception)
		c.replay()
		self.failUnlessRaises(Exception, x.g.h, 3, 4)
示例#4
0
	def testFunctionCallWithNoReturnValueSpecified(self):
		"""Function call with no return value specified"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g(3, 4)
		c.replay()
		x.g(3, 4)
		c.verify()
示例#5
0
	def testUnusedAttributeAssignmentCanBeVerified(self):
	    """Ensure that unused calls cause verification failure"""
	    
	    c = Controller()
	    x = c.mock(KlassBeingMocked)
	    x.w = 5
	    c.replay()
	    self.failUnlessRaises(RecordedCallsWereNotReplayedCorrectly, c.verify)
示例#6
0
	def testGetattrWithReturnValueSpecified(self):
		"""Getattr with return value specified"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g
		c.setReturn(8)
		c.replay()
		self.failUnless(x.g == 8)
示例#7
0
	def testSetItem(self):
		"""Ensure that __setitem__ works"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g[6] = 7
		c.replay()
		x.g[6] = 7
		c.verify()
示例#8
0
	def testGetItem(self):
		"""Ensure that __getitem__ works"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g[5]
		c.setReturn(6)
		c.replay()
		self.failUnless(x.g[5] == 6)
		c.verify()
示例#9
0
	def testIter(self):
		"""Ensure that __iter__ records and replays values"""
		c = Controller()
		x = c.mock()
		x.__iter__()
		c.setReturn(1)
		c.setReturn(2)
		c.replay()
		self.assertTrue([k for k in x] == [1, 2])
示例#10
0
	def testIterDoesNotAllowRecordingAfterAnException(self):
		"""Ensure that __iter__ records and replays exceptions"""
		c = Controller()
		x = c.mock()
		x.__iter__()
		c.setReturn(1)
		c.setException(Exception)
		self.failUnlessRaises(Exception, c.setReturn, 2)
		self.failUnlessRaises(Exception, c.setException, Exception)
示例#11
0
	def testExplicitGeneratorConvenienceFunctionExceptionUsage(self):
		"""Check explicit generators using compact specification"""
		c = Controller()
		x = c.mock()
		c.generator(x.g(8, 9), [10], Exception("bogus"))
		c.replay()
		g = x.g(8, 9)
		self.failUnless(g.next() == 10)
		self.failUnlessRaises(Exception, g.next)
示例#12
0
	def testAttributeAssignmentCanBePlayedBack(self):
	    """Attibute assignment should be intercepted"""
	    
	    c = Controller()
	    x = c.mock(KlassBeingMocked)
	    x.w = 5
	    x.w = 6
	    c.replay()
	    x.w = 5
示例#13
0
	def testLen(self):
		"""Ensure that __len__ works"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		k = len(x)
		c.setReturn(5)
		c.replay()
		self.failUnless(len(x) == 5)
		c.verify()
示例#14
0
	def testUndefinedPlaybackRaisesException(self):
		"""Playback failure should raise an exception"""	
		c = Controller()
		x = c.mock(KlassBeingMocked)
		c.replay()
		try:
			x.w = 5
			self.fail()
		except PlaybackFailure, e:
			pass
示例#15
0
	def testUsedAttributeAssignmentCanBeVerified(self):
	    """Ensure that used calls will not cause verification failure"""        
	    c = Controller()
	    x = c.mock(KlassBeingMocked)
	    x.w = 5
	    x.h = 3
	    c.replay()
	    x.h = 3
	    x.w = 5
	    c.verify()
示例#16
0
	def testExplicitGeneratorUsage(self):
		"""Check operation of explicit generators using discrete settings"""
		c = Controller()
		x = c.mock()
		x.g(8, 9)
		c.generator()
		c.setReturn(10)
		c.setReturn(11)
		c.replay()
		self.failUnless([k for k in x.g(8, 9)] == [10, 11])
示例#17
0
	def testSetAttributeRecordsField(self):
	    """Ensure setting an attribute is correctly recorded"""
	
	    c = Controller()
	    x = c.mock(KlassBeingMocked)
	    x.w = 5
	    self.failUnless(len(c.actions) == 1)
	    action = c.actions.get(BaseAction((x,'w')))
	    self.failUnless(action.field == 'w')
	    self.failUnless(action.value == 5)
示例#18
0
	def testFunctionCallWithMismatchedArguments(self):
		"""Function call with mismatched arguments"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g(3, 4)
		x.h()
		x.i(8, v1=4, v2=3)
		c.replay()
		self.failUnlessRaises(PlaybackFailure, x.g, 5, 3)
		self.failUnlessRaises(PlaybackFailure, x.h, 2)
		self.failUnlessRaises(PlaybackFailure, x.i, 8, v1=4, v2=5)
示例#19
0
	def testExpectAndRaise(self):
		"""Check expect and raise"""
		c = Controller()
		x = c.mock()
		c.expectAndRaise(x.g(8, 9), Exception())
		c.replay()
		try:
			x.g(8, 9)
			self.fail()
		except Exception, e:
			pass
示例#20
0
	def testFunctionCalReturnValues(self):
		"""Ensure function call return values get set"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g.h(3, 4)
		c.setReturn(5)
		x.g.h(6, 7)
		c.setReturn(8)
		c.replay()
		self.failUnless(x.g.h(3, 4) == 5)
		self.failUnless(x.g.h(6, 7) == 8)
示例#21
0
	def testEnsureThatContainsWorks(self):
		"""Verify that __contains__ is implemented"""
		c = Controller()
		x = c.mock()
		1 in x
		c.setReturn(True)
		2 in x
		c.setReturn(False)
		c.replay()
		self.failUnless(1 in x)
		self.failIf(2 in x)
示例#22
0
	def testAtLeastSetsLimit(self):
		"""Ensure that setattr returns function calls"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g = 6
		c.atLeast(2)
		c.replay()
		x.g = 6
		self.failUnlessRaises(Exception, c.verify)
		x.g = 6
		c.verify()
示例#23
0
	def testIterWithException(self):
		"""Ensure that __iter__ records and replays exceptions"""
		c = Controller()
		x = c.mock()
		x.__iter__()
		c.setReturn(1)
		c.setException(Exception)
		c.replay()
		i = x.__iter__()
		self.failUnless(i.next() == 1)
		self.failUnlessRaises(Exception, i.next)
示例#24
0
	def test__foo__MethodsWorkWithSyntacticalFormAndMethodCallInterchangably(self):
		"""Ensure that __foo__ methods work with their special syntax forms interchangaly"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g.__getitem__(5)
		c.setReturn(6)
		x.h.__getitem__(7)
		c.setReturn(8)
		c.replay()
		self.failUnless(x.g[5] == 6)
		self.failUnless(x.h.__getitem__(7) == 8)
示例#25
0
	def testSetCountOneOrMoreRaisesErrorOnNextRecord(self):
		"""Setting an unlimited count causes subsequent records to fail"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.w = 5
		c.oneOrMore()
		try:
			x.w = 6
			self.fail()
		except IllegalPlaybackRecorded, e:
			pass
示例#26
0
	def testGetattrWithNoReturnValueSpecified(self):
		"""Getattr with no return value specified"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g
		c.replay()
		self.failIf(x.g == None)
		try:
			x.g
			self.fail()
		except PlaybackFailure, e:
			pass
示例#27
0
	def testAttributeAssignmentIsIntercepted(self):
	    """Attibute assignment should be intercepted"""
	    
	    c = Controller()
	    x = c.mock(KlassBeingMocked)
	    x.w = 5
	    c.replay()
	    try:
	        x.w
	        self.fail()
	    except PlaybackFailure, e:
	        pass
示例#28
0
	def testExceptionRaisedByGetattr(self):
		"""Ensure that getattr plays back exceptions"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g
		c.setException(Exception)
		c.replay()
		try:
			x.g
			self.fail()
		except Exception, e:
			pass
示例#29
0
	def testExceptionRaisedBySetattr(self):
		"""Ensure that setattr returns function calls"""
		c = Controller()
		x = c.mock(KlassBeingMocked)
		x.g = 6
		c.setException(Exception)
		c.replay()
		try:
			x.g = 6
			self.fail()
		except Exception, e:
			pass
示例#30
0
	def testExplicitGeneratorExecptionUsage(self):
		"""Check exception raising with explicit generators using discrete settings"""
		c = Controller()
		x = c.mock()
		x.g(8, 9)
		c.generator()
		c.setReturn(10)
		c.setException(Exception("bogus"))
		c.replay()
		g = x.g(8, 9)
		self.failUnless(g.next() == 10)
		self.failUnlessRaises(Exception, g.next)