summaryrefslogtreecommitdiff
path: root/tests/run/cpp_stl_bit_cpp20.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/cpp_stl_bit_cpp20.pyx')
-rw-r--r--tests/run/cpp_stl_bit_cpp20.pyx131
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/run/cpp_stl_bit_cpp20.pyx b/tests/run/cpp_stl_bit_cpp20.pyx
new file mode 100644
index 000000000..5aae8326a
--- /dev/null
+++ b/tests/run/cpp_stl_bit_cpp20.pyx
@@ -0,0 +1,131 @@
+# mode: run
+# tag: cpp, werror, cpp20
+
+from libcpp cimport bool
+from libc.stdint cimport uint8_t, int8_t
+from libcpp.bit cimport (bit_cast, has_single_bit, bit_ceil, bit_floor,
+ bit_width, rotr, rotl, countl_zero, countl_one, countr_zero,
+ countr_one, popcount)
+
+def test_bit_cast():
+ """
+ Test bit_cast with a signed 8bit wide integer type.
+ -127U = 0b1000'0001U
+ >>> test_bit_cast()
+ 129
+ """
+ cdef int8_t x = -127
+ cdef result = bit_cast[uint8_t, int8_t](x)
+ return result
+
+def test_has_single_bit():
+ """
+ Test has_single_bit with a unsigned 8bit wide integer type.
+ >>> test_has_single_bit()
+ True
+ """
+ cdef uint8_t x = 1
+ cdef bint res = has_single_bit[uint8_t](x)
+ return res
+
+def test_bit_ceil():
+ """
+ Test bit_ceil with a unsigned 8bit wide integer type.
+ >>> test_bit_ceil()
+ 4
+ """
+ cdef uint8_t x = 3
+ cdef uint8_t res = bit_ceil[uint8_t](x)
+ return res
+
+def test_bit_floor():
+ """
+ Test bit_floor with a unsigned 8bit wide integer type.
+ >>> test_bit_floor()
+ 4
+ """
+ cdef uint8_t x = 5
+ cdef uint8_t res = bit_floor[uint8_t](x)
+ return res
+
+def test_bit_width():
+ """
+ Test bit_width with a unsigned 8bit wide integer type.
+ >>> test_bit_width()
+ 3
+ """
+ cdef uint8_t x = 5
+ cdef int res = bit_width[uint8_t](x)
+ return res
+
+def test_rotl():
+ """
+ Test rotl with a unsigned 8bit wide integer type.
+ >>> test_rotl()
+ 209
+ """
+ cdef uint8_t x = 29
+ cdef int s = 4
+ cdef uint8_t res = rotl[uint8_t](x, s)
+ return res
+
+def test_rotr():
+ """
+ Test rotr with a unsigned 8bit wide integer type.
+ >>> test_rotr()
+ 142
+ """
+ cdef uint8_t x = 29
+ cdef int s = 1
+ cdef uint8_t res = rotr[uint8_t](x, s)
+ return res
+
+def test_countl_zero():
+ """
+ Test countl_zero with a unsigned 8bit wide integer type.
+ >>> test_countl_zero()
+ 3
+ """
+ cdef uint8_t x = 24
+ cdef int res = countl_zero[uint8_t](x)
+ return res
+
+def test_countr_zero():
+ """
+ Test countr_zero with a unsigned 8bit wide integer type.
+ >>> test_countr_zero()
+ 3
+ """
+ cdef uint8_t x = 24
+ cdef int res = countr_zero[uint8_t](x)
+ return res
+
+def test_countl_one():
+ """
+ Test countl_one with a unsigned 8bit wide integer type.
+ >>> test_countl_one()
+ 3
+ """
+ cdef uint8_t x = 231
+ cdef int res = countl_one[uint8_t](x)
+ return res
+
+def test_countr_one():
+ """
+ Test countr_one with a unsigned 8bit wide integer type.
+ >>> test_countr_one()
+ 3
+ """
+ cdef uint8_t x = 231
+ cdef int res = countr_one[uint8_t](x)
+ return res
+
+def test_popcount():
+ """
+ Test popcount with a unsigned 8bit wide integer type.
+ >>> test_popcount()
+ 8
+ """
+ cdef uint8_t x = 255
+ cdef int res = popcount[uint8_t](x)
+ return res