Changeset 4589
- Timestamp:
- 02/25/07 21:44:36 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/tests/regressiontests/dispatch/tests/test_dispatcher.py
r4588 r4589 1 1 from django.dispatch.dispatcher import * 2 2 from django.dispatch import dispatcher, robust 3 4 import unittest, pprint,copy3 import unittest 4 import copy 5 5 6 6 def x(a): 7 7 return a 8 8 9 class Dummy( object):9 class Dummy(object): 10 10 pass 11 11 12 13 12 class Callable(object): 14 15 def __call__( self, a ): 13 def __call__(self, a): 16 14 return a 17 18 def a( self, a):15 16 def a(self, a): 19 17 return a 20 21 18 22 19 class DispatcherTests(unittest.TestCase): 23 20 """Test suite for dispatcher (barely started)""" 24 21 25 22 def setUp(self): 26 23 # track the initial state, since it's possible that others have bleed receivers in … … 28 25 self.connections = copy.copy(dispatcher.connections) 29 26 self.senders = copy.copy(dispatcher.senders) 30 31 def _ isclean( self):27 28 def _testIsClean(self): 32 29 """Assert that everything has been cleaned up automatically""" 33 30 self.assertEqual(dispatcher.sendersBack, self.sendersBack) … … 35 32 self.assertEqual(dispatcher.senders, self.senders) 36 33 37 def testExact (self):34 def testExact(self): 38 35 a = Dummy() 39 36 signal = 'this' 40 connect( x, signal, a)37 connect(x, signal, a) 41 38 expected = [(x,a)] 42 39 result = send('this',a, a=a) 43 40 self.assertEqual(result, expected) 44 disconnect( x, signal, a)45 self.assertEqual(l en(list(getAllReceivers(a,signal))), 0)46 self._ isclean()47 41 disconnect(x, signal, a) 42 self.assertEqual(list(getAllReceivers(a,signal)), []) 43 self._testIsClean() 44 48 45 def testAnonymousSend(self): 49 46 a = Dummy() 50 47 signal = 'this' 51 connect( x, signal)48 connect(x, signal) 52 49 expected = [(x,a)] 53 50 result = send(signal,None, a=a) 54 assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)55 disconnect( x, signal)56 assert len(list(getAllReceivers(None,signal))) == 057 self._ isclean()58 51 self.assertEqual(result, expected) 52 disconnect(x, signal) 53 self.assertEqual(list(getAllReceivers(None,signal)), []) 54 self._testIsClean() 55 59 56 def testAnyRegistration(self): 60 57 a = Dummy() 61 58 signal = 'this' 62 connect( x, signal, Any)59 connect(x, signal, Any) 63 60 expected = [(x,a)] 64 61 result = send('this',object(), a=a) 65 assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)66 disconnect( x, signal, Any)62 self.assertEqual(result, expected) 63 disconnect(x, signal, Any) 67 64 expected = [] 68 65 result = send('this',object(), a=a) 69 assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result) 70 assert len(list(getAllReceivers(Any,signal))) == 0 71 72 self._isclean() 66 self.assertEqual(result, expected) 67 self.assertEqual(list(getAllReceivers(Any,signal)), []) 73 68 69 self._testIsClean() 70 74 71 def testAnyRegistration2(self): 75 72 a = Dummy() 76 73 signal = 'this' 77 connect( x, Any, a)74 connect(x, Any, a) 78 75 expected = [(x,a)] 79 76 result = send('this',a, a=a) 80 assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)81 disconnect( x, Any, a)82 assert len(list(getAllReceivers(a,Any))) == 083 self._ isclean()84 77 self.assertEqual(result, expected) 78 disconnect(x, Any, a) 79 self.assertEqual(list(getAllReceivers(a,Any)), []) 80 self._testIsClean() 81 85 82 def testGarbageCollected(self): 86 83 a = Callable() 87 84 b = Dummy() 88 85 signal = 'this' 89 connect( a.a, signal, b)86 connect(a.a, signal, b) 90 87 expected = [] 91 88 del a 92 89 result = send('this',b, a=b) 93 assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)94 assert len(list(getAllReceivers(b,signal))) == 0, """Remaining handlers: %s"""%(getAllReceivers(b,signal),)95 self._ isclean()96 90 self.assertEqual(result, expected) 91 self.assertEqual(list(getAllReceivers(b,signal)), []) 92 self._testIsClean() 93 97 94 def testGarbageCollectedObj(self): 98 95 class x: 99 def __call__( self, a):96 def __call__(self, a): 100 97 return a 101 98 a = Callable() 102 99 b = Dummy() 103 100 signal = 'this' 104 connect( a, signal, b)101 connect(a, signal, b) 105 102 expected = [] 106 103 del a 107 104 result = send('this',b, a=b) 108 105 self.assertEqual(result, expected) 109 self.assertEqual(l en(list(getAllReceivers(b,signal))), 0)110 self._ isclean()106 self.assertEqual(list(getAllReceivers(b,signal)), []) 107 self._testIsClean() 111 108 112 109 113 110 def testMultipleRegistration(self): 114 111 a = Callable() 115 112 b = Dummy() 116 113 signal = 'this' 117 connect( a, signal, b)118 connect( a, signal, b)119 connect( a, signal, b)120 connect( a, signal, b)121 connect( a, signal, b)122 connect( a, signal, b)114 connect(a, signal, b) 115 connect(a, signal, b) 116 connect(a, signal, b) 117 connect(a, signal, b) 118 connect(a, signal, b) 119 connect(a, signal, b) 123 120 result = send('this',b, a=b) 124 assert len( result ) == 1, result125 assert len(list(getAllReceivers(b,signal))) == 1, """Remaining handlers: %s"""%(getAllReceivers(b,signal),)121 self.assertEqual(len(result), 1) 122 self.assertEqual(len(list(getAllReceivers(b,signal))), 1) 126 123 del a 127 124 del b 128 125 del result 129 self._ isclean()130 131 def testRobust( self):126 self._testIsClean() 127 128 def testRobust(self): 132 129 """Test the sendRobust function""" 133 def fails( ):134 raise ValueError( 'this')130 def fails(): 131 raise ValueError('this') 135 132 a = object() 136 133 signal = 'this' 137 connect( fails, Any, a)134 connect(fails, Any, a) 138 135 result = robust.sendRobust('this',a, a=a) 139 136 err = result[0][1] 140 assert isinstance( err, ValueError)141 assert err.args == ('this',)137 self.assert_(isinstance(err, ValueError)) 138 self.assertEqual(err.args, ('this',)) 142 139 143 140 def getSuite(): 144 141 return unittest.makeSuite(DispatcherTests,'test') 145 142 146 143 if __name__ == "__main__": 147 144 unittest.main () django/trunk/tests/regressiontests/dispatch/tests/test_robustapply.py
r4588 r4589 2 2 3 3 import unittest 4 4 5 def noArgument(): 5 6 pass 6 def oneArgument (blah): 7 8 def oneArgument(blah): 7 9 pass 10 8 11 def twoArgument(blah, other): 9 12 pass 10 class TestCases( unittest.TestCase ): 11 def test01( self ): 12 robustApply(noArgument ) 13 def test02( self ): 14 self.assertRaises( TypeError, robustApply, noArgument, "this" ) 15 def test03( self ): 16 self.assertRaises( TypeError, robustApply, oneArgument ) 17 def test04( self ): 13 14 class TestCases(unittest.TestCase): 15 def test01(self): 16 robustApply(noArgument) 17 18 def test02(self): 19 self.assertRaises(TypeError, robustApply, noArgument, "this") 20 21 def test03(self): 22 self.assertRaises(TypeError, robustApply, oneArgument) 23 24 def test04(self): 18 25 """Raise error on duplication of a particular argument""" 19 self.assertRaises( TypeError, robustApply, oneArgument, "this", blah = "that")26 self.assertRaises(TypeError, robustApply, oneArgument, "this", blah = "that") 20 27 21 28 def getSuite(): django/trunk/tests/regressiontests/dispatch/tests/test_saferef.py
r4588 r4589 2 2 3 3 import unittest 4 class Test1( object): 5 def x( self ): 4 5 class Test1(object): 6 def x(self): 6 7 pass 8 7 9 def test2(obj): 8 10 pass 9 class Test2( object ): 10 def __call__( self, obj ): 11 12 class Test2(object): 13 def __call__(self, obj): 11 14 pass 12 class Tester (unittest.TestCase): 13 def setUp (self): 15 16 class Tester(unittest.TestCase): 17 def setUp(self): 14 18 ts = [] 15 19 ss = [] 16 for x in xrange( 5000):20 for x in xrange(5000): 17 21 t = Test1() 18 ts.append( t)19 s = safeRef(t.x, self._closure )20 ss.append( s)21 ts.append( test2)22 ss.append( safeRef(test2, self._closure))23 for x in xrange( 30):22 ts.append(t) 23 s = safeRef(t.x, self._closure) 24 ss.append(s) 25 ts.append(test2) 26 ss.append(safeRef(test2, self._closure)) 27 for x in xrange(30): 24 28 t = Test2() 25 ts.append( t)26 s = safeRef(t, self._closure )27 ss.append( s)29 ts.append(t) 30 s = safeRef(t, self._closure) 31 ss.append(s) 28 32 self.ts = ts 29 33 self.ss = ss 30 34 self.closureCount = 0 31 def tearDown( self ): 35 36 def tearDown(self): 32 37 del self.ts 33 38 del self.ss 39 34 40 def testIn(self): 35 41 """Test the "in" operator for safe references (cmp)""" 36 42 for t in self.ts[:50]: 37 assert safeRef(t.x) in self.ss 43 self.assert_(safeRef(t.x) in self.ss) 44 38 45 def testValid(self): 39 46 """Test that the references are valid (return instance methods)""" 40 47 for s in self.ss: 41 assert s() 48 self.assert_(s()) 49 42 50 def testShortCircuit (self): 43 51 """Test that creation short-circuits to reuse existing references""" … … 46 54 sd[s] = 1 47 55 for t in self.ts: 48 if hasattr( t, 'x'):49 assert sd.has_key( safeRef(t.x))56 if hasattr(t, 'x'): 57 self.assert_(sd.has_key(safeRef(t.x))) 50 58 else: 51 assert sd.has_key( safeRef(t)) 59 self.assert_(sd.has_key(safeRef(t))) 60 52 61 def testRepresentation (self): 53 62 """Test that the reference object's representation works 54 63 55 64 XXX Doesn't currently check the results, just that no error 56 65 is raised 57 66 """ 58 repr( self.ss[-1] ) 59 60 def test(self): 61 self.closureCount = 0 62 wholeI = len(self.ts) 63 for i in xrange( len(self.ts)-1, -1, -1): 64 del self.ts[i] 65 if wholeI-i != self.closureCount: 66 """Unexpected number of items closed, expected %s, got %s closed"""%( wholeI-i,self.closureCount) 67 repr(self.ss[-1]) 67 68 68 69 def _closure(self, ref): … … 74 75 75 76 if __name__ == "__main__": 76 unittest.main ()77 unittest.main()
