[Pkg] The Trunk: Chronology-Tests-dtl.13.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 5 23:29:21 UTC 2019


David T. Lewis uploaded a new version of Chronology-Tests to project The Trunk:
http://source.squeak.org/trunk/Chronology-Tests-dtl.13.mcz

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

Name: Chronology-Tests-dtl.13
Author: dtl
Time: 5 January 2019, 6:25:04.438654 pm
UUID: a1330c2e-f7b9-47f8-8438-7baf8be6a4db
Ancestors: Chronology-Tests-dtl.12

Add tests to ensure that the Smalltalk epoch and Posix epoch are both treated as contants independent of time zone, and are separated by an agreed duration. Tests will fail in earlier versions of Chronology-Core, and pass now (after UTC updates).

By definition, the Smalltalk epoch is January 01, 1901 midnight with localTimeZone = Greenwhich Meridian (local offset = 0 hours). By convention, and as enforced in the VM, the number of elapsed seconds from Smalltalk epoch to Posix epoch is 2177452800.

Change method category from 'testing' to 'tests'.

Revert TimeStampTest>>testFromSeconds to its original version written by Brent Pinkney. The bodged up version of the test from KernelTests-dtl.235 is no longer required, and will fail after latest Chronology-Core with UTC updates.

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

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsDate (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsDate (in category 'testing') -----
  testAsDate
  	self assert: aDateAndTime asDate =   'January 1, 1901' asDate.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsDateAndTime (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsDateAndTime (in category 'testing') -----
  testAsDateAndTime
  	self assert: aDateAndTime asDateAndTime =  aDateAndTime
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsDuration (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsDuration (in category 'testing') -----
  testAsDuration
  	self assert: aDateAndTime asDuration =  0 asDuration
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsLocal (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsLocal (in category 'testing') -----
  testAsLocal
  	self assert: aDateAndTime asLocal =  aDateAndTime.
  	self assert: aDateAndTime asLocal = (aDateAndTime utcOffset: aDateAndTime class localOffset)
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsMonth (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsMonth (in category 'testing') -----
  testAsMonth
  	self assert: aDateAndTime asMonth = (Month month: 'January' year: 1901). 
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsNanoSeconds (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsNanoSeconds (in category 'testing') -----
  testAsNanoSeconds
  	self assert: aDateAndTime asNanoSeconds =  0 asDuration asNanoSeconds
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsSeconds (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsSeconds (in category 'testing') -----
  testAsSeconds
  	self assert: aDateAndTime asSeconds =  0 asDuration asSeconds
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsTime (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsTime (in category 'testing') -----
  testAsTime
  	self assert: aDateAndTime asTime =  Time midnight.
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsTimeStamp (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsTimeStamp (in category 'testing') -----
  testAsTimeStamp
  	self assert: aDateAndTime asTimeStamp =  TimeStamp new.
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsUTC (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsUTC (in category 'testing') -----
  testAsUTC
  	self assert: aDateAndTime asUTC =  aDateAndTime
            !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsWeek (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsWeek (in category 'testing') -----
  testAsWeek
  	self assert: aDateAndTime asWeek = (Week starting: '12-31-1900' asDate). 
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testAsYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testAsYear (in category 'testing') -----
  testAsYear
  	self assert: aDateAndTime asYear =   (Year starting: '01-01-1901' asDate). 
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testCurrent (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testCurrent (in category 'testing') -----
  testCurrent
  	self deny: aDateAndTime =  (DateAndTime current).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDateTime (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDateTime (in category 'testing') -----
  testDateTime
  	self assert: aDateAndTime =  (DateAndTime date: '01-01-1901' asDate time: '00:00:00' asTime)
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDay (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDay (in category 'testing') -----
  testDay
  	self assert: aDateAndTime day =   DateAndTime new day
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDayMonthYearDo (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDayMonthYearDo (in category 'testing') -----
  testDayMonthYearDo
  	|iterations|
  	iterations := 0.
  	self assert: (aDateAndTime dayMonthYearDo: [:eachDay :eachMonth :eachYear |  iterations := iterations + 1])  = 1.
  	self assert: (aDateAndTime dayMonthYearDo: [:eachDay :eachMonth :eachYear |  eachYear])  = 1901.
  	self assert: (aDateAndTime dayMonthYearDo: [:eachDay :eachMonth :eachYear |  eachMonth]) = 1.
  	self assert: (aDateAndTime dayMonthYearDo: [:eachDay :eachMonth :eachYear |  eachDay]) = 1.
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDayOfMonth (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDayOfMonth (in category 'testing') -----
  testDayOfMonth
  	self assert: aDateAndTime dayOfMonth  = 1.
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDayOfWeek (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDayOfWeek (in category 'testing') -----
  testDayOfWeek
  	self assert: aDateAndTime dayOfWeek  = 3.
  	self assert: aDateAndTime dayOfWeekAbbreviation = 'Tue'.
  	self assert: aDateAndTime dayOfWeekName = 'Tuesday'.
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDayOfYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDayOfYear (in category 'testing') -----
  testDayOfYear
  	self assert: aDateAndTime dayOfYear  = 1.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDaysInMonth (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDaysInMonth (in category 'testing') -----
  testDaysInMonth
  	self assert: aDateAndTime daysInMonth  = 31.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDaysInYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDaysInYear (in category 'testing') -----
  testDaysInYear
  	self assert: aDateAndTime daysInYear  = 365.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDaysLeftInYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDaysLeftInYear (in category 'testing') -----
  testDaysLeftInYear
  	self assert: aDateAndTime daysLeftInYear  = 364.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testDuration (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testDuration (in category 'testing') -----
  testDuration
  	self assert: aDateAndTime duration  = 0 asDuration.
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testEpoch (in category 'tests - epoch') -----
- ----- Method: DateAndTimeEpochTest>>testEpoch (in category 'testing') -----
  testEpoch
  	self assert: aDateAndTime =  '1901-01-01T00:00:00+00:00' asDateAndTime
  !

Item was added:
+ ----- Method: DateAndTimeEpochTest>>testEpochHappenedOnlyOnce (in category 'tests - epoch') -----
+ testEpochHappenedOnlyOnce
+ 	"The epoch is defined as January 01, 1901 midnight with localTimeZone = Greenwhich Meridian (local offset = 0 hours)"
+ 
+ 	| epochInMichigan epochInKyoto |
+ 	self assert: aDateAndTime =  '1901-01-01T00:00:00+00:00' asDateAndTime.
+ 	self assert: 0 equals: aDateAndTime asSeconds.
+ 	epochInMichigan := '1900-12-31T19:00:00-05:00' asDateAndTime.
+ 	self assert: 0 equals: epochInMichigan asSeconds.
+ 	self assert: aDateAndTime equals: epochInMichigan.
+ 	epochInKyoto := '1901-01-01T09:00:00+09:00' asDateAndTime.
+ 	self assert: 0 equals: epochInKyoto asSeconds.
+ 	self assert: aDateAndTime equals: epochInKyoto.
+ 
+ !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testFirstDayOfMonth (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testFirstDayOfMonth (in category 'testing') -----
  testFirstDayOfMonth
  	self assert: aDateAndTime firstDayOfMonth =   1
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testFromSeconds (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testFromSeconds (in category 'testing') -----
  testFromSeconds
  	self assert: aDateAndTime =  (DateAndTime fromSeconds: 0).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testFromString (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testFromString (in category 'testing') -----
  testFromString
  	self assert: aDateAndTime =  (DateAndTime fromString: ' 1901-01-01T00:00:00+00:00').
  	self assert: aDateAndTime =  (DateAndTime fromString: ' 1901-01-01T00:00:00').
  	self assert: aDateAndTime =  (DateAndTime fromString: ' 1901-01-01T00:00').
  	self assert: aDateAndTime =  (DateAndTime fromString: ' 1901-01-01T00:00:00+00:00').
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testHash (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testHash (in category 'testing') -----
  testHash
  	self assert: aDateAndTime hash =    DateAndTime new hash.
  	self assert: aDateAndTime hash =     112557138
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testHour (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testHour (in category 'testing') -----
  testHour
  	self assert: aDateAndTime hour =    aDateAndTime hour24.
  	self assert: aDateAndTime hour =    0.
  	self assert: aDateAndTime hour =    aDateAndTime hours
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testHour12 (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testHour12 (in category 'testing') -----
  testHour12
  	self assert: aDateAndTime hour12  = DateAndTime new hour12.
  	self assert: aDateAndTime hour12  = 12
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testIsLeapYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testIsLeapYear (in category 'testing') -----
  testIsLeapYear
  	self deny: aDateAndTime isLeapYear
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testJulianDayNumber (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testJulianDayNumber (in category 'testing') -----
  testJulianDayNumber
  	self assert: aDateAndTime =  (DateAndTime julianDayNumber: 2415386).
  	self assert: aDateAndTime julianDayNumber = 2415386.!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testLessThan (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testLessThan (in category 'testing') -----
  testLessThan
  	self assert: aDateAndTime  < (aDateAndTime + '1:00:00:00').
  	self assert: aDateAndTime + -1 < aDateAndTime.
  	!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMeridianAbbreviation (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMeridianAbbreviation (in category 'testing') -----
  testMeridianAbbreviation
  	self assert: aDateAndTime meridianAbbreviation = 'AM'.
  
  	!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMiddleOf (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMiddleOf (in category 'testing') -----
  testMiddleOf
  	self assert: (aDateAndTime middleOf: '2:00:00:00' asDuration) = 
  	 (Timespan starting: '12-31-1900' asDate duration: 2 days).
  	
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMidnight (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMidnight (in category 'testing') -----
  testMidnight
  	self assert: aDateAndTime midnight =  aDateAndTime
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMinus (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMinus (in category 'testing') -----
  testMinus
  	self assert: aDateAndTime - aDateAndTime =  '0:00:00:00' asDuration.
  	self assert: aDateAndTime - '0:00:00:00' asDuration = aDateAndTime.
  	self assert: aDateAndTime - aDuration =  (DateAndTime year: 1900 month: 12 day: 30 hour: 21 minute: 56 second: 55 nanoSecond: 999999995 offset: 0 hours ).
  	" I believe this Failure is a bug in the nanosecond part of (DateAndTime >> year:month:day:hour:minute:second:nanoSecond:offset:)" !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMinute (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMinute (in category 'testing') -----
  testMinute
  	self assert: aDateAndTime minute =  0
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMinutes (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMinutes (in category 'testing') -----
  testMinutes
  	self assert: aDateAndTime minutes = 0
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testMonth (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testMonth (in category 'testing') -----
  testMonth
  	self assert: aDateAndTime month  = 1.
  	self assert: aDateAndTime monthAbbreviation = 'Jan'.
  	self assert: aDateAndTime monthName = 'January'.
  	self assert: aDateAndTime monthIndex = 1.!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testNanoSecond (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testNanoSecond (in category 'testing') -----
  testNanoSecond
  	self assert: aDateAndTime nanoSecond =  0
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testNew (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testNew (in category 'testing') -----
  testNew
  	self assert: aDateAndTime =  (DateAndTime new).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testNoon (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testNoon (in category 'testing') -----
  testNoon
  	self assert: aDateAndTime noon = '1901-01-01T12:00:00+00:00' asDateAndTime!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testNow (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testNow (in category 'testing') -----
  testNow
  	self deny: aDateAndTime =  (DateAndTime now).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testOffset (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testOffset (in category 'testing') -----
  testOffset
  	self assert: aDateAndTime offset =  '0:00:00:00' asDuration.
       self assert: (aDateAndTime offset: '0:12:00:00') =  '1901-01-01T00:00:00+12:00' asDateAndTime!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testPlus (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testPlus (in category 'testing') -----
  testPlus
  	self assert: aDateAndTime + '0:00:00:00' = aDateAndTime.
  	self assert: aDateAndTime + 0 = aDateAndTime.
  	self assert: aDateAndTime + aDuration = (DateAndTime year: 1901 month: 1 day: 2 hour: 2 minute: 3 second: 4 nanoSecond: 5 offset: 0 hours )
  	" I believe this is a bug in the nanosecond part of (DateAndTime >> year:month:day:hour:minute:second:nanoSecond:offset:)"
  	
  !

Item was added:
+ ----- Method: DateAndTimeEpochTest>>testPosixEpoch (in category 'tests - epoch') -----
+ testPosixEpoch
+ 	"The Smalltalk epoch happened, by agreed convention, 2177452800 seconds
+ 	prior to the Posix epoch, which is defined as 1970-01-01T00:00:00+00:00.
+ 
+ 	Note for reference the corresponding implementation in the Unix VM:
+ 
+ 	/* Squeak epoch is Jan 1, 1901.  Unix epoch is Jan 1, 1970: 17 leap years
+ 	   and 52 non-leap years later than Squeak. */
+  	return unixTime + ((52*365UL + 17*366UL) * 24*60*60UL);"
+ 
+ 	| epochInMichigan epochInKyoto posixEpoch epochDelta |
+ 	epochDelta := 2177452800.
+ 	self assert: epochDelta equals: ((52*365 + (17*366)) * 24*60*60). "cross check against VM code"
+ 	posixEpoch := '1970-01-01T00:00:00+00:00' asDateAndTime.
+ 	self assert: epochDelta equals: posixEpoch asSeconds.
+ 	epochInMichigan := '1969-12-31T19:00:00-05:00' asDateAndTime.
+ 	self assert: epochDelta equals: epochInMichigan asSeconds.
+ 	self assert: posixEpoch equals: epochInMichigan.
+ 	epochInKyoto := '1970-01-01T09:00:00+09:00' asDateAndTime.
+ 	self assert: epochDelta equals: epochInKyoto asSeconds.
+ 	self assert: posixEpoch equals: epochInKyoto.
+ 
+ !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testPrintOn (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testPrintOn (in category 'testing') -----
  testPrintOn
  	| ref ws |
  	ref := '1901-01-01T00:00:00+00:00'.
  	ws := '' writeStream.
  	aDateAndTime printOn: ws.
  	self assert: ws contents = ref.
  	ref  := 'a TimeZone(ETZ)'.
  	ws := '' writeStream.
  	aTimeZone printOn:  ws.
  	self assert: ws contents = ref!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testSecond (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testSecond (in category 'testing') -----
  testSecond
  	self assert: aDateAndTime second =  0
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testSeconds (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testSeconds (in category 'testing') -----
  testSeconds
  	self assert: aDateAndTime seconds =  0
  
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testTicks (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testTicks (in category 'testing') -----
  testTicks
  	self assert: aDateAndTime ticks =  (DateAndTime julianDayNumber: 2415386) ticks.
  	self assert: aDateAndTime ticks = #(2415386 0 0)!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testTicksOffset (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testTicksOffset (in category 'testing') -----
  testTicksOffset
  	self assert: aDateAndTime =  (aDateAndTime ticks:  #(2415386 0 0) offset: DateAndTime localOffset).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testTo (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testTo (in category 'testing') -----
  testTo
  	self assert: (aDateAndTime to: aDateAndTime) = (DateAndTime new to: DateAndTime new) 
  	"MessageNotUnderstood: UndefinedObject>>starting:ending:  where UndefinedObject is Timespan "!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testToBy (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testToBy (in category 'testing') -----
  testToBy
  	self assert: (aDateAndTime to: aDateAndTime + 10 days by: 5 days) = 
  				(DateAndTime new to: DateAndTime new + 10 days by: 5 days ) 
  	"MessageNotUnderstood: UndefinedObject>>starting:ending:  where UndefinedObject is Timespan "!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testToByDo (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testToByDo (in category 'testing') -----
  testToByDo
  	"self assert: (aDateAndTime to: aDateAndTime + 10 days by: 5 days do: []) =  "
  	"MessageNotUnderstood: UndefinedObject>>starting:ending:  where UndefinedObject is Timespan "!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testToday (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testToday (in category 'testing') -----
  testToday
  	self deny: aDateAndTime =  (DateAndTime today).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testTommorrow (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testTommorrow (in category 'testing') -----
  testTommorrow
  	self assert: (DateAndTime today + 24 hours) =  (DateAndTime tomorrow).
  	self deny: aDateAndTime =  (DateAndTime tomorrow).
       "MessageNotUnderstood: Date class>>starting:"!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testUtcOffset (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testUtcOffset (in category 'testing') -----
  testUtcOffset
       self assert: (aDateAndTime utcOffset: '0:12:00:00') =  '1901-01-01T12:00:00+12:00' asDateAndTime!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYear (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYear (in category 'testing') -----
  testYear
  	self assert: aDateAndTime year = 1901.
  
  	!

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYearDay (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYearDay (in category 'testing') -----
  testYearDay
  	self assert: aDateAndTime =  (DateAndTime year: 1901 day: 1).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYearDayHourMinuteSecond (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYearDayHourMinuteSecond (in category 'testing') -----
  testYearDayHourMinuteSecond
  	self assert: aDateAndTime =  (DateAndTime year: 1901 day: 1 hour: 0 minute: 0 second: 0).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYearMonthDay (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYearMonthDay (in category 'testing') -----
  testYearMonthDay
  	self assert: aDateAndTime =  (DateAndTime year: 1901 month: 1 day: 1).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYearMonthDayHourMinuteSecond (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYearMonthDayHourMinuteSecond (in category 'testing') -----
  testYearMonthDayHourMinuteSecond
  	self assert: aDateAndTime =  (DateAndTime year: 1901 month: 1 day: 1 hour: 0 minute: 0 second: 0).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYearMonthDayHourMinuteSecondNanosSecondOffset (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYearMonthDayHourMinuteSecondNanosSecondOffset (in category 'testing') -----
  testYearMonthDayHourMinuteSecondNanosSecondOffset
  	self assert: aDateAndTime =  (DateAndTime year: 1901 month: 1 day: 1 hour: 0 minute: 0 second: 0 nanoSecond: 0 offset:0 hours ).
  	self assert: ((DateAndTime year: 1 month: 1 day: 1 hour: 0 minute: 0 second: 0 nanoSecond: 0 offset: 0 hours ) +
  				(Duration days: 1 hours: 2 minutes: 3 seconds: 4  nanoSeconds: 5) ) =  	
  				(DateAndTime year: 1 month: 1 day: 2 hour: 2 minute: 3 second: 4 nanoSecond: 5 offset: 0 hours ) 
  	" I believe this is a bug in the nanosecond part of (DateAndTime >> year:month:day:hour:minute:second:nanoSecond:offset:)"" I believe this is a bug in the nanosecond part of (DateAndTime >> year:month:day:hour:minute:second:nanoSecond:offset:)"   
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testYesterday (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testYesterday (in category 'testing') -----
  testYesterday
  	self deny: aDateAndTime =  (DateAndTime yesterday).
  !

Item was changed:
+ ----- Method: DateAndTimeEpochTest>>testtimeZone (in category 'tests') -----
- ----- Method: DateAndTimeEpochTest>>testtimeZone (in category 'testing') -----
  testtimeZone
  	self assert: aDateAndTime timeZoneName	= 'Universal Time'.
  	self assert: aDateAndTime timeZoneAbbreviation	=  'UTC'
  
  !

Item was added:
+ ----- Method: DateAndTimeTest>>testAsSecondsIsTheSameInAnyTimezone (in category 'Tests') -----
+ testAsSecondsIsTheSameInAnyTimezone
+ 	"Using the Posix epoch as a convenient reference, verify that this point
+ 	in time is represented with the same magnitude in any local time zone."
+ 
+ 	| posixEpochInVariousLocations |
+ 	posixEpochInVariousLocations := {
+ 		'1970-01-01T00:00:00+00:00' asDateAndTime .
+ 		'1970-01-01T01:00:00+01:00' asDateAndTime .
+ 		'1970-01-01T02:00:00+02:00' asDateAndTime .
+ 		'1970-01-01T12:00:00+12:00' asDateAndTime .
+ 		'1969-12-31T23:00:00-01:00' asDateAndTime .
+ 		'1969-12-31T22:00:00-02:00' asDateAndTime .
+ 		'1969-12-31T12:00:00-12:00' asDateAndTime
+ 	}.
+ 	posixEpochInVariousLocations do: [ :e |
+ 		self assert: 2177452800 equals: e asSeconds ].
+ !

Item was changed:
  ----- Method: TimeStampTest>>testFromSeconds (in category 'Tests') -----
  testFromSeconds
- 	"A time stamp from seconds is created in the local time zone, so offset may
- 	be non-zero. The test timestamp has offset zero (implying UTC). Comparison
- 	to the test timestamp should succeed if and only if both time stamps are
- 	created relative to the same time zone (UTC)."
  
+ 	self
+ 		assert: (self timestampClass fromSeconds: 3124958100) = timestamp.!
- 	| local utc |
- 	local := self timestampClass fromSeconds: 3124958100.
- 	local offset = Duration zero
- 		ifTrue: [self assert: local = timestamp.]
- 		ifFalse: [self deny: local = timestamp.].
- 	utc := local offset: Duration zero.
- 	self assert: utc = timestamp.!



More information about the Packages mailing list