10a8c90248264a8b26970b4473770bcc3df8515fJosh Gao# Tests that work for both bytes and buffer objects.
20a8c90248264a8b26970b4473770bcc3df8515fJosh Gao# See PEP 3137.
30a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
40a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport struct
50a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport sys
60a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
70a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass MixinBytesBufferCommonTests(object):
80a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    """Tests that work for both bytes and buffer objects.
90a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    See PEP 3137.
100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    """
110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def marshal(self, x):
130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        """Convert x into the appropriate type for these tests."""
140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        raise RuntimeError('test class must provide a marshal method')
150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_islower(self):
170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').islower())
180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'a').islower())
190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'A').islower())
200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'\n').islower())
210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'abc').islower())
220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'aBc').islower())
230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'abc\n').islower())
240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').islower, 42)
250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_isupper(self):
270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').isupper())
280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'a').isupper())
290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A').isupper())
300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'\n').isupper())
310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'ABC').isupper())
320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'AbC').isupper())
330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'ABC\n').isupper())
340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').isupper, 42)
350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_istitle(self):
370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').istitle())
380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'a').istitle())
390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A').istitle())
400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'\n').istitle())
410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A Titlecased Line').istitle())
420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A\nTitlecased Line').istitle())
430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A Titlecased, Line').istitle())
440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'Not a capitalized String').istitle())
450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'Not\ta Titlecase String').istitle())
460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'Not--a Titlecase String').istitle())
470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'NOT').istitle())
480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').istitle, 42)
490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_isspace(self):
510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').isspace())
520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'a').isspace())
530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b' ').isspace())
540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'\t').isspace())
550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'\r').isspace())
560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'\n').isspace())
570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b' \t\r\n').isspace())
580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b' \t\r\na').isspace())
590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').isspace, 42)
600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_isalpha(self):
620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').isalpha())
630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'a').isalpha())
640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A').isalpha())
650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'\n').isalpha())
660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'abc').isalpha())
670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'aBc123').isalpha())
680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'abc\n').isalpha())
690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').isalpha, 42)
700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_isalnum(self):
720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').isalnum())
730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'a').isalnum())
740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'A').isalnum())
750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'\n').isalnum())
760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'123abc456').isalnum())
770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'a1b3c').isalnum())
780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'aBc000 ').isalnum())
790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'abc\n').isalnum())
800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').isalnum, 42)
810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_isdigit(self):
830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'').isdigit())
840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'a').isdigit())
850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'0').isdigit())
860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertTrue(self.marshal(b'0123456789').isdigit())
870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertFalse(self.marshal(b'0123456789a').isdigit())
880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').isdigit, 42)
900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_lower(self):
920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'hello', self.marshal(b'HeLLo').lower())
930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'hello', self.marshal(b'hello').lower())
940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').lower, 42)
950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_upper(self):
970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'HELLO', self.marshal(b'HeLLo').upper())
980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'HELLO', self.marshal(b'HELLO').upper())
990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').upper, 42)
1000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_capitalize(self):
1020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b' hello ', self.marshal(b' hello ').capitalize())
1030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Hello ', self.marshal(b'Hello ').capitalize())
1040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Hello ', self.marshal(b'hello ').capitalize())
1050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Aaaa', self.marshal(b'aaaa').capitalize())
1060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Aaaa', self.marshal(b'AaAa').capitalize())
1070a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1080a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').capitalize, 42)
1090a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_ljust(self):
1110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc       ', self.marshal(b'abc').ljust(10))
1120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc   ', self.marshal(b'abc').ljust(6))
1130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').ljust(3))
1140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').ljust(2))
1150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc*******', self.marshal(b'abc').ljust(10, '*'))
1160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').ljust)
1170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_rjust(self):
1190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'       abc', self.marshal(b'abc').rjust(10))
1200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'   abc', self.marshal(b'abc').rjust(6))
1210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').rjust(3))
1220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').rjust(2))
1230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'*******abc', self.marshal(b'abc').rjust(10, '*'))
1240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').rjust)
1250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_center(self):
1270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'   abc    ', self.marshal(b'abc').center(10))
1280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b' abc  ', self.marshal(b'abc').center(6))
1290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').center(3))
1300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc', self.marshal(b'abc').center(2))
1310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'***abc****', self.marshal(b'abc').center(10, '*'))
1320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').center)
1330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_swapcase(self):
1350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'hEllO CoMPuTErS',
1360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao            self.marshal(b'HeLLo cOmpUteRs').swapcase())
1370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').swapcase, 42)
1390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_zfill(self):
1410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'123', self.marshal(b'123').zfill(2))
1420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'123', self.marshal(b'123').zfill(3))
1430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'0123', self.marshal(b'123').zfill(4))
1440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'+123', self.marshal(b'+123').zfill(3))
1450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'+123', self.marshal(b'+123').zfill(4))
1460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'+0123', self.marshal(b'+123').zfill(5))
1470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'-123', self.marshal(b'-123').zfill(3))
1480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'-123', self.marshal(b'-123').zfill(4))
1490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'-0123', self.marshal(b'-123').zfill(5))
1500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'000', self.marshal(b'').zfill(3))
1510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'34', self.marshal(b'34').zfill(1))
1520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'0034', self.marshal(b'34').zfill(4))
1530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'123').zfill)
1550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_expandtabs(self):
1570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\rab      def\ng       hi',
1580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
1590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\rab      def\ng       hi',
1600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
1610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\rab  def\ng   hi',
1620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(4))
1630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\r\nab  def\ng   hi',
1640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\r\nab\tdef\ng\thi').expandtabs(4))
1650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\rab      def\ng       hi',
1660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
1670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\rab      def\ng       hi',
1680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
1690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'abc\r\nab\r\ndef\ng\r\nhi',
1700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao            self.marshal(b'abc\r\nab\r\ndef\ng\r\nhi').expandtabs(4))
1710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'  a\n b', self.marshal(b' \ta\n\tb').expandtabs(1))
1720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').expandtabs, 42, 42)
1740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        # This test is only valid when sizeof(int) == sizeof(void*) == 4.
1750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        if sys.maxint < (1 << 32) and struct.calcsize('P') == 4:
1760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao            self.assertRaises(OverflowError,
1770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                              self.marshal(b'\ta\n\tb').expandtabs, sys.maxint)
1780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_title(self):
1800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b' Hello ', self.marshal(b' hello ').title())
1810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Hello ', self.marshal(b'hello ').title())
1820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Hello ', self.marshal(b'Hello ').title())
1830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Format This As Title String',
1840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'fOrMaT thIs aS titLe String').title())
1850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Format,This-As*Title;String',
1860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'fOrMaT,thIs-aS*titLe;String').title())
1870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual(b'Getint', self.marshal(b'getInt').title())
1880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'hello').title, 42)
1890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
1900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_splitlines(self):
1910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'abc', b'def', b'', b'ghi'],
1920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\ndef\n\rghi').splitlines())
1930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'abc', b'def', b'', b'ghi'],
1940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\ndef\n\r\nghi').splitlines())
1950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'abc', b'def', b'ghi'],
1960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\ndef\r\nghi').splitlines())
1970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'abc', b'def', b'ghi'],
1980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\ndef\r\nghi\n').splitlines())
1990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'abc', b'def', b'ghi', b''],
2000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'abc\ndef\r\nghi\n\r').splitlines())
2010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'', b'abc', b'def', b'ghi', b''],
2020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines())
2030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertEqual([b'\n', b'abc\n', b'def\r\n', b'ghi\n', b'\r'],
2040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao                         self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines(1))
2050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
2060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        self.assertRaises(TypeError, self.marshal(b'abc').splitlines, 42, 42)
207