# tag: cpp from libcpp.string cimport string def test_indexing(char *py_str): """ >>> test_indexing("asdf") ('s', 's') """ cdef string s s = string(py_str) return chr(s[1]), chr(s.at(1)) def test_size(char *py_str): """ >>> test_size("asdf") (4, 4) """ cdef string s s = string(py_str) return s.size(), s.length() def test_compare(char *a, char *b): """ >>> test_compare("aa", "aa") 0 >>> test_compare("aa", "ab") < 0 True """ cdef string s = string(a) cdef string t = string(b) return s.compare(t) def test_empty(): """ >>> test_empty() (True, False) """ cdef string a = string(<char *>"") cdef string b = string(<char *>"aa") return a.empty(), b.empty() def test_push_back(char *a): """ >>> test_push_back("asdf") 'asdfZ' """ cdef string s = string(a) s.push_back(<char>ord('Z')) return s.c_str() def test_insert(char *a, char *b, int i): """ >>> test_insert("AAAA", "BBBB", 2) 'AABBBBAA' """ cdef string s = string(a) cdef string t = string(b) cdef string u = s.insert(i, t) return u.c_str() def test_copy(char *a): """ >>> test_copy("asdf") 'sdf' """ cdef string t = string(a) cdef char buffer[6] cdef size_t length = t.copy(buffer, 4, 1) buffer[length] = c'\0' return buffer def test_find(char *a, char *b): """ >>> test_find("asdf", "df") 2 """ cdef string s = string(a) cdef string t = string(b) cdef size_t i = s.find(t) return i def test_clear(): """ >>> test_clear() '' """ cdef string s = string(<char *>"asdf") s.clear() return s.c_str() def test_assign(char *a): """ >>> test_assign("asdf") 'ggg' """ cdef string s = string(a) s.assign(<char *>"ggg") return s.c_str() def test_substr(char *a): """ >>> test_substr("ABCDEFGH") ('BCDEFGH', 'BCDE', 'ABCDEFGH') """ cdef string s = string(a) cdef string x, y, z x = s.substr(1) y = s.substr(1, 4) z = s.substr() return x.c_str(), y.c_str(), z.c_str() def test_append(char *a, char *b): """ >>> test_append("asdf", "1234") 'asdf1234' """ cdef string s = string(a) cdef string t = string(b) cdef string j = s.append(t) return j.c_str() def test_char_compare(py_str): """ >>> test_char_compare("asdf") True """ cdef char *a = py_str cdef string b = string(a) return b.compare(b) == 0 def test_cstr(char *a): """ >>> test_cstr("asdf") 'asdf' """ cdef string b = string(a) return b.c_str() def test_equals_operator(char *a, char *b): """ >>> test_equals_operator("asdf", "asdf") (True, False) """ cdef string s = string(a) cdef string t = string(b) return t == s, t != <char *>"asdf" def test_less_than(char *a, char *b): """ >>> test_less_than("asd", "asdf") (True, True, True) >>> test_less_than("asd", "asd") (False, False, True) """ cdef string s = string(a) cdef string t = string(b) return (s < t, s < b, s <= b) def test_greater_than(char *a, char *b): """ >>> test_greater_than("asd", "asdf") (False, False, False) >>> test_greater_than("asd", "asd") (False, False, True) """ cdef string s = string(a) cdef string t = string(b) return (s > t, s > b, s >= b)