[Jython-checkins] jython (2.5): #1828: fix repr and bool on long subclasses
philip.jenvey
jython-checkins at python.org
Fri Dec 16 01:20:30 CET 2011
http://hg.python.org/jython/rev/68626d94a76d
changeset: 6289:68626d94a76d
branch: 2.5
user: Philip Jenvey <pjenvey at underboss.org>
date: Thu Dec 15 16:18:57 2011 -0800
summary:
#1828: fix repr and bool on long subclasses
thanks Pekka Klarck
files:
Lib/test/test_long_jy.py | 34 +++++++++++++++++++++
NEWS | 1 +
src/org/python/core/PyLong.java | 13 +++++--
3 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/Lib/test/test_long_jy.py b/Lib/test/test_long_jy.py
new file mode 100644
--- /dev/null
+++ b/Lib/test/test_long_jy.py
@@ -0,0 +1,34 @@
+"""Misc long tests
+
+Made for Jython.
+"""
+from test import test_support
+import unittest
+
+class MyLong(long):
+ pass
+
+
+class LongTestCase(unittest.TestCase):
+
+ def _test_long_repr(self, type2test):
+ val = type2test(42)
+ self.assertEqual(str(val), '42')
+ self.assertEqual(repr(val), '42L')
+
+ def test_long_repr(self):
+ self._test_long_repr(long)
+
+ def test_long_subclass_repr(self):
+ self._test_long_repr(MyLong)
+
+ def test_subclass_bool(self):
+ # http://bugs.jython.org/issue1828
+ self.assertTrue(bool(MyLong(42)))
+
+
+def test_main():
+ test_support.run_unittest(LongTestCase)
+
+if __name__ == '__main__':
+ test_main()
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@
- [ 1819 ] Incorrect handling of Java object toString methods returning null
- [ 1824 ] os.link() can silently fail
- [ 1825 ] EnvironmentError.filename is `str` even if original name is `unicode`
+ - [ 1828 ] Problems inheriting from long
Jython 2.5.2
same as 2.5.2rc4
diff --git a/src/org/python/core/PyLong.java b/src/org/python/core/PyLong.java
--- a/src/org/python/core/PyLong.java
+++ b/src/org/python/core/PyLong.java
@@ -134,7 +134,7 @@
return long_toString();
}
- @ExposedMethod(names = {"__str__", "__repr__"}, doc = BuiltinDocs.long___str___doc)
+ @ExposedMethod(names = "__repr__", doc = BuiltinDocs.long___repr___doc)
final String long_toString() {
return getValue().toString() + "L";
}
@@ -151,12 +151,12 @@
@Override
public boolean __nonzero__() {
- return !getValue().equals(BigInteger.ZERO);
+ return long___nonzero__();
}
@ExposedMethod(doc = BuiltinDocs.long___nonzero___doc)
public boolean long___nonzero__() {
- return __nonzero__();
+ return !getValue().equals(BigInteger.ZERO);
}
public double doubleValue() {
@@ -933,9 +933,14 @@
}
}
+ @ExposedMethod(doc = BuiltinDocs.long___str___doc)
+ public PyString long___str__() {
+ return Py.newString(getValue().toString());
+ }
+
@Override
public PyString __str__() {
- return Py.newString(getValue().toString());
+ return long___str__();
}
@Override
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list