Beispiel #1
0
 def test_read_seek_tell(self):
     h = storage.file(FILE, 'w')
     h.write('foobar')
     h.close()
     
     h = storage.file(FILE)
     self.assertEqual(h.tell(), 0)
     
     self.assertEqual(h.read(0), '')
     self.assertEqual(h.read(1), 'f')
     self.assertEqual(h.tell(), 1)
     h.seek(0)
     self.assertEqual(h.tell(), 0)
     self.assertEqual(h.read(1), 'f')
     
     self.assertEqual(h.read(), 'oobar')
     self.assertEqual(h.read(), '')
     
     h.seek(0)
     self.assertEqual(h.read(100), 'foobar')
     
     h.seek(1000)
     self.assertEqual(h.tell(), 1000)
     self.assertEqual(h.read(100), '')
     
     self.assertRaises(IOError, h.seek, -1)
     self.assertRaises(TypeError, h.seek, None)
Beispiel #2
0
 def test_seek_with_whence(self):
     data = 'foo bar baz'
     with storage.file(FILE, 'w') as h:
         h.write(data)
     
     h = storage.file(FILE)
     self.assertRaises(IOError, h.seek, 0, 3)
     self.assertRaises(IOError, h.seek, -1, 0)
     self.assertRaises(IOError, h.seek, 0, -1)
     self.assertRaises(TypeError, h.seek, 0, None)
     
     h.seek(3, 0)
     self.assertEqual(h.tell(), 3)
     
     h.seek(-3, 1)
     self.assertEqual(h.tell(), 0)
     self.assertRaises(IOError, h.seek, -1, 1)
     
     h.seek(3, 1)
     self.assertEqual(h.tell(), 3)
     
     h.seek(0, 2)
     self.assertEqual(h.tell(), len(data))
     
     h.seek(-2, 2)
     self.assertEqual(h.tell(), len(data) - 2)
     
     h.seek(2, 2)
     self.assertEqual(h.tell(), len(data) + 2)
     self.assertRaises(IOError, h.seek, -(len(data) + 1), 2)
Beispiel #3
0
 def test_read_to_write(self):
     handle = storage.file(FILE, 'w')
     handle.write('some new data')
     handle.close()
     
     h = storage.file(FILE)
     self.assertRaises(IOError, h.write, 'foobar')
Beispiel #4
0
 def test_gc_closes(self):
     handle = storage.file(FILE, 'w')
     handle.write('some new data')
     del handle
     gc.collect()
     gc.collect()
     self.assertEqual(storage.file(FILE).read(), 'some new data')
Beispiel #5
0
 def test_multiple_writes(self):
     handle = storage.file(FILE, 'w')
     handle.write('foo')
     handle.write('bar')
     handle.close()
     
     self.assertEqual(storage.file(FILE).read(), 'foobar')
Beispiel #6
0
 def test_open_write_deletes_and_creates(self):
     handle = storage.file(FILE, 'w')
     self.assertEqual(storage.file(FILE).read(), '')
     handle.write('foobar')
     handle.close()
     
     handle = storage.file(FILE, 'w')
     self.assertEqual(storage.file(FILE).read(), '')
Beispiel #7
0
 def test_default_backend(self):
     storage.backend = dict_backend
     
     self.assertRaises(IOError, storage.file, FILE)
     
     with storage.file(FILE, 'w') as h:
         h.write('foo')
     
     with storage.file(FILE) as h:
         self.assertEqual(h.read(), 'foo')
Beispiel #8
0
 def test_repr(self):
     write = storage.file(FILE, 'w')
     read = storage.file(FILE, 'r')
     string = '<open file %r mode %r>'
     self.assertEqual(repr(read), string % (FILE, 'r'))
     self.assertEqual(repr(write), string % (FILE, 'w'))
     
     string = '<closed file %r mode %r>'
     write.close()
     read.close()
     self.assertEqual(repr(read), string % (FILE, 'r'))
     self.assertEqual(repr(write), string % (FILE, 'w'))
Beispiel #9
0
 def test_flush(self):
     h = storage.file(FILE, 'w')
     h.write('foo')
     
     read_handle = storage.file(FILE)
     self.assertEqual(read_handle.read(), '')
     
     h.flush()
     self.assertEqual(read_handle.read(), 'foo')
     h.close()
     
     self.assertRaises(IOError, read_handle.flush)
     read_handle.close()
Beispiel #10
0
 def test_readlines(self):
     h = storage.file(FILE, 'w')
     h.write('foo\nbar\nbaz\n')
     self.assertRaises(IOError, h.readlines)
     h.close()
     
     h = storage.file(FILE)
     self.assertEqual(h.readlines(), ['foo\n', 'bar\n', 'baz\n'])
     self.assertEqual(h.readlines(), [])
     h.seek(0)
     
     self.assertRaises(TypeError, h.readline, None)
     self.assertEqual(h.readlines(0), ['foo\n', 'bar\n', 'baz\n'])
     h.close()
Beispiel #11
0
 def test_assorted_members(self):
     h = storage.file(FILE, 'w')
     self.assertEquals(h.encoding, None)
     self.assertEqual(h.errors, None)
     self.assertEqual(h.newlines, None)
     self.assertFalse(h.isatty())
     h.close()
     
     h = storage.file(FILE)
     self.assertEquals(h.encoding, None)
     self.assertEqual(h.errors, None)
     self.assertEqual(h.newlines, None)
     self.assertFalse(h.isatty())
     h.close()
Beispiel #12
0
    def test_read_write_mode(self):
        self.assertRaises(IOError, storage.file, FILE, 'r+')

        with storage.file(FILE, 'w') as h:
            h.write('foo')
        
        with storage.file(FILE, 'r+') as h:
            self.assertEqual(h.tell(), 0)
            self.assertEqual(h.read(), 'foo')
            self.assertEqual(h.tell(), 3)
            h.write('bar')
            self.assertEqual(h.tell(), 6)
            h.seek(0)
            self.assertEqual(h.read(), 'foobar')
Beispiel #13
0
 def test_writelines(self):
     h = storage.file(FILE, 'w')
     
     
     self.assertRaises(IOError, storage.file(FILE).writelines, [])
     self.assertRaises(TypeError, h.writelines, object())
     
     h.write('blah')
     h.writelines(['\n','q', 'w', 'e'])
     h.close()
     
     f = storage.file(FILE)
     data = f.read()
     f.close()
     self.assertEqual(data, 'blah\nqwe')
Beispiel #14
0
 def test_fileno(self):
     h = storage.file(FILE, 'w')
     h2 = storage.file(FILE)
     fileno1 = h.fileno()
     fileno2 = h2.fileno()
     
     self.assertTrue(isinstance(fileno1, int))
     self.assertTrue(isinstance(fileno2, int))
     
     self.assertTrue(fileno1 > 2)
     self.assertTrue(fileno2 > 2)
     
     self.assertNotEqual(fileno1, fileno2)
     
     h.close()
     h2.close()
Beispiel #15
0
 def test_append_read_mode(self):
     with storage.file(FILE, 'w') as f:
         f.write('foo')
     
     with storage.file(FILE, 'a+') as h:
         with storage.file(FILE) as f:
             self.assertEqual(f.read(), 'foo')
         
         self.assertEqual(h.tell(), 3)
         self.assertEqual(h.read(), '')
         h.write('bar')
         self.assertEqual(h.tell(), 6)
         self.assertEqual(h.read(), '')
         
         h.seek(0)
         self.assertEqual(h.read(), 'foobar')
Beispiel #16
0
 def test_closed(self):
     handle = storage.file(FILE, 'w')
     self.assertFalse(handle.closed)
     
     handle.close()
     self.assertTrue(handle.closed)
     
     self.assertRaises(ValueError, handle.write, 'foo')
     
     handle = storage.file(FILE)
     self.assertFalse(handle.closed)
     
     handle.close()
     self.assertTrue(handle.closed)
     
     self.assertRaises(ValueError, handle.read)
Beispiel #17
0
 def test_with(self):
     with storage.file(FILE, 'w') as h:
         h.write('foo\nbar\nbaz\n')
     self.assertTrue(h.closed)
         
     with storage.file(FILE) as h:
         self.assertEqual(h.readline(), 'foo\n')
         self.assertEqual(h.tell(), 4)
     self.assertTrue(h.closed)
     
     try:
         with storage.file(FILE) as h:
             raise IOError
     except IOError:
         self.assertTrue(h.closed)
     else:
         self.fail('IOError in with statement swallowed')
Beispiel #18
0
 def test_read_write_binary(self):
     h = storage.file(FILE, 'w')
     h.write('foo\nbar\n')
     h.close()
 
     h = storage.file(FILE)
     self.assertEqual(h.read(), 'foo\nbar\n')
     h.close()
     
     h = storage.file(FILE, 'rb')
     self.assertEqual(h.read(), 'foo\r\nbar\r\n')
     h.close()
     
     h = storage.file(FILE, 'wb')
     h.write('foo\nbar\n')
     h.close()
     
     h = storage.file(FILE, 'rb')
     self.assertEqual(h.read(), 'foo\nbar\n')
     h.close()
     
     h = storage.file(FILE, 'w')
     h.write('foo\nbar\n')
     h.close()
     
     h = storage.file(FILE, 'rb')
     self.assertEqual(h.read(), 'foo\r\nbar\r\n')
     h.close()
Beispiel #19
0
 def test_file_simple_read_and_write(self):
     source_data = 'Some text\nwith newlines\n'
     
     handle = storage.file(FILE, 'w')
     self.assertEquals(handle.mode, 'w')
     handle.write(source_data)
     handle.close()
     
     handle = storage.file(FILE,'r')
     data = handle.read()
     self.assertEquals(handle.mode, 'r')
     handle.close()
     self.assertEqual(data, source_data)
     
     handle = storage.file(FILE)
     self.assertEquals(handle.mode, 'r')
     data = handle.read()
     handle.close()
     self.assertEqual(data, source_data)
Beispiel #20
0
 def test_truncate(self):
     h = storage.file(FILE, 'w')
     h.write('kabloooie')
     
     self.assertRaises(IOError, storage.file(FILE).truncate)
     self.assertRaises(TypeError, h.truncate, 'foo')
     self.assertRaises(IOError, h.truncate, -1)
     
     h.seek(3)
     h.truncate()
     self.assertEqual(storage.file(FILE).read(), 'kab')
     
     h.truncate(10)
     self.assertEqual(storage.file(FILE).read(), 'kab\x00\x00\x00\x00\x00\x00\x00')
     self.assertEqual(h.tell(), 3)
     
     h.truncate(2)
     self.assertEqual(h.tell(), 3)
     h.close()
Beispiel #21
0
 def test_read_only_attributes(self):
     def setter(attribute, value):
         return lambda: setattr(h, attribute, value)
         
     with storage.file(FILE, 'w') as h:
         self.assertRaises(AttributeError, setter('mode', 'w'))
         self.assertRaises(AttributeError, setter('name', 'foo2'))
         self.assertRaises(AttributeError, setter('closed', True))
         self.assertRaises(AttributeError, setter('encoding', 'ascii'))
         self.assertRaises(AttributeError, setter('errors', None))
         self.assertRaises(AttributeError, setter('newlines', 'foo'))
Beispiel #22
0
 def test_softspace(self):
     h = storage.file(FILE, 'w')
     h.softspace = 1
     h.write('blam')
     self.assertEqual(h.softspace, 0)
     
     def set_softspace():
         h.softspace = 'kablooie'
     self.assertRaises(TypeError, set_softspace)
     
     h.close()
Beispiel #23
0
 def test_write_seek_tell(self):
     h = storage.file(FILE, 'w')
     self.assertEqual(h.tell(), 0)
     
     h.write('f')
     self.assertEqual(h.tell(), 1)
     h.seek(2)
     self.assertEqual(h.tell(), 2)
     h.write('g')
     h.close()
     self.assertEqual(storage.file(FILE).read(), 'f\x00g')
     
     h = storage.file(FILE, 'w')
     h.write('f')
     h.seek(0)
     h.write('g')
     h.close()
     self.assertEqual(storage.file(FILE).read(), 'g')
     
     h = storage.file(FILE, 'w')
     h.seek(1000)
     h.write('g')
     h.close()
     
     expected = '\x00' * 1000 + 'g'
     self.assertEqual(storage.file(FILE).read(), expected)
     
     self.assertRaises(IOError, h.seek, -1)
     self.assertRaises(TypeError, h.seek, None)
Beispiel #24
0
 def test_readline(self):
     h = storage.file(FILE, 'w')
     h.write('foo\nbar\nbaz\n')
     self.assertRaises(IOError, h.readline)
     h.close()
     
     h = storage.file(FILE)
     self.assertEqual(h.readline(), 'foo\n')
     self.assertEqual(h.tell(), 4)
     h.seek(0)
     self.assertEqual(h.readline(), 'foo\n')
     
     self.assertRaises(TypeError, h.readline, None)
     self.assertEqual(h.readline(0), '')
     self.assertEqual(h.readline(1), 'b')
     self.assertEqual(h.readline(100), 'ar\n')
     self.assertEqual(h.tell(), 8)
     self.assertEqual(h.readline(-1), 'baz\n')
     self.assertEqual(h.tell(), 12)
     self.assertEqual(h.readline(), '')
     self.assertEqual(h.tell(), 12)
     h.close()
Beispiel #25
0
 def test_next(self):
     h = storage.file(FILE, 'w')
     h.write('foo\nbar\nbaz\n')
     self.assertRaises(IOError, h.next)
     h.close()
     
     h = storage.file(FILE)
     self.assertEqual(h.next(), 'foo\n')
     
     self.assertRaises(ValueError, h.read)
     
     self.assertEqual(h.next(), 'bar\n')
     self.assertEqual(h.next(), 'baz\n')
     self.assertRaises(StopIteration, h.next)
     h.close()
     
     h = storage.file(FILE)
     self.assertEqual(h.next(), 'foo\n')
     h.seek(1)
     self.assertEqual(h.next(), 'oo\n')
     
     h.seek(3)
     self.assertEqual(h.read(4), '\nbar')
     self.assertEqual(h.next(), '\n')
Beispiel #26
0
 def test_write_to_read(self):
     h = storage.file(FILE, 'w')
     self.assertRaises(IOError, h.read)
Beispiel #27
0
 def test_xreadlines(self):
     h = storage.file(FILE, 'w')
     self.assertTrue(h.xreadlines() is h)
     h.close()
Beispiel #28
0
 def test_read_negative(self):
     with storage.file(FILE, 'w') as h:
         h.write('foo bar baz')
     
     with storage.file(FILE) as h:
         self.assertEqual(h.read(-3), 'foo bar baz')
Beispiel #29
0
 def test__iter__(self):
     # not as hard as you might think
     h = storage.file(FILE, 'w')
     i = h.__iter__()
     self.assertTrue(h is i)
     h.close()