[Seaside] Grease testSeconds is failing in Squeak 4.3 and Pharo
philippe.marschall at gmail.com
Tue Feb 21 08:09:00 UTC 2012
2012/2/20 David T. Lewis <lewis at mail.msen.com>:
> On Mon, Feb 20, 2012 at 06:51:24AM +0100, Philippe Marschall wrote:
>> 2012/2/20 nicolas cellier <nicolas.cellier.aka.nice at gmail.com>:
>> > In all Smalltalk, (2/1) is automatically reduced to a canonical Integer
>> > representation.
>> > Nonetheless it is also a fraction.
>> > 1) Since all Integer are special kind of fraction and are polymorphic to
>> > fraction in Squeak and Pharo (responds to numerator, denominator, fractionPart
>> > etc...)
>> > 2) and since doing so both simplify and speed up some arithmetic code,
>> > Squeak and Pharo (2 isFraction) now answer true.
>> > One consequence is a failing Grease test (GRPlatformTest>>testSeconds)
>> > ?? ??self deny: Time now seconds isFraction.
>> > The purpose is to test that no fractional seconds get returned.
>> > I suggest rewriting:
>> > ?? ??self deny: (Time now seconds isKindOf: Fraction).
>> > which should be fairly portable
>> 2 isFraction. -> true
>> (2 / 1) isFraction. -> true
>> 2s0 isFraction. -> false
>> 2s0 = 2. -> true
>> 2s0 = (2 / 1). -> true
>> makes total sense
> But 2s0 is a whole number, so perhaps it should be treated like an
> integer in this context? If so, then:
> 2 denominator = 1. ==> true
> (2 / 1) denominator = 1. ==> true
> 2s0 denominator = 1. ==> true
> 2s0 = 2. ==> true
> 2s0 = (2 / 1). ==> true
If denominator = 1 is portable I would prefer this to isKindOf: Fraction.
More information about the seaside