Skip to content

Commit cb1c024

Browse files
committed
Move GH16808 tests to their own method.
1 parent 57e764a commit cb1c024

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

pandas/tests/test_strings.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -431,16 +431,6 @@ def test_replace(self):
431431
values = klass(data)
432432
pytest.raises(TypeError, values.str.replace, 'a', repl)
433433

434-
# GH16808 literal replace (regex=False vs regex=True)
435-
values = Series(['f.o', 'foo', NA])
436-
exp = Series(['bao', 'bao', NA])
437-
result = values.str.replace('f.', 'ba')
438-
tm.assert_series_equal(result, exp)
439-
440-
exp = Series(['bao', 'foo', NA])
441-
result = values.str.replace('f.', 'ba', regex=False)
442-
tm.assert_series_equal(result, exp)
443-
444434
def test_replace_callable(self):
445435
# GH 15055
446436
values = Series(['fooBAD__barBAD', NA])
@@ -451,8 +441,6 @@ def test_replace_callable(self):
451441
exp = Series(['foObaD__baRbaD', NA])
452442
tm.assert_series_equal(result, exp)
453443

454-
pytest.raises(ValueError, values.str.replace, 'abc', repl, regex=False)
455-
456444
# test with wrong number of arguments, raising an error
457445
if compat.PY2:
458446
p_err = r'takes (no|(exactly|at (least|most)) ?\d+) arguments?'
@@ -534,8 +522,6 @@ def test_replace_compiled_regex(self):
534522
"case and flags cannot be"):
535523
result = values.str.replace(pat, '', case=True)
536524

537-
pytest.raises(ValueError, values.str.replace, pat, '', regex=False)
538-
539525
# test with callable
540526
values = Series(['fooBAD__barBAD', NA])
541527
repl = lambda m: m.group(0).swapcase()
@@ -544,6 +530,24 @@ def test_replace_compiled_regex(self):
544530
exp = Series(['foObaD__baRbaD', NA])
545531
tm.assert_series_equal(result, exp)
546532

533+
def test_replace_literal(self):
534+
# GH16808 literal replace (regex=False vs regex=True)
535+
values = Series(['f.o', 'foo', NA])
536+
exp = Series(['bao', 'bao', NA])
537+
result = values.str.replace('f.', 'ba')
538+
tm.assert_series_equal(result, exp)
539+
540+
exp = Series(['bao', 'foo', NA])
541+
result = values.str.replace('f.', 'ba', regex=False)
542+
tm.assert_series_equal(result, exp)
543+
544+
# Cannot do a literal replace if given a callable repl or compiled pattern
545+
callable_repl = lambda m: m.group(0).swapcase()
546+
compiled_pat = re.compile('[a-z][A-Z]{2}')
547+
548+
pytest.raises(ValueError, values.str.replace, 'abc', callable_repl, regex=False)
549+
pytest.raises(ValueError, values.str.replace, compiled_pat, '', regex=False)
550+
547551
def test_repeat(self):
548552
values = Series(['a', 'b', NA, 'c', NA, 'd'])
549553

0 commit comments

Comments
 (0)