aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-01-07 17:39:18 -0200
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:12:52 -0300
commit57c3abba8b09fdb3f9fc2ddccaf5efce3edace31 (patch)
tree77f7b31c408cd103b46eb10bb87ac1a49b58e82c
parent9d16874b68af3b77d97613e579c83ac19590293f (diff)
Fix bug#530 - "Importing division from future breaks QPoint division"
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Lauro Moura <lauro.neto@openbossa.org>
-rw-r--r--generator/cppgenerator.cpp2
-rw-r--r--tests/libsample/point.cpp6
-rw-r--r--tests/libsample/point.h1
-rw-r--r--tests/samplebinding/newdivision_test.py14
4 files changed, 22 insertions, 1 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index 18e9d0b22..26809edc0 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -2659,7 +2659,7 @@ void CppGenerator::writeTypeAsNumberDefinition(QTextStream& s, const AbstractMet
s << INDENT << "/*nb_inplace_xor*/ (binaryfunc)" << nb["__ixor__"] << ',' << endl;
s << INDENT << "/*nb_inplace_or*/ (binaryfunc)" << nb["__ior__"] << ',' << endl;
s << INDENT << "/*nb_floor_divide*/ 0," << endl;
- s << INDENT << "/*nb_true_divide*/ 0," << endl;
+ s << INDENT << "/*nb_true_divide*/ (binaryfunc)" << nb["__div__"] << ',' << endl;
s << INDENT << "/*nb_inplace_floor_divide*/ 0," << endl;
s << INDENT << "/*nb_inplace_true_divide*/ 0," << endl;
s << INDENT << "/*nb_index*/ 0" << endl;
diff --git a/tests/libsample/point.cpp b/tests/libsample/point.cpp
index b8d310cfe..484e7c11c 100644
--- a/tests/libsample/point.cpp
+++ b/tests/libsample/point.cpp
@@ -118,6 +118,12 @@ operator!(const Point& pt)
return (pt.m_x == 0.0 && pt.m_y == 0.0);
}
+Point
+Point::operator/(int operand)
+{
+ return Point(m_x/operand, m_y/operand);
+}
+
Complex
transmutePointIntoComplex(const Point& point)
{
diff --git a/tests/libsample/point.h b/tests/libsample/point.h
index 5c1e19a25..cc7a1bc5a 100644
--- a/tests/libsample/point.h
+++ b/tests/libsample/point.h
@@ -54,6 +54,7 @@ public:
Point operator+(const Point& other);
Point operator-(const Point& other);
+ Point operator/(int operand);
friend LIBSAMPLE_API Point operator*(const Point& pt, double mult);
friend LIBSAMPLE_API Point operator*(const Point& pt, int mult);
diff --git a/tests/samplebinding/newdivision_test.py b/tests/samplebinding/newdivision_test.py
new file mode 100644
index 000000000..fbaeeab1b
--- /dev/null
+++ b/tests/samplebinding/newdivision_test.py
@@ -0,0 +1,14 @@
+from __future__ import division
+from sample import *
+import unittest
+
+class TestNewDivision(unittest.TestCase):
+
+ def testIt(self):
+ p = Point(4, 4)
+ p2 = p/2
+ self.assertEqual(p2, Point(2, 2))
+
+if __name__ == "__main__":
+ unittest.main()
+