immutable/literal.py: Implement interface changes in literal nodes.

This commit is contained in:
Kevan Carstensen 2011-08-01 19:08:14 -07:00
parent 8ae564d8ad
commit 3e996e0c94
2 changed files with 26 additions and 0 deletions

View File

@ -102,3 +102,15 @@ class LiteralFileNode(_ImmutableFileNodeBase):
d = basic.FileSender().beginFileTransfer(StringIO(data), consumer)
d.addCallback(lambda lastSent: consumer)
return d
# IReadable, IFileNode, IFilesystemNode
def get_best_readable_version(self):
return defer.succeed(self)
def download_best_version(self):
return defer.succeed(self.u.data)
download_to_data = download_best_version
get_size_of_best_version = get_current_size

View File

@ -95,6 +95,20 @@ class Node(unittest.TestCase):
def _check_segment(res):
self.failUnlessEqual(res, DATA[1:1+5])
d.addCallback(_check_segment)
d.addCallback(lambda ignored: fn1.get_best_readable_version())
d.addCallback(lambda fn2: self.failUnlessEqual(fn1, fn2))
d.addCallback(lambda ignored:
fn1.get_size_of_best_version())
d.addCallback(lambda size:
self.failUnlessEqual(size, len(DATA)))
d.addCallback(lambda ignored:
fn1.download_to_data())
d.addCallback(lambda data:
self.failUnlessEqual(data, DATA))
d.addCallback(lambda ignored:
fn1.download_best_version())
d.addCallback(lambda data:
self.failUnlessEqual(data, DATA))
return d