cython
1# mode: run
2# tag: cpp, werror, cpp20
3
4from libcpp cimport bool
5from libcpp.string cimport string
6
7b_A = b'A'
8b_F = b'F'
9b_abc = b"ABC"
10b_def = b"DEF"
11
12def test_string_starts_with_char(bytes py_str):
13"""
14Test std::string.starts_with() with char type argument
15>>> test_string_starts_with_char(b'A')
16True
17>>> test_string_starts_with_char(b'F')
18False
19"""
20cdef char c = py_str[0]
21cdef string s = b"ABCDEF"
22return s.starts_with(c)
23
24
25def test_string_starts_with_cstr(bytes py_str):
26"""
27Test std::string.starts_with() with c str type argument (char*)
28>>> test_string_starts_with_cstr(b"ABC")
29True
30>>> test_string_starts_with_cstr(b"DEF")
31False
32"""
33cdef char* c = py_str
34cdef string s = b"ABCDEF"
35return s.starts_with(c)
36
37
38def test_string_ends_with_char(bytes py_str):
39"""
40Test std::string.ends_with() with char type argument
41>>> test_string_ends_with_char(b'F')
42True
43>>> test_string_ends_with_char(b'A')
44False
45"""
46cdef char c = py_str[0]
47cdef string s = b"ABCDEF"
48return s.ends_with(c)
49
50
51def test_string_ends_with_cstr(bytes py_str):
52"""
53Test std::string.ends_with() with c str type argument (char*)
54>>> test_string_ends_with_cstr(b"DEF")
55True
56>>> test_string_ends_with_cstr(b"ABC")
57False
58"""
59cdef char* c = py_str
60cdef string s = b"ABCDEF"
61return s.ends_with(c)