@@ -200,6 +200,25 @@ def test_startswith(dtype, null_value, na):
200200 tm .assert_series_equal (rs , xp )
201201
202202
203+ @pytest .mark .parametrize ("na" , [None , True , False ])
204+ def test_startswith_nullable_string_dtype (nullable_string_dtype , na ):
205+ values = Series (
206+ ["om" , None , "foo_nom" , "nom" , "bar_foo" , None , "foo" , "regex" , "rege." ],
207+ dtype = nullable_string_dtype ,
208+ )
209+ result = values .str .startswith ("foo" , na = na )
210+ exp = Series (
211+ [False , na , True , False , False , na , True , False , False ], dtype = "boolean"
212+ )
213+ tm .assert_series_equal (result , exp )
214+
215+ result = values .str .startswith ("rege." , na = na )
216+ exp = Series (
217+ [False , na , False , False , False , na , False , False , True ], dtype = "boolean"
218+ )
219+ tm .assert_series_equal (result , exp )
220+
221+
203222@pytest .mark .parametrize ("dtype" , [None , "category" ])
204223@pytest .mark .parametrize ("null_value" , [None , np .nan , pd .NA ])
205224@pytest .mark .parametrize ("na" , [True , False ])
@@ -228,6 +247,25 @@ def test_endswith(dtype, null_value, na):
228247 tm .assert_series_equal (rs , xp )
229248
230249
250+ @pytest .mark .parametrize ("na" , [None , True , False ])
251+ def test_endswith_nullable_string_dtype (nullable_string_dtype , na ):
252+ values = Series (
253+ ["om" , None , "foo_nom" , "nom" , "bar_foo" , None , "foo" , "regex" , "rege." ],
254+ dtype = nullable_string_dtype ,
255+ )
256+ result = values .str .endswith ("foo" , na = na )
257+ exp = Series (
258+ [False , na , False , False , True , na , True , False , False ], dtype = "boolean"
259+ )
260+ tm .assert_series_equal (result , exp )
261+
262+ result = values .str .endswith ("rege." , na = na )
263+ exp = Series (
264+ [False , na , False , False , False , na , False , False , True ], dtype = "boolean"
265+ )
266+ tm .assert_series_equal (result , exp )
267+
268+
231269def test_replace ():
232270 values = Series (["fooBAD__barBAD" , np .nan ])
233271
0 commit comments