def test_reading_exact_wrapping_singles(self):
        b = RingBuffer(4)
        b.write(b"ab")
        self.assertEqual(b.read(), b"ab")

        b.write(b"defg")
        self.assertEqual(b.read_exactly(1), b"d")
        self.assertEqual(b.read_exactly(1), b"e")
        self.assertEqual(b.read_exactly(1), b"f")
    def test_reading_exact_wrapping_full(self):
        b = RingBuffer(4)
        b.write(b"ab")
        self.assertEqual(b.read(), b"ab")

        b.write(b"defg")
        self.assertEqual(b.read_exactly(4), b"defg")
 def test_reading_exact_nothing(self):
     b = RingBuffer(4)
     b.write(b"abc")
     self.assertEqual(b.read_exactly(0), b"")
 def test_reading_exact_basic_full(self):
     b = RingBuffer(4)
     b.write(b"abcd")
     self.assertEqual(b.read_exactly(4), b"abcd")
 def test_reading_exact_basic(self):
     b = RingBuffer(4)
     b.write(b"abc")
     self.assertEqual(b.read_exactly(2), b"ab")
 def test_reading_exact_negative(self):
     b = RingBuffer(4)
     b.write(b"abc")
     with self.assertRaises(ValueError):
         b.read_exactly(-1)