The Trunk: Chronology-Tests-pre.16.mcz

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

The Trunk: Chronology-Tests-pre.16.mcz

commits-2
Patrick Rein uploaded a new version of Chronology-Tests to project The Trunk:
http://source.squeak.org/trunk/Chronology-Tests-pre.16.mcz

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

Name: Chronology-Tests-pre.16
Author: pre
Time: 23 January 2019, 4:07:30.393474 pm
UUID: 0802f65d-2dc0-6e44-b8ec-b8b6428edacb
Ancestors: Chronology-Tests-ul.15, Chronology-Tests-dtl.15

- adds the DateAndTimeTest>>#testGetSeconds test from dtl
- adds a test for Duration>>#wait
- updates an old test to match the new API #testNew
- recategorizes the tests into the tests category

=============== Diff against Chronology-Tests-ul.15 ===============

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.
+
+ !

Item was changed:
+ ----- Method: DurationTest>>classToBeTested (in category 'coverage') -----
- ----- Method: DurationTest>>classToBeTested (in category 'Coverage') -----
  classToBeTested
 
  ^ Duration
 
 
  !

Item was changed:
+ ----- Method: DurationTest>>selectorsToBeIgnored (in category 'coverage') -----
- ----- Method: DurationTest>>selectorsToBeIgnored (in category 'Coverage') -----
  selectorsToBeIgnored
 
  | private |
  private := #( #printOn: ).
 
  ^ super selectorsToBeIgnored, private
  !

Item was changed:
+ ----- Method: DurationTest>>testAbs (in category 'tests') -----
- ----- Method: DurationTest>>testAbs (in category 'testing') -----
  testAbs
  self assert: aDuration abs = aDuration.
  self assert: (Duration nanoSeconds: -5)  abs =  (Duration nanoSeconds: 5).
  !

Item was changed:
+ ----- Method: DurationTest>>testAgo (in category 'tests') -----
- ----- Method: DurationTest>>testAgo (in category 'testing') -----
  testAgo
  self assert: ((10 minutes ago) isMemberOf: DateAndTime).
  self assert: ((10 weeks ago) < DateAndTime now).
  self assert: ((-50 seconds ago) > DateAndTime now).
  self assert: ((10 hours ago) < DateAndTime now).
  self assert: (0 seconds ago - DateAndTime now < 1 second).!

Item was changed:
+ ----- Method: DurationTest>>testAsDelay (in category 'tests') -----
- ----- Method: DurationTest>>testAsDelay (in category 'testing') -----
  testAsDelay
  self deny: aDuration asDelay =   aDuration.
  "want to come up with a more meaningful test"
  !

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

Item was changed:
+ ----- Method: DurationTest>>testAsMilliSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testAsMilliSeconds (in category 'testing') -----
  testAsMilliSeconds
  self assert: (Duration nanoSeconds: 1000000) asMilliSeconds = 1.
  self assert: (Duration seconds: 1) asMilliSeconds = 1000.
  self assert: (Duration nanoSeconds: 1000000) asMilliSeconds = 1.
  self assert: (Duration nanoSeconds: 1000000) asMilliSeconds = 1.
  self assert: aDuration asMilliSeconds = 93784000.
  self assert: (Duration milliSeconds: 3775) asSeconds = 3.
  self assert: (Duration milliSeconds: 3775) nanoSeconds = 775000000!

Item was changed:
+ ----- Method: DurationTest>>testAsNanoSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testAsNanoSeconds (in category 'testing') -----
  testAsNanoSeconds
  self assert: (Duration nanoSeconds: 1)  asNanoSeconds = 1.
  self assert: (Duration seconds: 1)  asNanoSeconds = 1000000000.
  self assert: aDuration   asNanoSeconds = 93784000000005.!

Item was changed:
+ ----- Method: DurationTest>>testAsSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testAsSeconds (in category 'testing') -----
  testAsSeconds
  self assert: (Duration nanoSeconds: 1000000000)  asSeconds = 1.
  self assert: (Duration seconds: 1)  asSeconds = 1.
  self assert: aDuration   asSeconds = 93784.!

Item was changed:
+ ----- Method: DurationTest>>testComparing (in category 'tests') -----
- ----- Method: DurationTest>>testComparing (in category 'Tests') -----
  testComparing
 
  | d1 d2 d3 |
  d1 := Duration seconds: 10 nanoSeconds: 1.
  d2 := Duration seconds: 10 nanoSeconds: 1.
  d3 := Duration seconds: 10 nanoSeconds: 2.
 
  self
  assert: (d1 = d1);
  assert: (d1 = d2);
  deny: (d1 = d3);
  assert: (d1 < d3)
  !

Item was changed:
+ ----- Method: DurationTest>>testDays (in category 'tests') -----
- ----- Method: DurationTest>>testDays (in category 'testing') -----
  testDays
  self assert: aDuration   days = 1.
  self assert: (Duration   days: 1) days= 1. !

Item was changed:
+ ----- Method: DurationTest>>testDivide (in category 'tests') -----
- ----- Method: DurationTest>>testDivide (in category 'testing') -----
  testDivide
  self assert: aDuration / aDuration = 1.
  self assert: aDuration / 2 = (Duration days: 0 hours: 13 minutes: 1 seconds: 32 nanoSeconds: 2).
  self assert: aDuration / (1/2) = (Duration days: 2 hours: 4 minutes: 6 seconds: 8 nanoSeconds: 10).
  !

Item was changed:
+ ----- Method: DurationTest>>testFromNow (in category 'tests') -----
- ----- Method: DurationTest>>testFromNow (in category 'testing') -----
  testFromNow
 
  self assert: ((10 seconds fromNow) > DateAndTime now).
  self assert: ((0 days fromNow - DateAndTime now) < 1 second).
  self assert: ((-1 weeks fromNow) < DateAndTime now).
  self assert: ((1000 milliSeconds fromNow) isMemberOf: DateAndTime).
  self assert: ((250 hours fromNow) > DateAndTime now).
  self assert: ((-50 minutes fromNow) < DateAndTime now).!

Item was changed:
+ ----- Method: DurationTest>>testFromString (in category 'tests') -----
- ----- Method: DurationTest>>testFromString (in category 'testing') -----
  testFromString
  self assert: aDuration = (Duration fromString: '1:02:03:04.000000005').
  !

Item was changed:
+ ----- Method: DurationTest>>testHash (in category 'tests') -----
- ----- Method: DurationTest>>testHash (in category 'testing') -----
  testHash
  self assert: aDuration hash =     (Duration days: 1 hours: 2 minutes: 3 seconds: 4 nanoSeconds: 5) hash.
  self assert: aDuration hash =     93789
  "must be a more meaningful test?"!

Item was changed:
+ ----- Method: DurationTest>>testHours (in category 'tests') -----
- ----- Method: DurationTest>>testHours (in category 'testing') -----
  testHours
  self assert: aDuration   hours = 2.
  self assert: (Duration   hours: 2) hours = 2. !

Item was changed:
+ ----- Method: DurationTest>>testIntegerDivision (in category 'tests') -----
- ----- Method: DurationTest>>testIntegerDivision (in category 'testing') -----
  testIntegerDivision
  self assert: aDuration // aDuration = 1.
  self assert: aDuration // 2 =  (aDuration / 2).
  "is there ever a case where this is not true, since precision is always to the nano second?"!

Item was changed:
+ ----- Method: DurationTest>>testLessThan (in category 'tests') -----
- ----- Method: DurationTest>>testLessThan (in category 'testing') -----
  testLessThan
  self assert: aDuration  < (aDuration + 1 day ).
  self deny: aDuration < aDuration.
  !

Item was changed:
+ ----- Method: DurationTest>>testMilliSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testMilliSeconds (in category 'testing') -----
  testMilliSeconds
 
  #(
  "argument (milliseconds) seconds nanoseconds"
  (5 0 5000000)
  (1005 1 5000000)
  (-5 0 -5000000)
  (-1005 -1 -5000000)
  (1234567 1234 567000000)
  (-1234567 -1234 -567000000)
  ) do: [ :each |
  | duration |
  duration := Duration milliSeconds: each first.
  self assert: duration asSeconds = each second.
  self assert: duration nanoSeconds = each third ]!

Item was changed:
+ ----- Method: DurationTest>>testMinus (in category 'tests') -----
- ----- Method: DurationTest>>testMinus (in category 'testing') -----
  testMinus
  self assert: aDuration - aDuration = (Duration seconds: 0).
  self assert: aDuration - (Duration days: -1 hours: -2 minutes: -3 seconds: -4 nanoSeconds: -5) =
     (Duration days: 2  hours: 4  minutes: 6  seconds: 8  nanoSeconds: 10).
  self assert: aDuration - (Duration days: 0  hours: 1  minutes: 2  seconds: 3  nanoSeconds: 4) =
     (Duration days: 1  hours: 1  minutes: 1  seconds: 1  nanoSeconds: 1).
  self assert: aDuration - (Duration days: 0  hours: 3   minutes: 0  seconds: 5  nanoSeconds: 0) =
     (Duration days: 0  hours: 23  minutes: 2  seconds: 59  nanoSeconds: 5). !

Item was changed:
+ ----- Method: DurationTest>>testMinutes (in category 'tests') -----
- ----- Method: DurationTest>>testMinutes (in category 'testing') -----
  testMinutes
  self assert: aDuration   minutes = 3.
  self assert: (Duration minutes: 3) minutes = 3. !

Item was changed:
+ ----- Method: DurationTest>>testModulo (in category 'tests') -----
- ----- Method: DurationTest>>testModulo (in category 'Tests') -----
  testModulo
 
  | d1 d2 d3 |
  d1 := 11.5 seconds.
  d2 := d1 \\ 3.
  self assert: d2 = (Duration nanoSeconds: 1).
 
  d3 := d1 \\ (3 seconds).
  self assert: d3 =  (Duration seconds: 2 nanoSeconds: 500000000).
 
  self assert: aDuration \\ aDuration =
  (Duration days: 0 hours: 0 minutes: 0 seconds: 0 nanoSeconds: 0).
  self assert: aDuration \\ 2 =
  (Duration days: 0 hours: 0 minutes: 0 seconds: 0 nanoSeconds: 1).
 
 
  !

Item was changed:
+ ----- Method: DurationTest>>testMonthDurations (in category 'tests') -----
- ----- Method: DurationTest>>testMonthDurations (in category 'Tests') -----
  testMonthDurations
 
  | jan feb dec |
  jan := Duration month: #January.
  feb := Duration month: #February.
  dec := Duration month: #December.
 
  self
  assert: jan = (Year current months first duration);
  assert: feb = (Year current months second duration);
  assert: dec = (Year current months last duration)
 
 
  !

Item was changed:
+ ----- Method: DurationTest>>testMultiply (in category 'tests') -----
- ----- Method: DurationTest>>testMultiply (in category 'testing') -----
  testMultiply
  self assert: aDuration * 2 = (Duration days: 2 hours: 4 minutes: 6 seconds: 8 nanoSeconds: 10). !

Item was changed:
+ ----- Method: DurationTest>>testNanoSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testNanoSeconds (in category 'testing') -----
  testNanoSeconds
  self assert: aDuration nanoSeconds = 5.
  self assert: (Duration nanoSeconds: 5) nanoSeconds = 5. !

Item was changed:
+ ----- Method: DurationTest>>testNegated (in category 'tests') -----
- ----- Method: DurationTest>>testNegated (in category 'testing') -----
  testNegated
  self assert: aDuration + aDuration negated = (Duration seconds: 0).
  !

Item was changed:
+ ----- Method: DurationTest>>testNegative (in category 'tests') -----
- ----- Method: DurationTest>>testNegative (in category 'testing') -----
  testNegative
  self deny: aDuration negative.
  self assert: aDuration negated negative
  !

Item was changed:
+ ----- Method: DurationTest>>testNew (in category 'tests') -----
- ----- Method: DurationTest>>testNew (in category 'testing') -----
  testNew
+
+ self assert: Duration new =  (Duration seconds: 0)!
- "self assert: Duration new =  (Duration seconds: 0)."
-     "new is not valid as a creation method: MessageNotUnderstood: UndefinedObject>>quo:, where Duration seconds is nil"!

Item was changed:
+ ----- Method: DurationTest>>testNormalizeNanoSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testNormalizeNanoSeconds (in category 'testing') -----
  testNormalizeNanoSeconds
  "Subtraction of two DateAndTime values may result in a request to
  create a Duration with negative nanoseconds and positive seconds.
  The resulting Duration should be normalized, otherwise its printString
  will be invalid."
 
  | d t1 t2 |
  t1 := '2004-01-07T11:55:01+00:00' asDateAndTime.
  t2 := '2004-01-07T11:55:00.9+00:00' asDateAndTime.
  d := t1 - t2. "100 millisecond difference"
  self assert: d nanoSeconds > 0.
  self assert: d seconds = 0.
  self assert: d nanoSeconds = 100000000.
  self assert: d asString = '0:00:00:00.1'.
  "Verify that other combinations produces reasonable printString values"
  self assert: (Duration seconds: 1 nanoSeconds: 100000000) printString = '0:00:00:01.1'.
  self assert: (Duration seconds: -1 nanoSeconds: -100000000) printString = '-0:00:00:01.1'.
  self assert: (Duration seconds: 1 nanoSeconds: -100000000) printString = '0:00:00:00.9'.
  self assert: (Duration seconds: -1 nanoSeconds: 100000000) printString = '-0:00:00:00.9'
  !

Item was changed:
+ ----- Method: DurationTest>>testNumberConvenienceMethods (in category 'tests') -----
- ----- Method: DurationTest>>testNumberConvenienceMethods (in category 'Tests') -----
  testNumberConvenienceMethods
 
  self
  assert: 1 week = (Duration days: 7);
  assert: -1 week = (Duration days: -7);
  assert: 1 day = (Duration days: 1);
  assert: -1 day = (Duration days: -1);
  assert: 1 hours = (Duration hours: 1);
  assert: -1 hour = (Duration hours: -1);
  assert: 1 minute = (Duration seconds: 60);
  assert: -1 minute = (Duration seconds: -60);
  assert: 1 second = (Duration seconds: 1);
  assert: -1 second = (Duration seconds: -1);
  assert: 1 milliSecond = (Duration milliSeconds: 1);
  assert: -1 milliSecond = (Duration milliSeconds: -1);
  assert: 1 nanoSecond = (Duration nanoSeconds: 1);
  assert: -1 nanoSecond = (Duration nanoSeconds: -1)
  !

Item was changed:
+ ----- Method: DurationTest>>testPlus (in category 'tests') -----
- ----- Method: DurationTest>>testPlus (in category 'testing') -----
  testPlus
  self assert: (aDuration + 0 hours) = aDuration.
  self assert: (aDuration + aDuration) = (Duration days: 2 hours: 4 minutes: 6 seconds: 8 nanoSeconds: 10). !

Item was changed:
+ ----- Method: DurationTest>>testPositive (in category 'tests') -----
- ----- Method: DurationTest>>testPositive (in category 'testing') -----
  testPositive
  self assert: (Duration nanoSeconds: 0) positive.
  self assert: aDuration positive.
  self deny: aDuration negated positive
  !

Item was changed:
+ ----- Method: DurationTest>>testPrintOn (in category 'tests') -----
- ----- Method: DurationTest>>testPrintOn (in category 'testing') -----
  testPrintOn
  | ref ws |
  ref := '1:02:03:04.000000005'.
  ws := '' writeStream.
  aDuration printOn: ws.
  self assert: ws contents = ref!

Item was changed:
+ ----- Method: DurationTest>>testQuotient (in category 'tests') -----
- ----- Method: DurationTest>>testQuotient (in category 'Tests') -----
  testQuotient
 
  | d1 d2 q |
  d1 := 11.5 seconds.
  d2 := d1 // 3.
  self assert: d2 = (Duration seconds: 3 nanoSeconds: 833333333).
 
  q := d1 // (3 seconds).
  self assert: q = 3.
 
  !

Item was changed:
+ ----- Method: DurationTest>>testReadFrom (in category 'tests') -----
- ----- Method: DurationTest>>testReadFrom (in category 'testing') -----
  testReadFrom
  self assert: aDuration =  (Duration readFrom: (ReadStream on: '1:02:03:04.000000005'))
  !

Item was changed:
+ ----- Method: DurationTest>>testReadFromTrailingDigits (in category 'tests') -----
- ----- Method: DurationTest>>testReadFromTrailingDigits (in category 'Tests') -----
  testReadFromTrailingDigits
  "http://bugs.squeak.org/view.php?id=6764"
  self should:  (Duration readFrom: '0:00:00:00.001 ' readStream) nanoSeconds = 1000000.!

Item was changed:
+ ----- Method: DurationTest>>testRoundTo (in category 'tests') -----
- ----- Method: DurationTest>>testRoundTo (in category 'Tests') -----
  testRoundTo
 
  self assert: ((5 minutes + 37 seconds) roundTo: (2 minutes)) = (6 minutes).
 
  self assert:  (aDuration roundTo: (Duration days: 1)) =
                (Duration days: 1 hours: 0 minutes: 0 seconds: 0 nanoSeconds: 0).
  self assert:  (aDuration roundTo: (Duration hours: 1)) =
                (Duration days: 1 hours: 2 minutes: 0 seconds: 0 nanoSeconds: 0).
  self assert:  (aDuration roundTo: (Duration minutes: 1)) =
                (Duration days: 1 hours: 2 minutes: 3 seconds: 0 nanoSeconds: 0).!

Item was changed:
+ ----- Method: DurationTest>>testSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testSeconds (in category 'testing') -----
  testSeconds
  self assert: aDuration seconds =   4.
  self assert: (Duration  nanoSeconds: 2) seconds = 0.
  self assert: (Duration nanoSeconds: 999999999) seconds = 0.
  self assert: (Duration nanoSeconds: 1000000001) seconds = 1.
  self assert: (Duration  seconds: 2) seconds = 2.
  self assert: (Duration  days: 1 hours: 2 minutes: 3 seconds:4) seconds = 4.
  self deny: (Duration  days: 1 hours: 2 minutes: 3 seconds:4) seconds = (1*24*60*60+(2*60*60)+(3*60)+4). !

Item was changed:
+ ----- Method: DurationTest>>testSecondsNanoSeconds (in category 'tests') -----
- ----- Method: DurationTest>>testSecondsNanoSeconds (in category 'testing') -----
  testSecondsNanoSeconds
  self assert: (Duration   seconds: 0 nanoSeconds: 5)  = (Duration  nanoSeconds: 5).
  "not sure I should include in sunit since its Private "
  self assert: (aDuration seconds: 0 nanoSeconds: 1) = (Duration nanoSeconds: 1).
  !

Item was changed:
+ ----- Method: DurationTest>>testStoreOn (in category 'tests') -----
- ----- Method: DurationTest>>testStoreOn (in category 'testing') -----
  testStoreOn
       self assert: (aDuration storeOn: (WriteStream on:'')) asString ='1:02:03:04.000000005'.
       "storeOn: returns a duration (self) not a stream"!

Item was changed:
+ ----- Method: DurationTest>>testTicks (in category 'tests') -----
- ----- Method: DurationTest>>testTicks (in category 'testing') -----
  testTicks
  self assert: aDuration ticks =  #(1 7384 5)!

Item was changed:
+ ----- Method: DurationTest>>testTruncateTo (in category 'tests') -----
- ----- Method: DurationTest>>testTruncateTo (in category 'Tests') -----
  testTruncateTo
 
  self assert: ((5 minutes + 37 seconds) truncateTo: (2 minutes)) = (4 minutes).
  self assert:  (aDuration truncateTo: (Duration days: 1)) =
                (Duration days: 1 hours: 0 minutes: 0 seconds: 0 nanoSeconds: 0).
  self assert:  (aDuration truncateTo: (Duration hours: 1)) =
                (Duration days: 1 hours: 2 minutes: 0 seconds: 0 nanoSeconds: 0).
  self assert:  (aDuration truncateTo: (Duration minutes: 1)) =
                (Duration days: 1 hours: 2 minutes: 3 seconds: 0 nanoSeconds: 0).!

Item was added:
+ ----- Method: DurationTest>>testWait (in category 'tests') -----
+ testWait
+
+ | start |
+ start := DateAndTime new.
+ (Duration milliseconds: 500) wait.
+ self assert: DateAndTime now - start > (Duration milliseconds: 500). !

Item was changed:
+ ----- Method: DurationTest>>testWeeks (in category 'tests') -----
- ----- Method: DurationTest>>testWeeks (in category 'testing') -----
  testWeeks
  self assert: (Duration  weeks: 1) days= 7. !

Item was changed:
+ ----- Method: DurationTest>>testZero (in category 'tests') -----
- ----- Method: DurationTest>>testZero (in category 'testing') -----
  testZero
  self assert: (Duration zero) = (Duration seconds: 0). !