[squeak-dev] The Trunk: CollectionsTests-fbs.207.mcz

Bob Arning arning315 at comcast.net
Tue Nov 5 11:52:34 UTC 2013


Well, testThatByteArrayLongAtDoesPreserveSignAndDoesNotSignalAnError

since the original bug was that

(ByteArray new: 4) longAt: 1 put: -1 bigEndian: true

resulted in a walkback. Although I do wonder if we are not crossing over 
into the realm of too much information.

Cheers,
Bob

On 11/5/13 6:33 AM, Nicolas Cellier wrote:
>     | ba value |
>     ba := ByteArray new: 4.
>     value := -1.
>     ba longAt: 1 put: value bigEndian: true.
>     self assert: (ba longAt: 1 bigEndian: true) = (ba longAt: 1 
> bigEndian: false).
>
> Thanks Bob, that makes sense
> but intention can't be revealed without this context, so the code is 
> not good enough.
>
> At least, it should be named something like 
> testThatByteArrayLongAtDoesPreserveSign.
>
>
>
>
>
> 2013/11/5 Bob Arning <arning315 at comcast.net 
> <mailto:arning315 at comcast.net>>
>
>     Just a guess, but I think the test was written to show that a
>     particular bug had been fixed. Endian wasn't an issue here -
>     negative numbers were.
>
>     http://lists.squeakfoundation.org/pipermail/squeak-dev/2003-August/063928.html
>
>     Cheers,
>     Bob
>
>     On 11/5/13 3:24 AM, Frank Shearar wrote:
>>     Do I understand correctly that this test just shows that you can
>>     use a ByteArray to store ints in a endian aware way? If so, why
>>     did Andreas use -1, which wouldn't show an endian reversal?
>>
>>     frank
>>
>>     On 04 Nov 2013, at 22:04, Nicolas Cellier
>>     <nicolas.cellier.aka.nice at gmail.com
>>     <mailto:nicolas.cellier.aka.nice at gmail.com>> wrote:
>>
>>>     Beside the form, isn't -1 a palindrome? (if you reverse
>>>     bit/bytes you still get -1, so it's a poor value)
>>>
>>>
>>>     2013/11/4 Frank Shearar <frank.shearar at gmail.com
>>>     <mailto:frank.shearar at gmail.com>>
>>>
>>>         I really hate just having the lines under test just lying
>>>         around like this:
>>>
>>>         testByteArrayLongAt
>>>             | ba value |
>>>             ba := ByteArray new: 4.
>>>             value := -1.
>>>             ba longAt: 1 put: value bigEndian: true.
>>>             self assert: (ba longAt: 1 bigEndian: true) = value.
>>>             ba longAt: 1 put: value bigEndian: false.
>>>             self assert: (ba longAt: 1 bigEndian: false) = value.
>>>
>>>         I mean, it'd get the job done. Any better ideas?
>>>
>>>         frank
>>>
>>>         On 4 November 2013 21:51, Nicolas Cellier
>>>         <nicolas.cellier.aka.nice at gmail.com
>>>         <mailto:nicolas.cellier.aka.nice at gmail.com>> wrote:
>>>         > It does not cost to ask ;)
>>>         > If you're in the mood and if our server is too, go for it...
>>>         >
>>>         >
>>>         > 2013/11/4 Frank Shearar <frank.shearar at gmail.com
>>>         <mailto:frank.shearar at gmail.com>>
>>>         >>
>>>         >> Are you hinting that I should now fix the things post
>>>         move? :)
>>>         >>
>>>         >> frank
>>>         >>
>>>         >> On 4 November 2013 21:15, Nicolas Cellier
>>>         >> <nicolas.cellier.aka.nice at gmail.com
>>>         <mailto:nicolas.cellier.aka.nice at gmail.com>> wrote:
>>>         >> > Sure! I said while at it ;)
>>>         >> >
>>>         >> >
>>>         >> > 2013/11/4 Frank Shearar <frank.shearar at gmail.com
>>>         <mailto:frank.shearar at gmail.com>>
>>>         >> >>
>>>         >> >> Yes. #shouldnt:raise: is evil when you catch Error.
>>>         >> >>
>>>         >> >> I deliberately didn't do that here so that reviewers
>>>         could see that I
>>>         >> >> moved methods, not added some random new test.
>>>         >> >>
>>>         >> >> frank
>>>         >> >>
>>>         >> >> On 4 November 2013 20:56, Nicolas Cellier
>>>         >> >> <nicolas.cellier.aka.nice at gmail.com
>>>         <mailto:nicolas.cellier.aka.nice at gmail.com>> wrote:
>>>         >> >> > While at it, there were a discussion in Pharo about
>>>         shouldnt: []
>>>         >> >> > raise:
>>>         >> >> > Error, and it's generally considered a poor test
>>>         >> >> > - practically nothing should raise Error, unless in
>>>         the few cases
>>>         >> >> > when
>>>         >> >> > you
>>>         >> >> > create a block that should:raise:
>>>         >> >> >   so should:raise: is usefull, but shouldnt:raise:
>>>         is generally
>>>         >> >> > useless
>>>         >> >> >   (unless maybe if you are testing an Error
>>>         inhibition mechanism with
>>>         >> >> > a
>>>         >> >> > block that shouldNormally:raise: Error)
>>>         >> >> > - if ever, it effectively raises an Error, you have
>>>         no information
>>>         >> >> > why
>>>         >> >> > I fully agree with this.
>>>         >> >> >
>>>         >> >> >
>>>         >> >> > 2013/11/4 <commits at source.squeak.org
>>>         <mailto:commits at source.squeak.org>>
>>>         >> >> >
>>>         >> >> >> Frank Shearar uploaded a new version of
>>>         CollectionsTests to project
>>>         >> >> >> The
>>>         >> >> >> Trunk:
>>>         >> >> >>
>>>         http://source.squeak.org/trunk/CollectionsTests-fbs.207.mcz
>>>         >> >> >>
>>>         >> >> >> ==================== Summary ====================
>>>         >> >> >>
>>>         >> >> >> Name: CollectionsTests-fbs.207
>>>         >> >> >> Author: fbs
>>>         >> >> >> Time: 4 November 2013, 6:31:01.83 pm
>>>         >> >> >> UUID: 4057d67b-5969-8b41-85d1-43fd39da4bb1
>>>         >> >> >> Ancestors: CollectionsTests-cmm.206
>>>         >> >> >>
>>>         >> >> >> Move collection tests where they belong.
>>>         >> >> >>
>>>         >> >> >> =============== Diff against CollectionsTests-cmm.206
>>>         >> >> >> ===============
>>>         >> >> >>
>>>         >> >> >> Item was added:
>>>         >> >> >> + ----- Method: ByteArrayTest>>testByteArrayLongAt
>>>         (in category 'as
>>>         >> >> >> yet
>>>         >> >> >> unclassified') -----
>>>         >> >> >> + testByteArrayLongAt
>>>         >> >> >> +       | ba value |
>>>         >> >> >> +       ba := ByteArray new: 4.
>>>         >> >> >> + value := -1.
>>>         >> >> >> + self shouldnt:[ba longAt: 1 put: value bigEndian:
>>>         true]
>>>         >> >> >> raise:
>>>         >> >> >> Error.
>>>         >> >> >> + self assert: (ba longAt: 1 bigEndian: true) = value.
>>>         >> >> >> + self shouldnt:[ba longAt: 1 put: value bigEndian:
>>>         false]
>>>         >> >> >> raise:
>>>         >> >> >> Error.
>>>         >> >> >> + self assert: (ba longAt: 1 bigEndian: false) =
>>>         value.!
>>>         >> >> >>
>>>         >> >> >> Item was added:
>>>         >> >> >> + ----- Method:
>>>         DictionaryTest>>testIntegrityOfDictionaries (in
>>>         >> >> >> category
>>>         >> >> >> 'integrity tests') -----
>>>         >> >> >> + testIntegrityOfDictionaries
>>>         >> >> >> +       #(
>>>         >> >> >> +     Dictionary
>>>         >> >> >> +     IdentityDictionary
>>>         >> >> >> +     SystemDictionary
>>>         >> >> >> +     LiteralDictionary
>>>         >> >> >> +     PluggableDictionary
>>>         >> >> >> +     WeakValueDictionary) do: [ :dictionaryClassName |
>>>         >> >> >> +             Smalltalk at: dictionaryClassName
>>>         ifPresent:
>>>         >> >> >> [
>>>         >> >> >> :dictionaryClass |
>>>         >> >> >> +                     dictionaryClass allInstancesDo: [
>>>         >> >> >> :dictionary |
>>>         >> >> >> +                             dictionary
>>>         keysAndValuesDo:
>>>         >> >> >> [
>>>         >> >> >> :key
>>>         >> >> >> :value |
>>>         >> >> >> + self assert:
>>>         >> >> >> (dictionary
>>>         >> >> >> at: key) == value ].
>>>         >> >> >> +                             dictionary array
>>>         >> >> >> doWithIndex: [
>>>         >> >> >> :association :index |
>>>         >> >> >> + association ifNotNil: [
>>>         >> >> >> +  self assert:
>>>         >> >> >> (dictionary
>>>         >> >> >> scanFor: association key) = index ] ] ] ] ]!
>>>         >> >> >>
>>>         >> >> >> Item was added:
>>>         >> >> >> + ----- Method:
>>>         DictionaryTest>>testMethodDictionaries (in category
>>>         >> >> >> 'integrity tests') -----
>>>         >> >> >> + testMethodDictionaries
>>>         >> >> >> + MethodDictionary allInstancesDo: [ :dictionary |
>>>         >> >> >> +     dictionary keysAndValuesDo: [ :key :value |
>>>         >> >> >> +             self assert: (dictionary at: key) ==
>>>         value
>>>         >> >> >> ].
>>>         >> >> >> +     1 to: dictionary basicSize do: [ :index |
>>>         >> >> >> +             (dictionary basicAt: index)
>>>         >> >> >> +                     ifNil: [ self assert: (dictionary
>>>         >> >> >> array
>>>         >> >> >> at: index) isNil ]
>>>         >> >> >> +                     ifNotNil: [ :key |
>>>         >> >> >> +                             self assert: (dictionary
>>>         >> >> >> scanFor:
>>>         >> >> >> key) = index ] ] ]!
>>>         >> >> >>
>>>         >> >> >> Item was added:
>>>         >> >> >> + ----- Method: HashedCollectionTest>>testCapacity
>>>         (in category
>>>         >> >> >> 'test -
>>>         >> >> >> integrity') -----
>>>         >> >> >> + testCapacity
>>>         >> >> >> +
>>>         >> >> >> +       | inconsistentCollections |
>>>         >> >> >> + inconsistentCollections := HashedCollection
>>>         allSubInstances
>>>         >> >> >> reject: [ :each |
>>>         >> >> >> +     each class == MethodDictionary
>>>         "MethodDictionary is
>>>         >> >> >> the
>>>         >> >> >> only HashedCollection which doesn't have prime
>>>         array size"
>>>         >> >> >> +             ifTrue: [ each capacity isPowerOfTwo ]
>>>         >> >> >> +             ifFalse: [ each capacity isPrime ] ].
>>>         >> >> >> + self assert: inconsistentCollections isEmpty!
>>>         >> >> >>
>>>         >> >> >> Item was added:
>>>         >> >> >> + ----- Method:
>>>         ReadWriteStreamTest>>testReadWriteStreamNextNBug (in
>>>         >> >> >> category 'tests') -----
>>>         >> >> >> + testReadWriteStreamNextNBug
>>>         >> >> >> +       | aStream |
>>>         >> >> >> + aStream := ReadWriteStream on: String new.
>>>         >> >> >> + aStream nextPutAll: 'Hello World'.
>>>         >> >> >> + self shouldnt:[aStream next: 5] raise: Error.!
>>>         >> >> >>
>>>         >> >> >>
>>>         >> >> >
>>>         >> >> >
>>>         >> >> >
>>>         >> >> >
>>>         >> >>
>>>         >> >
>>>         >> >
>>>         >> >
>>>         >> >
>>>         >>
>>>         >
>>>         >
>>>         >
>>>         >
>>>
>>>
>>>
>>
>>
>
>
>
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131105/6865f875/attachment.htm


More information about the Squeak-dev mailing list