The Inbox: Chronology-Tests-dtl.15.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Chronology-Tests-dtl.15.mcz

commits-2
David T. Lewis uploaded a new version of Chronology-Tests to project The Inbox:
http://source.squeak.org/inbox/Chronology-Tests-dtl.15.mcz

==================== Summary ====================

Name: Chronology-Tests-dtl.15
Author: dtl
Time: 12 January 2019, 10:52:06.856687 am
UUID: 93d70832-de59-4f2a-8516-b98262941370
Ancestors: Chronology-Tests-dtl.14

Add testGetSeconds to verify that getSeconds represents whole seconds in the local time zone. For a given instance of DateAndTime, changing the time zone offset changes the local representation, but does not affect magnitude (time since a defiined epoch). Therefore, if time zone offset changes, the asSeconds value should not change, and the getSeconds value should change to reflect local timezone.

=============== Diff against Chronology-Tests-dtl.14 ===============

Item was added:
+ ----- Method: DateAndTimeTest>>testGetSeconds (in category 'Tests') -----
+ testGetSeconds
+ "Verify that getSeconds represents whole seconds in the local time zone. For
+ a given instance of DateAndTime, changing the time zone offset changes the
+ local representation, but does not affect magnitude (time since a defiined
+ epoch). Therefore, if time zone offset changes, the asSeconds value should
+ not change, and the getSeconds value should change to reflect local timezone."
+
+ | dt s1 id stSeconds seconds1 seconds2 |
+ s1 :=  '2019-01-12T10:07:05.18743-05:00'.
+ dt := s1 asDateAndTime.
+ self assert: 18000 seconds negated equals: dt offset.
+ seconds1 := dt getSeconds.
+ self assert: 36425 equals: seconds1.
+ id := dt identityHash.
+ stSeconds := dt asSeconds.
+ dt makeUTC. "make the receiver's timezone GMT, do not change magnitude"
+ self assert: id equals: dt identityHash. "same object, not a copy"
+ self assert: '2019-01-12T15:07:05.18743+00:00' equals: dt asString.
+ self assert: stSeconds equals: dt asSeconds. "magnitude unchanged"
+ self assert: '2019-01-12T10:07:05.18743-05:00' asDateAndTime equals: dt. "still equal"
+ seconds2 := dt getSeconds.
+ self deny: seconds1 equals: seconds2.
+ self assert: 54425 equals: seconds2.
+
+ !


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Chronology-Tests-dtl.15.mcz

Chris Muller-3
That is not a reason to not cache #getSeconds.  Invalidation is a
standard feature of any cache.  For the case you mention, the app
would simply invalidate its cache, after it had benefitted from
billions and billions of accesses to it...  :)

On Sat, Jan 12, 2019 at 9:52 AM <[hidden email]> wrote:

>
> David T. Lewis uploaded a new version of Chronology-Tests to project The Inbox:
> http://source.squeak.org/inbox/Chronology-Tests-dtl.15.mcz
>
> ==================== Summary ====================
>
> Name: Chronology-Tests-dtl.15
> Author: dtl
> Time: 12 January 2019, 10:52:06.856687 am
> UUID: 93d70832-de59-4f2a-8516-b98262941370
> Ancestors: Chronology-Tests-dtl.14
>
> Add testGetSeconds to verify that getSeconds represents whole seconds in the local time zone. For a given instance of DateAndTime, changing the time zone offset changes the local representation, but does not affect magnitude (time since a defiined epoch). Therefore, if time zone offset changes, the asSeconds value should not change, and the getSeconds value should change to reflect local timezone.
>
> =============== Diff against Chronology-Tests-dtl.14 ===============
>
> Item was added:
> + ----- Method: DateAndTimeTest>>testGetSeconds (in category 'Tests') -----
> + testGetSeconds
> +       "Verify that getSeconds represents whole seconds in the local time zone. For
> +       a given instance of DateAndTime, changing the time zone offset changes the
> +       local representation, but does not affect magnitude (time since a defiined
> +       epoch). Therefore, if time zone offset changes, the asSeconds value should
> +       not change, and the getSeconds value should change to reflect local timezone."
> +
> +       | dt s1 id stSeconds seconds1 seconds2 |
> +       s1 :=  '2019-01-12T10:07:05.18743-05:00'.
> +       dt := s1 asDateAndTime.
> +       self assert: 18000 seconds negated equals: dt offset.
> +       seconds1 := dt getSeconds.
> +       self assert: 36425 equals: seconds1.
> +       id := dt identityHash.
> +       stSeconds := dt asSeconds.
> +       dt makeUTC. "make the receiver's timezone GMT, do not change magnitude"
> +       self assert: id equals: dt identityHash. "same object, not a copy"
> +       self assert: '2019-01-12T15:07:05.18743+00:00' equals: dt asString.
> +       self assert: stSeconds equals: dt asSeconds. "magnitude unchanged"
> +       self assert: '2019-01-12T10:07:05.18743-05:00' asDateAndTime equals: dt. "still equal"
> +       seconds2 := dt getSeconds.
> +       self deny: seconds1 equals: seconds2.
> +       self assert: 54425 equals: seconds2.
> +
> + !
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Chronology-Tests-dtl.15.mcz

David T. Lewis
The test is not intended to advocate for or against caching #getSeconds.
It provides coverage for expected behavior. So if you did decide to cache
#getSeconds, then you would still want this test to pass.

Dave

On Wed, Jan 16, 2019 at 08:55:32PM -0600, Chris Muller wrote:

> That is not a reason to not cache #getSeconds.  Invalidation is a
> standard feature of any cache.  For the case you mention, the app
> would simply invalidate its cache, after it had benefitted from
> billions and billions of accesses to it...  :)
>
> On Sat, Jan 12, 2019 at 9:52 AM <[hidden email]> wrote:
> >
> > David T. Lewis uploaded a new version of Chronology-Tests to project The Inbox:
> > http://source.squeak.org/inbox/Chronology-Tests-dtl.15.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Chronology-Tests-dtl.15
> > Author: dtl
> > Time: 12 January 2019, 10:52:06.856687 am
> > UUID: 93d70832-de59-4f2a-8516-b98262941370
> > Ancestors: Chronology-Tests-dtl.14
> >
> > Add testGetSeconds to verify that getSeconds represents whole seconds in the local time zone. For a given instance of DateAndTime, changing the time zone offset changes the local representation, but does not affect magnitude (time since a defiined epoch). Therefore, if time zone offset changes, the asSeconds value should not change, and the getSeconds value should change to reflect local timezone.
> >
> > =============== Diff against Chronology-Tests-dtl.14 ===============
> >
> > Item was added:
> > + ----- Method: DateAndTimeTest>>testGetSeconds (in category 'Tests') -----
> > + testGetSeconds
> > +       "Verify that getSeconds represents whole seconds in the local time zone. For
> > +       a given instance of DateAndTime, changing the time zone offset changes the
> > +       local representation, but does not affect magnitude (time since a defiined
> > +       epoch). Therefore, if time zone offset changes, the asSeconds value should
> > +       not change, and the getSeconds value should change to reflect local timezone."
> > +
> > +       | dt s1 id stSeconds seconds1 seconds2 |
> > +       s1 :=  '2019-01-12T10:07:05.18743-05:00'.
> > +       dt := s1 asDateAndTime.
> > +       self assert: 18000 seconds negated equals: dt offset.
> > +       seconds1 := dt getSeconds.
> > +       self assert: 36425 equals: seconds1.
> > +       id := dt identityHash.
> > +       stSeconds := dt asSeconds.
> > +       dt makeUTC. "make the receiver's timezone GMT, do not change magnitude"
> > +       self assert: id equals: dt identityHash. "same object, not a copy"
> > +       self assert: '2019-01-12T15:07:05.18743+00:00' equals: dt asString.
> > +       self assert: stSeconds equals: dt asSeconds. "magnitude unchanged"
> > +       self assert: '2019-01-12T10:07:05.18743-05:00' asDateAndTime equals: dt. "still equal"
> > +       seconds2 := dt getSeconds.
> > +       self deny: seconds1 equals: seconds2.
> > +       self assert: 54425 equals: seconds2.
> > +
> > + !
> >
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Chronology-Tests-dtl.15.mcz

Chris Muller-3
On Wed, Jan 16, 2019 at 10:13 PM David T. Lewis <[hidden email]> wrote:
>
> The test is not intended to advocate for or against caching #getSeconds.
> It provides coverage for expected behavior. So if you did decide to cache
> #getSeconds, then you would still want this test to pass.

I was referring to your your reference from the other thread:
____
"I also added a test (Chronology-Tests-dtl.15 in the inbox) that illustrates
the hazards of caching the getSeconds value."
____

...which easily reads as opposition to the idea of caching it.

Best,
  Chris

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Chronology-Tests-dtl.15.mcz

David T. Lewis
Busted ;-)

Dave


> On Wed, Jan 16, 2019 at 10:13 PM David T. Lewis <[hidden email]>
> wrote:
>>
>> The test is not intended to advocate for or against caching #getSeconds.
>> It provides coverage for expected behavior. So if you did decide to
>> cache
>> #getSeconds, then you would still want this test to pass.
>
> I was referring to your your reference from the other thread:
> ____
> "I also added a test (Chronology-Tests-dtl.15 in the inbox) that
> illustrates
> the hazards of caching the getSeconds value."
> ____
>
> ...which easily reads as opposition to the idea of caching it.
>
> Best,
>   Chris
>
>