Author: Wim Lavrijsen <[email protected]>
Branch: reflex-support
Changeset: r62766:66e9a50cc4a4
Date: 2013-03-25 13:12 -0700
http://bitbucket.org/pypy/pypy/changeset/66e9a50cc4a4/

Log:    add test for globally overloaded (in-)equality operators

diff --git a/pypy/module/cppyy/test/advancedcpp.xml 
b/pypy/module/cppyy/test/advancedcpp.xml
--- a/pypy/module/cppyy/test/advancedcpp.xml
+++ b/pypy/module/cppyy/test/advancedcpp.xml
@@ -33,6 +33,11 @@
   <class name="some_class_with_data" />
   <class name="some_class_with_data::some_data" />
 
+  <class name="some_comparable" />
+  <function name="operator=="/>
+  <function name="operator!="/>
+
+
   <class name="ref_tester" />
   <class name="std::vector<ref_tester>" />
 
diff --git a/pypy/module/cppyy/test/advancedcpp_LinkDef.h 
b/pypy/module/cppyy/test/advancedcpp_LinkDef.h
--- a/pypy/module/cppyy/test/advancedcpp_LinkDef.h
+++ b/pypy/module/cppyy/test/advancedcpp_LinkDef.h
@@ -58,6 +58,10 @@
 #pragma link C++ class some_class_with_data;
 #pragma link C++ class some_class_with_data::some_data;
 
+#pragma link C++ class some_comparable;
+#pragma link C++ function operator==(const some_comparable&, const 
some_comparable&);
+#pragma link C++ function operator!=(const some_comparable&, const 
some_comparable&);
+
 #pragma link C++ class ref_tester;
 #pragma link C++ class std::vector<ref_tester>;
 #pragma link C++ class pointer_pass;
diff --git a/pypy/module/cppyy/test/test_advancedcpp.py 
b/pypy/module/cppyy/test/test_advancedcpp.py
--- a/pypy/module/cppyy/test/test_advancedcpp.py
+++ b/pypy/module/cppyy/test/test_advancedcpp.py
@@ -611,3 +611,21 @@
 
         assert float(a) == 4321.
         assert float(a) == a.m_d
+
+    def test20_comparator(self):
+        """Check that the global operator!=/== is picked up"""
+
+        from cppyy import gbl
+
+        a, b = gbl.some_comparable(), gbl.some_comparable()
+
+        assert a == b
+        assert b == a
+        assert a.__eq__(b)
+        assert b.__eq__(a)
+        assert a.__ne__(a)
+        assert b.__ne__(b)
+        assert a.__eq__(b) == True
+        assert b.__eq__(a) == True
+        assert a.__eq__(a) == False
+        assert b.__eq__(b) == False
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to