Commit 4b0a144f authored by Robert Bradshaw's avatar Robert Bradshaw

Running C++ operator tests.

parent 0078df28
cimport cython
from cython cimport dereference as deref
cdef extern from "cpp_operators_helper.h":
cdef cppclass TestOps:
char* operator+()
char* operator-()
char* operator*()
char* operator~()
char* operator++()
char* operator--()
char* operator++(int)
char* operator--(int)
char* operator+(int)
char* operator-(int)
char* operator*(int)
char* operator/(int)
char* operator%(int)
def test_unops():
"""
>>> test_unops()
unary+
unary-
unary~
unary*
"""
cdef TestOps* t = new TestOps()
print +t[0]
print -t[0]
print ~t[0]
print deref(t[0])
del t
def test_incdec():
"""
>>> test_incdec()
unary++
unary--
post++
post--
"""
cdef TestOps* t = new TestOps()
print cython.preincrement(t[0])
print cython.predecrement(t[0])
print cython.postincrement(t[0])
print cython.postdecrement(t[0])
del t
def test_binop():
"""
>>> test_binop()
binary+
binary-
binary*
binary/
binary%
"""
cdef TestOps* t = new TestOps()
print t[0] + 1
print t[0] - 1
print t[0] * 1
print t[0] / 1
print t[0] % 1
del t
#define UN_OP(op) const char* operator op () { return "unary"#op; }
#define POST_UN_OP(op) const char* operator op (int x) { return "post"#op; }
#define BIN_OP(op) const char* operator op (int x) { return "binary"#op; }
class TestOps {
public:
UN_OP(-);
UN_OP(+);
UN_OP(*);
UN_OP(~);
UN_OP(!);
UN_OP(&);
UN_OP(++);
UN_OP(--);
POST_UN_OP(++);
POST_UN_OP(--);
BIN_OP(+);
BIN_OP(-);
BIN_OP(*);
BIN_OP(/);
BIN_OP(%);
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment