OLD | NEW |
| (Empty) |
1 | |
2 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
3 # See LICENSE for details. | |
4 | |
5 | |
6 from twisted.trial import unittest | |
7 from twisted.protocols import loopback | |
8 from twisted.protocols import basic | |
9 from twisted.internet import protocol, abstract | |
10 | |
11 import StringIO | |
12 | |
13 class BufferingServer(protocol.Protocol): | |
14 buffer = '' | |
15 def dataReceived(self, data): | |
16 self.buffer += data | |
17 | |
18 class FileSendingClient(protocol.Protocol): | |
19 def __init__(self, f): | |
20 self.f = f | |
21 | |
22 def connectionMade(self): | |
23 s = basic.FileSender() | |
24 d = s.beginFileTransfer(self.f, self.transport, lambda x: x) | |
25 d.addCallback(lambda r: self.transport.loseConnection()) | |
26 | |
27 class FileSenderTestCase(unittest.TestCase): | |
28 def testSendingFile(self): | |
29 testStr = 'xyz' * 100 + 'abc' * 100 + '123' * 100 | |
30 s = BufferingServer() | |
31 c = FileSendingClient(StringIO.StringIO(testStr)) | |
32 | |
33 d = loopback.loopbackTCP(s, c) | |
34 d.addCallback(lambda x : self.assertEquals(s.buffer, testStr)) | |
35 return d | |
36 | |
37 def testSendingEmptyFile(self): | |
38 fileSender = basic.FileSender() | |
39 consumer = abstract.FileDescriptor() | |
40 consumer.connected = 1 | |
41 emptyFile = StringIO.StringIO('') | |
42 | |
43 d = fileSender.beginFileTransfer(emptyFile, consumer, lambda x: x) | |
44 | |
45 # The producer will be immediately exhausted, and so immediately | |
46 # unregistered | |
47 self.assertEqual(consumer.producer, None) | |
48 | |
49 # Which means the Deferred from FileSender should have been called | |
50 self.failUnless(d.called, | |
51 'producer unregistered with deferred being called') | |
52 | |
OLD | NEW |