[Jython-checkins] jython (merge 2.5 -> default): Merge 2.5.
frank.wierzbicki
jython-checkins at python.org
Fri Apr 13 23:08:26 CEST 2012
http://hg.python.org/jython/rev/15effb1ed703
changeset: 6579:15effb1ed703
parent: 6577:6bc032612d2e
parent: 6578:b0d1a8983efa
user: Frank Wierzbicki <fwierzbicki at gmail.com>
date: Fri Apr 13 13:44:31 2012 -0700
summary:
Merge 2.5.
files:
Lib/test/test_list_jy.py | 103 +++++++++-
src/org/python/core/SequenceIndexDelegate.java | 2 +-
2 files changed, 102 insertions(+), 3 deletions(-)
diff --git a/Lib/test/test_list_jy.py b/Lib/test/test_list_jy.py
--- a/Lib/test/test_list_jy.py
+++ b/Lib/test/test_list_jy.py
@@ -104,9 +104,108 @@
self.assert_(lst[1] in (1,10))
self.run_threads(tester)
+class ExtendedSliceTestCase(unittest.TestCase):
+ '''Really thrash extended slice operations on list.'''
+ type2test = list
+
+ def test_extended_slice_delete(self):
+ # Based on list_tests.CommonTest.test_extendedslicing .
+ # In the cited test case, the stop value is nearly always the default
+ # (None), meaning the end of the list, and often the start value is too.
+ # This contributed to the release of http://bugs.jython.org/issue1873 .
+ # This is a supplementary test focused on correct stopping.
+
+ initial = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13]
+ expected1 = self.type2test([ 0, 1, 2, 3, 4, 5, 10,11,12,13])
+ expected2 = self.type2test([ 0, 1, 2, 4, 6, 8, 10, 12,13])
+ expected4 = self.type2test([ 0, 1, 3, 4, 5, 7, 8, 9, 11,12,13])
+
+ # Positive step
+ a = self.type2test(initial)
+ del a[6:10:1]
+ self.assertEqual(a, expected1)
+ a = self.type2test(initial)
+ del a[3:13:2]
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ del a[3:12:2]
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ del a[2:11:4]
+ self.assertEqual(a, expected4)
+ a = self.type2test(initial)
+ del a[2::4]
+ self.assertEqual(a, expected4)
+
+ # Negative step (same results)
+ a = self.type2test(initial)
+ del a[9:5:-1]
+ self.assertEqual(a, expected1)
+ a = self.type2test(initial)
+ del a[11:1:-2]
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ del a[11:2:-2]
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ del a[10:1:-4]
+ self.assertEqual(a, expected4)
+ a = self.type2test(initial)
+ del a[10::-4]
+ self.assertEqual(a, expected4)
+
+ def test_extended_slice_assign(self):
+ # Based on list_tests.CommonTest.test_extendedslicing .
+ # In the cited test case, the stop value is nearly always the default.
+ # This is a supplementary test focused on correct stopping.
+
+ aa, bb, cc = 91, 92, 93
+ src = self.type2test([aa,bb,cc])
+ initial = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13]
+ expected1 = self.type2test([ 0, 1, 2, 3, 4, 5,aa,bb,cc, 9,10,11,12,13])
+ expected2 = self.type2test([ 0, 1, 2,aa, 4,bb, 6,cc, 8, 9,10,11,12,13])
+ expected4 = self.type2test([ 0, 1,aa, 3, 4, 5,bb, 7, 8, 9,cc,11,12,13])
+
+ # Positive step
+ a = self.type2test(initial)
+ a[6:9:1] = src
+ self.assertEqual(a, expected1)
+ a = self.type2test(initial)
+ a[3:9:2] = src
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ a[3:8:2] = src
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ a[2:11:4] = src
+ self.assertEqual(a, expected4)
+ a = self.type2test(initial)
+ a[2::4] = src
+ self.assertEqual(a, expected4)
+
+ # Negative step (same results, as src is reversed)
+ src.reverse()
+ a = self.type2test(initial)
+ a[8:5:-1] = src
+ self.assertEqual(a, expected1)
+ a = self.type2test(initial)
+ a[7:2:-2] = src
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ a[7:1:-2] = src
+ self.assertEqual(a, expected2)
+ a = self.type2test(initial)
+ a[10:1:-4] = src
+ self.assertEqual(a, expected4)
+ a = self.type2test(initial)
+ a[10::-4] = src
+ self.assertEqual(a, expected4)
+
+
def test_main():
- test_support.run_unittest(ListTestCase, ThreadSafetyTestCase)
-
+ test_support.run_unittest(ListTestCase,
+ ThreadSafetyTestCase,
+ ExtendedSliceTestCase)
if __name__ == "__main__":
test_main()
diff --git a/src/org/python/core/SequenceIndexDelegate.java b/src/org/python/core/SequenceIndexDelegate.java
--- a/src/org/python/core/SequenceIndexDelegate.java
+++ b/src/org/python/core/SequenceIndexDelegate.java
@@ -121,7 +121,7 @@
stop--;
}
} else if(step < 0) {
- for(int i = start; i >= 0 && i >= stop; i += step) {
+ for(int i = start; i >= 0 && i > stop; i += step) {
delItem(i);
}
}
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list