homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author terry.reedy
Recipients JayKrish, Todd.Rovito, philwebster, terry.reedy
Date 2013年07月01日.23:43:40
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1372722220.88.0.0548548711201.issue18226@psf.upfronthosting.co.za>
In-reply-to
Content
The patch models Text.data as a single string. But a tkinter Text contains a sequence of strings. While the single sequence works for the one test of the ...event method, a list of strings is needed for .get and many other methods with position parameters to actually work. And .get is needed for testing find_paragraph and, I am sure, other methods of other classes.
I am not sure of the correct initialization, but it mostly will not matter.
More troublesome is that tkinter lines start at 1, not 0. Possible responses are 1) add a dummy first line to self.data, 2) added all line number by -1 before indexing, or 3) ignore the difference as it will not matter for most tests. I like 3). Any test that cares can prepend an extra \n to the beginning of the text is loads into the editor.
Choosing 3, the methods would be
def __init__(self):
 self.data = [''] # I think
def setData(self, text)
 self.data = text.split('\n)
def getData(self):
 return '\n'.join(self.data)
# easy so far ;-)
def _decode(self, position): # private helper
 line, col = position.split('.')
 line = int(line)
 col = len(self.data[line]) if col == '0 lineend' else int(col)
 return line, col
Doc string for Text.get(self, index1, index2=None) is
"Return the text from INDEX1 to INDEX2 (not included)."
Interpreting this gives
def get(self, start, end=None):
 line, col = self._decode(start)
 if end is None:
 return self.data[line][col]
 else:
 endline, endcol = self._decode(end)
 if line == endline:
 return self.data[line][col:endcol]
 else:
 lines = [self.data[line][col:]]
 for i in range(line+1, endline):
 lines.append(self.data[i])
 lines.append(self.data[endline][:endcol])
 return '\n'.join(lines)
This .get code can be used or adapted for .count, .dump, .delete, .replace, and even .insert. At this point, we need a test for the mock Text class. Maybe we can extract something from tkinter.Text tests.
I am not sure how far to go with this; at some point (use of marks or tags?), we say "Use tkinter.Text and make it a gui test.". But handling as least basic indexing and pairs of indexes seems essential to me.
For gui methods like .see and .scan*, the docstring should be something short like "Gui method, do nothing."
History
Date User Action Args
2013年07月01日 23:43:40terry.reedysetrecipients: + terry.reedy, Todd.Rovito, JayKrish, philwebster
2013年07月01日 23:43:40terry.reedysetmessageid: <1372722220.88.0.0548548711201.issue18226@psf.upfronthosting.co.za>
2013年07月01日 23:43:40terry.reedylinkissue18226 messages
2013年07月01日 23:43:40terry.reedycreate

AltStyle によって変換されたページ (->オリジナル) /