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. + + ! |
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. > + > + ! > > |
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. > > + > > + ! > > > > > |
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 |
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 > > |
Free forum by Nabble | Edit this page |