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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
import re
import uuid
from unittest import TestCase
from boltons import strutils
def test_strip_ansi():
assert strutils.strip_ansi(
'\x1b[0m\x1b[1;36mart\x1b[46;34m\xdc') == 'art\xdc'
assert strutils.strip_ansi(
'\x1b[0m\x1b[1;36mart\x1b[46;34m\xdc') == 'artÜ'
assert strutils.strip_ansi(
'╒══════╕\n│ \x1b[1mCell\x1b[0m │\n╘══════╛') == (
'╒══════╕\n'
'│ Cell │\n'
'╘══════╛')
assert strutils.strip_ansi(
'ls\r\n\x1B[00m\x1b[01;31mfile.zip\x1b[00m\r\n\x1b[01;31m') == \
'ls\r\nfile.zip\r\n'
assert strutils.strip_ansi(
'\t\u001b[0;35mIP\u001b[0m\t\u001b[0;36m192.1.0.2\u001b[0m') == \
'\tIP\t192.1.0.2'
assert strutils.strip_ansi('(╯°□°)╯︵ \x1b[1m┻━┻\x1b[0m') == (
'(╯°□°)╯︵ ┻━┻')
assert strutils.strip_ansi('(╯°□°)╯︵ \x1b[1m┻━┻\x1b[0m') == (
'(╯°□°)╯︵ ┻━┻')
assert strutils.strip_ansi(
b'(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0)\xe2\x95\xaf\xef\xb8'
b'\xb5 \x1b[1m\xe2\x94\xbb\xe2\x94\x81\xe2\x94\xbb\x1b[0m') == (
b'(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0)\xe2\x95\xaf\xef\xb8'
b'\xb5 \xe2\x94\xbb\xe2\x94\x81\xe2\x94\xbb')
assert strutils.strip_ansi(
bytearray('(╯°□°)╯︵ \x1b[1m┻━┻\x1b[0m', 'utf-8')) == \
bytearray(
b'(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0)\xe2\x95\xaf\xef\xb8'
b'\xb5 \xe2\x94\xbb\xe2\x94\x81\xe2\x94\xbb')
def test_asciify():
ref = 'Beyoncé'
b = strutils.asciify(ref)
assert len(b) == len(b)
assert b[-1:].decode('ascii') == 'e'
def test_indent():
to_indent = '\nabc\ndef\n\nxyz\n'
ref = '\n abc\n def\n\n xyz\n'
assert strutils.indent(to_indent, ' ') == ref
def test_is_uuid():
assert strutils.is_uuid(uuid.uuid4()) == True
assert strutils.is_uuid(uuid.uuid4(), version=1) == False
assert strutils.is_uuid(str(uuid.uuid4())) == True
assert strutils.is_uuid(str(uuid.uuid4()), version=1) == False
assert strutils.is_uuid(set('garbage')) == False
def test_parse_int_list():
assert strutils.parse_int_list("1,3,5-8,10-11,15") == [1, 3, 5, 6, 7, 8, 10, 11, 15]
assert strutils.parse_int_list("1,3,5-8,10-11,15,") == [1, 3, 5, 6, 7, 8, 10, 11, 15]
assert strutils.parse_int_list(",1,3,5-8,10-11,15") == [1, 3, 5, 6, 7, 8, 10, 11, 15]
assert strutils.parse_int_list(" 1, 3 ,5-8,10-11,15 ") == [1, 3, 5, 6, 7, 8, 10, 11, 15]
assert strutils.parse_int_list("3,1,5-8,10-11,15") == [1, 3, 5, 6, 7, 8, 10, 11, 15]
assert strutils.parse_int_list("5-8") == [5, 6, 7, 8]
assert strutils.parse_int_list("8-5") == [5, 6, 7, 8]
def test_format_int_list():
assert strutils.format_int_list([1, 3, 5, 6, 7, 8, 10, 11, 15]) == '1,3,5-8,10-11,15'
assert strutils.format_int_list([5, 6, 7, 8]) == '5-8'
assert strutils.format_int_list([1, 3, 5, 6, 7, 8, 10, 11, 15], delim_space=True) == '1, 3, 5-8, 10-11, 15'
assert strutils.format_int_list([5, 6, 7, 8], delim_space=True) == '5-8'
class TestMultiReplace(TestCase):
def test_simple_substitutions(self):
"""Test replacing multiple values."""
m = strutils.MultiReplace({r'cat': 'kedi', r'purple': 'mor', })
self.assertEqual(m.sub('The cat is purple'), 'The kedi is mor')
def test_shortcut_function(self):
"""Test replacing multiple values."""
self.assertEqual(
strutils.multi_replace(
'The cat is purple',
{r'cat': 'kedi', r'purple': 'mor', }
),
'The kedi is mor'
)
def test_substitutions_in_word(self):
"""Test replacing multiple values that are substrings of a word."""
m = strutils.MultiReplace({r'cat': 'kedi', r'purple': 'mor', })
self.assertEqual(m.sub('Thecatispurple'), 'Thekediismor')
def test_sub_with_regex(self):
"""Test substitutions with a regular expression."""
m = strutils.MultiReplace({
r'cat': 'kedi',
r'purple': 'mor',
r'q\w+?t': 'dinglehopper'
}, regex=True)
self.assertEqual(
m.sub('The purple cat ate a quart of jelly'),
'The mor kedi ate a dinglehopper of jelly'
)
def test_sub_with_list(self):
"""Test substitutions from an iterable instead of a dictionary."""
m = strutils.MultiReplace([
(r'cat', 'kedi'),
(r'purple', 'mor'),
(r'q\w+?t', 'dinglehopper'),
], regex=True)
self.assertEqual(
m.sub('The purple cat ate a quart of jelly'),
'The mor kedi ate a dinglehopper of jelly'
)
def test_sub_with_compiled_regex(self):
"""Test substitutions where some regular expressiosn are compiled."""
exp = re.compile(r'q\w+?t')
m = strutils.MultiReplace([
(r'cat', 'kedi'),
(r'purple', 'mor'),
(exp, 'dinglehopper'),
])
self.assertEqual(
m.sub('The purple cat ate a quart of jelly'),
'The mor kedi ate a dinglehopper of jelly'
)
def test_substitutions_with_regex_chars(self):
"""Test replacing values that have special regex characters."""
m = strutils.MultiReplace({'cat.+': 'kedi', r'purple': 'mor', })
self.assertEqual(m.sub('The cat.+ is purple'), 'The kedi is mor')
def test_roundzip():
aaa = b'a' * 10000
assert strutils.gunzip_bytes(strutils.gzip_bytes(aaa)) == aaa
assert strutils.gunzip_bytes(strutils.gzip_bytes(b'')) == b''
|