src/GrampsDbUtils/_WriteGedcom.py :#2008 fix bug in breakout()
src/GrampsDbUtils/test/gedwrite_breakup_test.py : unittest for breakout svn: r10470
This commit is contained in:
parent
2d663ce2ee
commit
68e9450ef0
@ -252,11 +252,17 @@ def breakup(txt, limit):
|
|||||||
maximum length specified, while breaking words in the middle of a word
|
maximum length specified, while breaking words in the middle of a word
|
||||||
to avoid issues with spaces.
|
to avoid issues with spaces.
|
||||||
"""
|
"""
|
||||||
|
if limit < 1:
|
||||||
|
raise ValueError("breakup: unexpected limit: %r" % limit)
|
||||||
data = []
|
data = []
|
||||||
while limit < len(txt)+1:
|
while len(txt) > limit:
|
||||||
idx = limit-1
|
# look for non-space pair to break between
|
||||||
while txt[idx-1].isspace() or txt[idx].isspace() :
|
idx = limit
|
||||||
|
while idx>0 and (txt[idx-1].isspace() or txt[idx].isspace()):
|
||||||
idx -= 1
|
idx -= 1
|
||||||
|
if idx == 0:
|
||||||
|
#no words to break on, just break at limit anyway
|
||||||
|
idx = limit
|
||||||
data.append(txt[:idx])
|
data.append(txt[:idx])
|
||||||
txt = txt[idx:]
|
txt = txt[idx:]
|
||||||
if len(txt) > 0:
|
if len(txt) > 0:
|
||||||
|
57
src/GrampsDbUtils/test/gedwrite_breakup_test.py
Normal file
57
src/GrampsDbUtils/test/gedwrite_breakup_test.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
"""gedwrite_breakup_test tests the breakup function in GedcomWrite"""
|
||||||
|
import unittest as U
|
||||||
|
|
||||||
|
from test.test_util import msg, path_append_parent
|
||||||
|
path_append_parent();
|
||||||
|
import _WriteGedcom as WG
|
||||||
|
|
||||||
|
class Test1(U.TestCase):
|
||||||
|
def test1a_common(s):
|
||||||
|
#txt, limit, [split-results]
|
||||||
|
L=4
|
||||||
|
dat = (
|
||||||
|
##0123456
|
||||||
|
("a", L, ["a",]),
|
||||||
|
("abc", L, ["abc",]),
|
||||||
|
("abcd", L, ["abcd",]),
|
||||||
|
("abcde", L, ["abcd","e"]),
|
||||||
|
("1234567", L, ["1234","567"]),
|
||||||
|
("12345678", L, ["1234","5678"]),
|
||||||
|
("123456789", L, ["1234","5678", "9"]),
|
||||||
|
)
|
||||||
|
for (t,l,r) in dat:
|
||||||
|
g = WG.breakup(t,l)
|
||||||
|
s.assertEquals(g,r, msg(g,r, "breakup(%r,%d) results" % (t,l)))
|
||||||
|
|
||||||
|
def test1b_spaces(s):
|
||||||
|
#txt, limit, [split-results]
|
||||||
|
L=4
|
||||||
|
dat = (
|
||||||
|
##0123456
|
||||||
|
("a b ", L, ["a b ",]),
|
||||||
|
(" a b", L, [" a b",]),
|
||||||
|
("asdf g", L, ["asd", "f g"]),
|
||||||
|
(" z", L, [" ", "z"]),
|
||||||
|
(" z", L, [" ", " z"]),
|
||||||
|
(" A", 2, [" ", " ", " ", "A"]),
|
||||||
|
)
|
||||||
|
for (t,l,r) in dat:
|
||||||
|
g = WG.breakup(t,l)
|
||||||
|
s.assertEquals(g,r, msg(g,r, "breakup(%r,%d) results" % (t,l)))
|
||||||
|
|
||||||
|
def test1c_unusual(s):
|
||||||
|
#just documenting behavior for unlikely input
|
||||||
|
#txt, limit, [split-results]
|
||||||
|
dat = (
|
||||||
|
##0123456
|
||||||
|
("", 4, []),
|
||||||
|
("xyz", 1, ["x", "y", "z"]),
|
||||||
|
)
|
||||||
|
for (t,l,r) in dat:
|
||||||
|
g = WG.breakup(t,l)
|
||||||
|
s.assertEquals(g,r, msg(g,r, "breakup(%r,%d) results" % (t,l)))
|
||||||
|
s.assertRaises(ValueError, WG.breakup, "xy",0)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
U.main()
|
||||||
|
#===eof===
|
Loading…
Reference in New Issue
Block a user