1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
from mutagen._tools._util import split_escape
from tests import TestCase
class Tsplit_escape(TestCase):
def test_split_escape(self):
inout = [
(("", ":"), [""]),
((":", ":"), ["", ""]),
((":", ":", 0), [":"]),
((":b:c:", ":", 0), [":b:c:"]),
((":b:c:", ":", 1), ["", "b:c:"]),
((":b:c:", ":", 2), ["", "b", "c:"]),
((":b:c:", ":", 3), ["", "b", "c", ""]),
(("a\\:b:c", ":"), ["a:b", "c"]),
(("a\\\\:b:c", ":"), ["a\\", "b", "c"]),
(("a\\\\\\:b:c\\:", ":"), ["a\\:b", "c:"]),
(("\\", ":"), [""]),
(("\\\\", ":"), ["\\"]),
(("\\\\a\\b", ":"), ["\\a\\b"]),
]
for inargs, out in inout:
self.assertEqual(split_escape(*inargs), out)
def test_types(self):
parts = split_escape(b"\xff:\xff", b":")
self.assertEqual(parts, [b"\xff", b"\xff"])
self.assertTrue(isinstance(parts[0], bytes))
parts = split_escape(b"", b":")
self.assertEqual(parts, [b""])
self.assertTrue(isinstance(parts[0], bytes))
parts = split_escape(u"a:b", u":")
self.assertEqual(parts, [u"a", u"b"])
self.assertTrue(all(isinstance(p, str) for p in parts))
parts = split_escape(u"", u":")
self.assertEqual(parts, [u""])
self.assertTrue(all(isinstance(p, str) for p in parts))
parts = split_escape(u":", u":")
self.assertEqual(parts, [u"", u""])
self.assertTrue(all(isinstance(p, str) for p in parts))
|