[squeak-dev] The Inbox: Collections-EG.908.mcz

Levente Uzonyi leves at caesar.elte.hu
Sat Aug 8 16:32:56 UTC 2020


Hi Dave,

On Fri, 7 Aug 2020, David T. Lewis wrote:

> Actually, I think that the new ReadStreamTest>>testPeekBack is not in
> agreement with the existing RWBinaryOrTextSteamTest>>testPeekBack.
>
> The peekBack method was not in Squeak 3.6, but it appears in Squeak 3.8.
> It is unused in the image, but it presumably is intended to support parsing
> things from a stream.
>
> If I understand correctly, peek means "show me the next element that
> has not yet been read from the stream", and peekBack means "show me the
> element before the one that was most recently read from the stream".
> So I expect that peekBack would mean to skip back 2 from the current
> position, not skip back 1.

Another interpretation of peek in the context of streams is to look 
around the current position without consuming any elements.
#peek returns what #next would return without consuming any elements,
and following the same logic, #peekBack is expected to return what #back 
would without affecting position.

That interpretation is what Eric implemented.

If we decide to stick with the previous implementation based on #oldBack, 
which does not make any practical sense to me, then we'll need another 
method to get the last read element, because #peekBack would return the 
penultimate one.


Levente

>
> Dave
>
> On Fri, Aug 07, 2020 at 09:32:56PM -0400, David T. Lewis wrote:
>> The new tests and fix for PositionableStream look good, but there is a
>> failure now in RWBinaryOrTextStreamTest>>testPeekBack.
>> 
>> Dave
>> 
>> On Sat, Aug 08, 2020 at 12:17:32AM +0000, commits at source.squeak.org wrote:
>> > A new version of Collections was added to project The Inbox:
>> > http://source.squeak.org/inbox/Collections-EG.908.mcz
>> > 
>> > ==================== Summary ====================
>> > 
>> > Name: Collections-EG.908
>> > Author: EG
>> > Time: 7 August 2020, 8:17:30.343164 pm
>> > UUID: d02855a8-a339-4f1d-bede-89a50f07892e
>> > Ancestors: Collections-eem.907
>> > 
>> > Changing  behavior of #peekBack to (correctly) return first element of underlying collection when stream position is 1.
>> > 
>> > =============== Diff against Collections-eem.907 ===============
>> > 
>> > Item was changed:
>> >   ----- Method: PositionableStream>>peekBack (in category 'accessing') -----
>> >   peekBack
>> >   	"Return the element at the previous position, without changing position.  Use indirect messages in case self is a StandardFileStream."
>> > - 
>> >   	| element |
>> >   	self position = 0 ifTrue: [self errorCantGoBack].
>> > + 	element := self back.
>> > - 	self position = 1 ifTrue: [self position: 0.  ^ nil].
>> > - 	self skip: -2.
>> > - 	element := self next.
>> >   	self skip: 1.
>> >   	^ element!
>> > 
>> > 
>>


More information about the Squeak-dev mailing list