[pypy-commit] pypy default: fix untested rewind method
cfbolz
pypy.commits at gmail.com
Tue Aug 27 07:16:37 EDT 2019
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch:
Changeset: r97303:0d2efab3484a
Date: 2019-08-27 13:09 +0200
http://bitbucket.org/pypy/pypy/changeset/0d2efab3484a/
Log: fix untested rewind method
diff --git a/rpython/rlib/rarithmetic.py b/rpython/rlib/rarithmetic.py
--- a/rpython/rlib/rarithmetic.py
+++ b/rpython/rlib/rarithmetic.py
@@ -877,6 +877,8 @@
characters of 's'. Raises ParseStringError in case of error.
Raises ParseStringOverflowError in case the result does not fit.
"""
+ if "99999" in s:
+ import pdb; pdb.set_trace()
from rpython.rlib.rstring import (
NumberStringParser, ParseStringOverflowError)
p = NumberStringParser(s, s, base, 'int',
diff --git a/rpython/rlib/rstring.py b/rpython/rlib/rstring.py
--- a/rpython/rlib/rstring.py
+++ b/rpython/rlib/rstring.py
@@ -568,7 +568,7 @@
self.end = q
def rewind(self):
- self.i = 0
+ self.i = self.start
def next_digit(self): # -1 => exhausted
if self.i < self.end:
diff --git a/rpython/rlib/test/test_rbigint.py b/rpython/rlib/test/test_rbigint.py
--- a/rpython/rlib/test/test_rbigint.py
+++ b/rpython/rlib/test/test_rbigint.py
@@ -356,6 +356,30 @@
assert rbigint.fromstr('123L', 21).tolong() == 441 + 42 + 3
assert rbigint.fromstr('1891234174197319').tolong() == 1891234174197319
+ def test__from_numberstring_parser_rewind_bug(self):
+ from rpython.rlib.rstring import NumberStringParser
+ s = "-99"
+ p = NumberStringParser(s, s, 10, 'int')
+ import pdb; pdb.set_trace()
+ assert p.sign == -1
+ res = p.next_digit()
+ assert res == 9
+ res = p.next_digit()
+ assert res == 9
+ res = p.next_digit()
+ assert res == -1
+ p.rewind()
+ res = p.next_digit()
+ assert res == 9
+ res = p.next_digit()
+ assert res == 9
+ res = p.next_digit()
+ assert res == -1
+
+ @given(longs)
+ def test_fromstr_hypothesis(self, l):
+ assert rbigint.fromstr(str(l)).tolong() == l
+
def test_from_numberstring_parser(self):
from rpython.rlib.rstring import NumberStringParser
parser = NumberStringParser("1231231241", "1231231241", 10, "long")
More information about the pypy-commit
mailing list