1# ticket: t582
2
3cimport cython
4
5################################################################################
6## plain char*
7
8@cython.test_assert_path_exists('//SingleAssignmentNode')
9#@cython.test_fail_if_path_exists('//SingleAssignmentNode//CoerceFromPyTypeNode')
10def charptr_equals_literal(char* s):
11    """
12    >>> charptr_equals_literal('abc'.encode('ASCII'))
13    True
14    >>> charptr_equals_literal('aabc'.encode('ASCII'))
15    False
16    >>> charptr_equals_literal('abcx'.encode('ASCII'))
17    False
18    >>> charptr_equals_literal('bcx'.encode('ASCII'))
19    False
20    """
21    cdef bint result = (s == b"abc")
22    return result
23
24def charptr_gt_literal(char* s):
25    """
26    >>> charptr_gt_literal('abc'.encode('ASCII'))
27    False
28    >>> charptr_gt_literal('aabc'.encode('ASCII'))
29    False
30    >>> charptr_gt_literal('abcx'.encode('ASCII'))
31    True
32    >>> charptr_gt_literal('bcx'.encode('ASCII'))
33    True
34    """
35    cdef bint result = (s > b"abc")
36    return result
37
38def charptr_lt_literal(char* s):
39    """
40    >>> charptr_lt_literal('abc'.encode('ASCII'))
41    False
42    >>> charptr_lt_literal('aabc'.encode('ASCII'))
43    True
44    >>> charptr_lt_literal('abcx'.encode('ASCII'))
45    False
46    >>> charptr_lt_literal('bcx'.encode('ASCII'))
47    False
48    """
49    cdef bint result = (s < b"abc")
50    return result
51
52def charptr_ge_literal(char* s):
53    """
54    >>> charptr_ge_literal('abc'.encode('ASCII'))
55    True
56    >>> charptr_ge_literal('aabc'.encode('ASCII'))
57    False
58    >>> charptr_ge_literal('abcx'.encode('ASCII'))
59    True
60    >>> charptr_ge_literal('bcx'.encode('ASCII'))
61    True
62    """
63    cdef bint result = (s >= b"abc")
64    return result
65
66def charptr_le_literal(char* s):
67    """
68    >>> charptr_le_literal('abc'.encode('ASCII'))
69    True
70    >>> charptr_le_literal('aabc'.encode('ASCII'))
71    True
72    >>> charptr_le_literal('abcx'.encode('ASCII'))
73    False
74    >>> charptr_le_literal('bcx'.encode('ASCII'))
75    False
76    """
77    cdef bint result = (s <= b"abc")
78    return result
79
80
81################################################################################
82## slices
83
84@cython.test_assert_path_exists('//SingleAssignmentNode')
85#FIXME: optimise me!
86#@cython.test_fail_if_path_exists('//SingleAssignmentNode//CoerceFromPyTypeNode')
87def slice_equals_literal(char* s):
88    """
89    >>> slice_equals_literal('abc'.encode('ASCII'))
90    True
91    >>> slice_equals_literal('aabc'.encode('ASCII'))
92    False
93    >>> slice_equals_literal('abcx'.encode('ASCII'))
94    True
95    >>> slice_equals_literal('bcx'.encode('ASCII'))
96    False
97    """
98    cdef bint result = (s[:3] == b"abc")
99    return result
100
101def slice_gt_literal(char* s):
102    """
103    >>> slice_gt_literal('abc'.encode('ASCII'))
104    False
105    >>> slice_gt_literal('aabc'.encode('ASCII'))
106    False
107    >>> slice_gt_literal('abcx'.encode('ASCII'))
108    False
109    >>> slice_gt_literal('bcx'.encode('ASCII'))
110    True
111    """
112    cdef bint result = (s[:3] > b"abc")
113    return result
114
115def slice_lt_literal(char* s):
116    """
117    >>> slice_lt_literal('abc'.encode('ASCII'))
118    False
119    >>> slice_lt_literal('aabc'.encode('ASCII'))
120    True
121    >>> slice_lt_literal('abcx'.encode('ASCII'))
122    False
123    >>> slice_lt_literal('bcx'.encode('ASCII'))
124    False
125    """
126    cdef bint result = (s[:3] < b"abc")
127    return result
128
129def slice_ge_literal(char* s):
130    """
131    >>> slice_ge_literal('abc'.encode('ASCII'))
132    True
133    >>> slice_ge_literal('aabc'.encode('ASCII'))
134    False
135    >>> slice_ge_literal('abcx'.encode('ASCII'))
136    True
137    >>> slice_ge_literal('bcx'.encode('ASCII'))
138    True
139    """
140    cdef bint result = (s[:3] >= b"abc")
141    return result
142
143def slice_le_literal(char* s):
144    """
145    >>> slice_le_literal('abc'.encode('ASCII'))
146    True
147    >>> slice_le_literal('aabc'.encode('ASCII'))
148    True
149    >>> slice_le_literal('abcx'.encode('ASCII'))
150    True
151    >>> slice_le_literal('bcx'.encode('ASCII'))
152    False
153    """
154    cdef bint result = (s[:3] <= b"abc")
155    return result
156