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