def test_large_hash(self):
     with open('/dev/urandom', 'r+b') as f:
         buf = StringBuffer.from_file(f.fileno(), 4096 * 3)
     buf_sha = buf.hash()
     from hashlib import sha1
     outside = StringBuffer(sha1(buf.raw_read()).digest())
     self.assertEquals(outside.raw_read(), buf_sha.raw_read())
 def test_fread(self):
     sb = StringBuffer(16)
     with TemporaryFile('w+b') as f:
         fd = f.fileno()
         f.write('hello world\n')
         f.seek(0)
         sb.fread(fd, 8)
         sb.seek(0)
         self.assertEquals(sb.raw_read(8), 'hello wo')
    def test_overflow(self):
        sb = StringBuffer(24)
        with self.assertRaises(BufferOverflow):
            sb.write('this string is definitely longer than 24 characters and should raise an error')

        self.assertRaises(OverflowError, sb.seek, -1)

        sb = StringBuffer(8)
        sb.set('01234567')
        sb.seek(0)
        buf = sb.raw_read(8)
        self.assertEquals(buf, '01234567')
        self.assertRaises(BufferOverflow, sb.raw_read, 1)
 def test_hash(self):
     buf = StringBuffer("Hello World")
     buf_sha = buf.hash()
     from hashlib import sha1
     outside = StringBuffer(sha1(buf.raw_read()).digest())
     self.assertEquals(outside.raw_read(), buf_sha.raw_read())