Updated the dispatch unit tests to be consistant with our coding style.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4589 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
357e26baf6
commit
907e4f840e
|
@ -1,7 +1,7 @@
|
||||||
from django.dispatch.dispatcher import *
|
from django.dispatch.dispatcher import *
|
||||||
from django.dispatch import dispatcher, robust
|
from django.dispatch import dispatcher, robust
|
||||||
|
import unittest
|
||||||
import unittest, pprint, copy
|
import copy
|
||||||
|
|
||||||
def x(a):
|
def x(a):
|
||||||
return a
|
return a
|
||||||
|
@ -9,16 +9,13 @@ def x(a):
|
||||||
class Dummy(object):
|
class Dummy(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Callable(object):
|
class Callable(object):
|
||||||
|
|
||||||
def __call__(self, a):
|
def __call__(self, a):
|
||||||
return a
|
return a
|
||||||
|
|
||||||
def a(self, a):
|
def a(self, a):
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
|
||||||
class DispatcherTests(unittest.TestCase):
|
class DispatcherTests(unittest.TestCase):
|
||||||
"""Test suite for dispatcher (barely started)"""
|
"""Test suite for dispatcher (barely started)"""
|
||||||
|
|
||||||
|
@ -28,7 +25,7 @@ class DispatcherTests(unittest.TestCase):
|
||||||
self.connections = copy.copy(dispatcher.connections)
|
self.connections = copy.copy(dispatcher.connections)
|
||||||
self.senders = copy.copy(dispatcher.senders)
|
self.senders = copy.copy(dispatcher.senders)
|
||||||
|
|
||||||
def _isclean( self ):
|
def _testIsClean(self):
|
||||||
"""Assert that everything has been cleaned up automatically"""
|
"""Assert that everything has been cleaned up automatically"""
|
||||||
self.assertEqual(dispatcher.sendersBack, self.sendersBack)
|
self.assertEqual(dispatcher.sendersBack, self.sendersBack)
|
||||||
self.assertEqual(dispatcher.connections, self.connections)
|
self.assertEqual(dispatcher.connections, self.connections)
|
||||||
|
@ -42,8 +39,8 @@ class DispatcherTests(unittest.TestCase):
|
||||||
result = send('this',a, a=a)
|
result = send('this',a, a=a)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
disconnect(x, signal, a)
|
disconnect(x, signal, a)
|
||||||
self.assertEqual(len(list(getAllReceivers(a,signal))), 0)
|
self.assertEqual(list(getAllReceivers(a,signal)), [])
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testAnonymousSend(self):
|
def testAnonymousSend(self):
|
||||||
a = Dummy()
|
a = Dummy()
|
||||||
|
@ -51,10 +48,10 @@ class DispatcherTests(unittest.TestCase):
|
||||||
connect(x, signal)
|
connect(x, signal)
|
||||||
expected = [(x,a)]
|
expected = [(x,a)]
|
||||||
result = send(signal,None, a=a)
|
result = send(signal,None, a=a)
|
||||||
assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)
|
self.assertEqual(result, expected)
|
||||||
disconnect(x, signal)
|
disconnect(x, signal)
|
||||||
assert len(list(getAllReceivers(None,signal))) == 0
|
self.assertEqual(list(getAllReceivers(None,signal)), [])
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testAnyRegistration(self):
|
def testAnyRegistration(self):
|
||||||
a = Dummy()
|
a = Dummy()
|
||||||
|
@ -62,14 +59,14 @@ class DispatcherTests(unittest.TestCase):
|
||||||
connect(x, signal, Any)
|
connect(x, signal, Any)
|
||||||
expected = [(x,a)]
|
expected = [(x,a)]
|
||||||
result = send('this',object(), a=a)
|
result = send('this',object(), a=a)
|
||||||
assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)
|
self.assertEqual(result, expected)
|
||||||
disconnect(x, signal, Any)
|
disconnect(x, signal, Any)
|
||||||
expected = []
|
expected = []
|
||||||
result = send('this',object(), a=a)
|
result = send('this',object(), a=a)
|
||||||
assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)
|
self.assertEqual(result, expected)
|
||||||
assert len(list(getAllReceivers(Any,signal))) == 0
|
self.assertEqual(list(getAllReceivers(Any,signal)), [])
|
||||||
|
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testAnyRegistration2(self):
|
def testAnyRegistration2(self):
|
||||||
a = Dummy()
|
a = Dummy()
|
||||||
|
@ -77,10 +74,10 @@ class DispatcherTests(unittest.TestCase):
|
||||||
connect(x, Any, a)
|
connect(x, Any, a)
|
||||||
expected = [(x,a)]
|
expected = [(x,a)]
|
||||||
result = send('this',a, a=a)
|
result = send('this',a, a=a)
|
||||||
assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)
|
self.assertEqual(result, expected)
|
||||||
disconnect(x, Any, a)
|
disconnect(x, Any, a)
|
||||||
assert len(list(getAllReceivers(a,Any))) == 0
|
self.assertEqual(list(getAllReceivers(a,Any)), [])
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testGarbageCollected(self):
|
def testGarbageCollected(self):
|
||||||
a = Callable()
|
a = Callable()
|
||||||
|
@ -90,9 +87,9 @@ class DispatcherTests(unittest.TestCase):
|
||||||
expected = []
|
expected = []
|
||||||
del a
|
del a
|
||||||
result = send('this',b, a=b)
|
result = send('this',b, a=b)
|
||||||
assert result == expected,"""Send didn't return expected result:\n\texpected:%s\n\tgot:%s"""% (expected, result)
|
self.assertEqual(result, expected)
|
||||||
assert len(list(getAllReceivers(b,signal))) == 0, """Remaining handlers: %s"""%(getAllReceivers(b,signal),)
|
self.assertEqual(list(getAllReceivers(b,signal)), [])
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testGarbageCollectedObj(self):
|
def testGarbageCollectedObj(self):
|
||||||
class x:
|
class x:
|
||||||
|
@ -106,8 +103,8 @@ class DispatcherTests(unittest.TestCase):
|
||||||
del a
|
del a
|
||||||
result = send('this',b, a=b)
|
result = send('this',b, a=b)
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
self.assertEqual(len(list(getAllReceivers(b,signal))), 0)
|
self.assertEqual(list(getAllReceivers(b,signal)), [])
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
|
|
||||||
def testMultipleRegistration(self):
|
def testMultipleRegistration(self):
|
||||||
|
@ -121,12 +118,12 @@ class DispatcherTests(unittest.TestCase):
|
||||||
connect(a, signal, b)
|
connect(a, signal, b)
|
||||||
connect(a, signal, b)
|
connect(a, signal, b)
|
||||||
result = send('this',b, a=b)
|
result = send('this',b, a=b)
|
||||||
assert len( result ) == 1, result
|
self.assertEqual(len(result), 1)
|
||||||
assert len(list(getAllReceivers(b,signal))) == 1, """Remaining handlers: %s"""%(getAllReceivers(b,signal),)
|
self.assertEqual(len(list(getAllReceivers(b,signal))), 1)
|
||||||
del a
|
del a
|
||||||
del b
|
del b
|
||||||
del result
|
del result
|
||||||
self._isclean()
|
self._testIsClean()
|
||||||
|
|
||||||
def testRobust(self):
|
def testRobust(self):
|
||||||
"""Test the sendRobust function"""
|
"""Test the sendRobust function"""
|
||||||
|
@ -137,8 +134,8 @@ class DispatcherTests(unittest.TestCase):
|
||||||
connect(fails, Any, a)
|
connect(fails, Any, a)
|
||||||
result = robust.sendRobust('this',a, a=a)
|
result = robust.sendRobust('this',a, a=a)
|
||||||
err = result[0][1]
|
err = result[0][1]
|
||||||
assert isinstance( err, ValueError )
|
self.assert_(isinstance(err, ValueError))
|
||||||
assert err.args == ('this',)
|
self.assertEqual(err.args, ('this',))
|
||||||
|
|
||||||
def getSuite():
|
def getSuite():
|
||||||
return unittest.makeSuite(DispatcherTests,'test')
|
return unittest.makeSuite(DispatcherTests,'test')
|
||||||
|
|
|
@ -1,19 +1,26 @@
|
||||||
from django.dispatch.robustapply import *
|
from django.dispatch.robustapply import *
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
def noArgument():
|
def noArgument():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def oneArgument(blah):
|
def oneArgument(blah):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def twoArgument(blah, other):
|
def twoArgument(blah, other):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class TestCases(unittest.TestCase):
|
class TestCases(unittest.TestCase):
|
||||||
def test01(self):
|
def test01(self):
|
||||||
robustApply(noArgument)
|
robustApply(noArgument)
|
||||||
|
|
||||||
def test02(self):
|
def test02(self):
|
||||||
self.assertRaises(TypeError, robustApply, noArgument, "this")
|
self.assertRaises(TypeError, robustApply, noArgument, "this")
|
||||||
|
|
||||||
def test03(self):
|
def test03(self):
|
||||||
self.assertRaises(TypeError, robustApply, oneArgument)
|
self.assertRaises(TypeError, robustApply, oneArgument)
|
||||||
|
|
||||||
def test04(self):
|
def test04(self):
|
||||||
"""Raise error on duplication of a particular argument"""
|
"""Raise error on duplication of a particular argument"""
|
||||||
self.assertRaises(TypeError, robustApply, oneArgument, "this", blah = "that")
|
self.assertRaises(TypeError, robustApply, oneArgument, "this", blah = "that")
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
from django.dispatch.saferef import *
|
from django.dispatch.saferef import *
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
class Test1(object):
|
class Test1(object):
|
||||||
def x(self):
|
def x(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test2(obj):
|
def test2(obj):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class Test2(object):
|
class Test2(object):
|
||||||
def __call__(self, obj):
|
def __call__(self, obj):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class Tester(unittest.TestCase):
|
class Tester(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
ts = []
|
ts = []
|
||||||
|
@ -28,17 +32,21 @@ class Tester (unittest.TestCase):
|
||||||
self.ts = ts
|
self.ts = ts
|
||||||
self.ss = ss
|
self.ss = ss
|
||||||
self.closureCount = 0
|
self.closureCount = 0
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
del self.ts
|
del self.ts
|
||||||
del self.ss
|
del self.ss
|
||||||
|
|
||||||
def testIn(self):
|
def testIn(self):
|
||||||
"""Test the "in" operator for safe references (cmp)"""
|
"""Test the "in" operator for safe references (cmp)"""
|
||||||
for t in self.ts[:50]:
|
for t in self.ts[:50]:
|
||||||
assert safeRef(t.x) in self.ss
|
self.assert_(safeRef(t.x) in self.ss)
|
||||||
|
|
||||||
def testValid(self):
|
def testValid(self):
|
||||||
"""Test that the references are valid (return instance methods)"""
|
"""Test that the references are valid (return instance methods)"""
|
||||||
for s in self.ss:
|
for s in self.ss:
|
||||||
assert s()
|
self.assert_(s())
|
||||||
|
|
||||||
def testShortCircuit (self):
|
def testShortCircuit (self):
|
||||||
"""Test that creation short-circuits to reuse existing references"""
|
"""Test that creation short-circuits to reuse existing references"""
|
||||||
sd = {}
|
sd = {}
|
||||||
|
@ -46,9 +54,10 @@ class Tester (unittest.TestCase):
|
||||||
sd[s] = 1
|
sd[s] = 1
|
||||||
for t in self.ts:
|
for t in self.ts:
|
||||||
if hasattr(t, 'x'):
|
if hasattr(t, 'x'):
|
||||||
assert sd.has_key( safeRef(t.x))
|
self.assert_(sd.has_key(safeRef(t.x)))
|
||||||
else:
|
else:
|
||||||
assert sd.has_key( safeRef(t))
|
self.assert_(sd.has_key(safeRef(t)))
|
||||||
|
|
||||||
def testRepresentation (self):
|
def testRepresentation (self):
|
||||||
"""Test that the reference object's representation works
|
"""Test that the reference object's representation works
|
||||||
|
|
||||||
|
@ -57,14 +66,6 @@ class Tester (unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
repr(self.ss[-1])
|
repr(self.ss[-1])
|
||||||
|
|
||||||
def test(self):
|
|
||||||
self.closureCount = 0
|
|
||||||
wholeI = len(self.ts)
|
|
||||||
for i in xrange( len(self.ts)-1, -1, -1):
|
|
||||||
del self.ts[i]
|
|
||||||
if wholeI-i != self.closureCount:
|
|
||||||
"""Unexpected number of items closed, expected %s, got %s closed"""%( wholeI-i,self.closureCount)
|
|
||||||
|
|
||||||
def _closure(self, ref):
|
def _closure(self, ref):
|
||||||
"""Dumb utility mechanism to increment deletion counter"""
|
"""Dumb utility mechanism to increment deletion counter"""
|
||||||
self.closureCount +=1
|
self.closureCount +=1
|
||||||
|
|
Loading…
Reference in New Issue