Implement stream_read_file
for the Swift storage engine
Note that Swift doesn't seem to have a file-like interface, so we need to wrap the generator we get back from it. Fixes #210
This commit is contained in:
parent
cb238f8764
commit
4333bb9e14
3 changed files with 127 additions and 1 deletions
|
@ -3,6 +3,49 @@ import unittest
|
|||
from itertools import islice
|
||||
|
||||
from util.validation import generate_valid_usernames
|
||||
from util.generatorfile import GeneratorFile
|
||||
|
||||
class TestGeneratorFile(unittest.TestCase):
|
||||
def sample_generator(self):
|
||||
yield 'this'
|
||||
yield 'is'
|
||||
yield 'a'
|
||||
yield 'test'
|
||||
|
||||
def test_basic_generator(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("thisisatest", f.read())
|
||||
|
||||
def test_same_lengths(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("this", f.read(4))
|
||||
self.assertEquals("is", f.read(2))
|
||||
self.assertEquals("a", f.read(1))
|
||||
self.assertEquals("test", f.read(4))
|
||||
|
||||
def test_indexed_lengths(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("thisis", f.read(6))
|
||||
self.assertEquals("atest", f.read(5))
|
||||
|
||||
def test_misindexed_lengths(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("thisis", f.read(6))
|
||||
self.assertEquals("ate", f.read(3))
|
||||
self.assertEquals("st", f.read(2))
|
||||
self.assertEquals("", f.read(2))
|
||||
|
||||
def test_misindexed_lengths_2(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("thisisat", f.read(8))
|
||||
self.assertEquals("e", f.read(1))
|
||||
self.assertEquals("st", f.read(2))
|
||||
self.assertEquals("", f.read(2))
|
||||
|
||||
def test_overly_long(self):
|
||||
with GeneratorFile(self.sample_generator()) as f:
|
||||
self.assertEquals("thisisatest", f.read(60))
|
||||
|
||||
|
||||
class TestUsernameGenerator(unittest.TestCase):
|
||||
def assert_generated_output(self, input_username, expected_output):
|
||||
|
@ -48,3 +91,8 @@ class TestUsernameGenerator(unittest.TestCase):
|
|||
self.assertEquals('a__0', generated_output[1])
|
||||
self.assertEquals('a__1', generated_output[2])
|
||||
self.assertEquals('a__2', generated_output[3])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
|
Reference in a new issue