diff --git a/rowan/components/scripts/defineClassAliases.st b/rowan/components/scripts/defineClassAliases.st index 49413e7..970cbc7 100644 --- a/rowan/components/scripts/defineClassAliases.st +++ b/rowan/components/scripts/defineClassAliases.st @@ -12,5 +12,6 @@ symbolDictionary at: #NotFound put: LookupError. symbolDictionary at: #SubscriptOutOfBounds put: OffsetError. symbolDictionary at: #SmallDictionary put: Dictionary. symbolDictionary at: #Exit put: ExitClientError. +symbolDictionary at: #CollectionIsEmpty put: ImproperOperation. "Temporary, it will be fixed in a post load script" symbolDictionary at: #AssertionFailure put: nil. diff --git a/source/Buoy-Chronology-GS64-Extensions/Date.extension.st b/source/Buoy-Chronology-GS64-Extensions/Date.extension.st index 952e746..15f7bd5 100644 --- a/source/Buoy-Chronology-GS64-Extensions/Date.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/Date.extension.st @@ -1,18 +1,18 @@ -Extension { #name : #Date } +Extension { #name : 'Date' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Date >> asDateAndTime [ ^ DateAndTime year: self year month: self monthIndex day: self dayOfMonth ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Date class >> year: year month: month day: day [ ^ self newDay: day monthNumber: month year: year ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Date >> yyyymmdd [ "Format the date in ISO 8601 standard like '2002-10-22' The result is of fixed size 10 characters long." diff --git a/source/Buoy-Chronology-GS64-Extensions/DateAndTime.extension.st b/source/Buoy-Chronology-GS64-Extensions/DateAndTime.extension.st index d94ab41..91e1f86 100644 --- a/source/Buoy-Chronology-GS64-Extensions/DateAndTime.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/DateAndTime.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #DateAndTime } +Extension { #name : 'DateAndTime' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTime >> asDateAndTime [ ^ self diff --git a/source/Buoy-Chronology-GS64-Extensions/DateAndTimeANSI.extension.st b/source/Buoy-Chronology-GS64-Extensions/DateAndTimeANSI.extension.st index cfccec9..532b4f1 100644 --- a/source/Buoy-Chronology-GS64-Extensions/DateAndTimeANSI.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/DateAndTimeANSI.extension.st @@ -1,18 +1,18 @@ -Extension { #name : #DateAndTimeANSI } +Extension { #name : 'DateAndTimeANSI' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI >> monthIndex [ ^ self month ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI >> printHMSOn: aStream [ self printHMSOn: aStream separatedBy: $: ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI >> printHMSOn: aStream separatedBy: separator [ aStream @@ -23,7 +23,7 @@ DateAndTimeANSI >> printHMSOn: aStream separatedBy: separator [ nextPutAll: (self second asInteger printStringLength: 2 padded: true) ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI >> printYMDOn: aStream [ aStream @@ -34,13 +34,13 @@ DateAndTimeANSI >> printYMDOn: aStream [ nextPutAll: (self dayOfMonth printStringLength: 2 padded: true) ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI class >> unixEpoch [ ^ self posixSeconds: 0 offset: Duration zero ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } DateAndTimeANSI class >> year: year month: month day: day [ "Return a DateAndTime, midnight local time" diff --git a/source/Buoy-Chronology-GS64-Extensions/Duration.extension.st b/source/Buoy-Chronology-GS64-Extensions/Duration.extension.st index aa9ae5c..340f1f2 100644 --- a/source/Buoy-Chronology-GS64-Extensions/Duration.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/Duration.extension.st @@ -1,37 +1,43 @@ -Extension { #name : #Duration } +Extension { #name : 'Duration' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration >> asMilliSeconds [ ^ self asSeconds * 1000 ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration class >> days: aNumber [ ^ self seconds: aNumber * 86400 ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration class >> hours: aNumber [ ^ self seconds: aNumber * 3600 ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration class >> milliSeconds: aNumber [ ^ self seconds: aNumber / 1000 ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration class >> minutes: aNumber [ ^ self seconds: aNumber * 60 ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } +Duration >> totalSeconds [ + + ^self asSeconds +] + +{ #category : '*Buoy-Chronology-GS64-Extensions' } Duration >> wait [ - ^ Delay waitForMilliseconds: self seconds * 1000 + ^ Delay waitForMilliseconds: (self seconds * 1000) rounded ] diff --git a/source/Buoy-Chronology-GS64-Extensions/Integer.extension.st b/source/Buoy-Chronology-GS64-Extensions/Integer.extension.st index 6099623..399dbca 100644 --- a/source/Buoy-Chronology-GS64-Extensions/Integer.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/Integer.extension.st @@ -1,48 +1,48 @@ -Extension { #name : #Integer } +Extension { #name : 'Integer' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> day [ ^ self days ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> days [ ^ Duration days: self ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> hour [ ^ self hours ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> hours [ ^ Duration hours: self ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> milliSecond [ ^ self milliSeconds ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> milliSeconds [ ^ Duration milliSeconds: self ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> minute [ ^ self minutes ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Integer >> minutes [ ^ Duration minutes: self diff --git a/source/Buoy-Chronology-GS64-Extensions/Number.extension.st b/source/Buoy-Chronology-GS64-Extensions/Number.extension.st index a9d84a6..3b0c0bc 100644 --- a/source/Buoy-Chronology-GS64-Extensions/Number.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/Number.extension.st @@ -1,12 +1,12 @@ -Extension { #name : #Number } +Extension { #name : 'Number' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Number >> asDuration [ ^ Duration seconds: self asInteger ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Number >> second [ "1 second printString >>> '0:00:00:01'" "(1 minute + 1 second) printString >>> '0:00:01:01'" @@ -14,7 +14,7 @@ Number >> second [ ^ self seconds ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Number >> seconds [ ^ Duration seconds: self diff --git a/source/Buoy-Chronology-GS64-Extensions/Time.extension.st b/source/Buoy-Chronology-GS64-Extensions/Time.extension.st index 414c6fa..7015ab5 100644 --- a/source/Buoy-Chronology-GS64-Extensions/Time.extension.st +++ b/source/Buoy-Chronology-GS64-Extensions/Time.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #Time } +Extension { #name : 'Time' } -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Time class >> milliseconds: currentTime since: lastTime [ "Answer the elapsed time since last recorded in milliseconds. Compensate for rollover." @@ -12,7 +12,7 @@ Time class >> milliseconds: currentTime since: lastTime [ ifFalse: [delta] ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Time class >> millisecondsSince: lastTime [ "Answer the elapsed time since last recorded in milliseconds. Compensate for rollover." @@ -20,13 +20,13 @@ Time class >> millisecondsSince: lastTime [ ^self milliseconds: self millisecondClockValue since: lastTime ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Time class >> millisecondsToRun: timedBlock [ ^ self millisecondsElapsedTime: timedBlock ] -{ #category : #'*Buoy-Chronology-GS64-Extensions' } +{ #category : '*Buoy-Chronology-GS64-Extensions' } Time class >> totalSeconds [ "Answer the total seconds ellapsed since the epoch: 1 January 1901 00:00 UTC" diff --git a/source/Buoy-Chronology-GS64-Extensions/package.st b/source/Buoy-Chronology-GS64-Extensions/package.st index 404cb9f..90aa5b1 100644 --- a/source/Buoy-Chronology-GS64-Extensions/package.st +++ b/source/Buoy-Chronology-GS64-Extensions/package.st @@ -1 +1 @@ -Package { #name : #'Buoy-Chronology-GS64-Extensions' } +Package { #name : 'Buoy-Chronology-GS64-Extensions' } diff --git a/source/Buoy-Chronology-Tests/DateAndTimeExtensionsTest.class.st b/source/Buoy-Chronology-Tests/DateAndTimeExtensionsTest.class.st index 2625ea4..f6369b0 100644 --- a/source/Buoy-Chronology-Tests/DateAndTimeExtensionsTest.class.st +++ b/source/Buoy-Chronology-Tests/DateAndTimeExtensionsTest.class.st @@ -1,10 +1,11 @@ Class { - #name : #DateAndTimeExtensionsTest, - #superclass : #TestCase, - #category : #'Buoy-Chronology-Tests' + #name : 'DateAndTimeExtensionsTest', + #superclass : 'TestCase', + #category : 'Buoy-Chronology-Tests', + #package : 'Buoy-Chronology-Tests' } -{ #category : #tests } +{ #category : 'tests' } DateAndTimeExtensionsTest >> testPrintHMS [ | dateAndTime | @@ -21,7 +22,7 @@ DateAndTimeExtensionsTest >> testPrintHMS [ equals: '04:06:01' ] -{ #category : #tests } +{ #category : 'tests' } DateAndTimeExtensionsTest >> testPrintYMD [ | dateAndTime | diff --git a/source/Buoy-Chronology-Tests/DateExtensionsTest.class.st b/source/Buoy-Chronology-Tests/DateExtensionsTest.class.st index 1eb9b91..dd83c12 100644 --- a/source/Buoy-Chronology-Tests/DateExtensionsTest.class.st +++ b/source/Buoy-Chronology-Tests/DateExtensionsTest.class.st @@ -1,10 +1,11 @@ Class { - #name : #DateExtensionsTest, - #superclass : #TestCase, - #category : #'Buoy-Chronology-Tests' + #name : 'DateExtensionsTest', + #superclass : 'TestCase', + #category : 'Buoy-Chronology-Tests', + #package : 'Buoy-Chronology-Tests' } -{ #category : #tests } +{ #category : 'tests' } DateExtensionsTest >> testAsDateAndTime [ | date dateAndTime | @@ -20,7 +21,7 @@ DateExtensionsTest >> testAsDateAndTime [ assert: dateAndTime second isZero ] -{ #category : #tests } +{ #category : 'tests' } DateExtensionsTest >> testCreation [ | date | diff --git a/source/Buoy-Chronology-Tests/DurationChronologyExtensionsTest.class.st b/source/Buoy-Chronology-Tests/DurationChronologyExtensionsTest.class.st new file mode 100644 index 0000000..70ad2bc --- /dev/null +++ b/source/Buoy-Chronology-Tests/DurationChronologyExtensionsTest.class.st @@ -0,0 +1,27 @@ +Class { + #name : 'DurationChronologyExtensionsTest', + #superclass : 'TestCase', + #category : 'Buoy-Chronology-Tests', + #package : 'Buoy-Chronology-Tests' +} + +{ #category : 'tests' } +DurationChronologyExtensionsTest >> testTotalSeconds [ + + self assert: 0 seconds totalSeconds equals: 0. + self assert: 1 second totalSeconds equals: 1. + self assert: 100 second totalSeconds equals: 100. + self assert: 500 milliSeconds totalSeconds equals: 1 / 2. + self assert: 1500 milliSeconds totalSeconds equals: 3 / 2. + self assert: 2500 milliSeconds totalSeconds equals: 5 / 2. + self assert: 1 second negated totalSeconds equals: -1 +] + +{ #category : 'tests' } +DurationChronologyExtensionsTest >> testWait [ + + | ms | + + ms := Time millisecondsToRun: [ 2.1 seconds wait ]. + self assert: ms >= 2100 +] diff --git a/source/Buoy-Chronology-Tests/NumberChronologyExtensionsTest.class.st b/source/Buoy-Chronology-Tests/NumberChronologyExtensionsTest.class.st index aacdeaf..124adb4 100644 --- a/source/Buoy-Chronology-Tests/NumberChronologyExtensionsTest.class.st +++ b/source/Buoy-Chronology-Tests/NumberChronologyExtensionsTest.class.st @@ -1,10 +1,11 @@ Class { - #name : #NumberChronologyExtensionsTest, - #superclass : #TestCase, - #category : #'Buoy-Chronology-Tests' + #name : 'NumberChronologyExtensionsTest', + #superclass : 'TestCase', + #category : 'Buoy-Chronology-Tests', + #package : 'Buoy-Chronology-Tests' } -{ #category : #tests } +{ #category : 'tests' } NumberChronologyExtensionsTest >> testDays [ self @@ -12,7 +13,7 @@ NumberChronologyExtensionsTest >> testDays [ assert: 2 days equals: (Duration days: 2) ] -{ #category : #tests } +{ #category : 'tests' } NumberChronologyExtensionsTest >> testHours [ self @@ -20,7 +21,7 @@ NumberChronologyExtensionsTest >> testHours [ assert: 2 hours equals: (Duration hours: 2) ] -{ #category : #tests } +{ #category : 'tests' } NumberChronologyExtensionsTest >> testMilliSeconds [ self @@ -28,7 +29,7 @@ NumberChronologyExtensionsTest >> testMilliSeconds [ assert: 2000 milliSeconds equals: 2 seconds ] -{ #category : #tests } +{ #category : 'tests' } NumberChronologyExtensionsTest >> testSeconds [ self diff --git a/source/Buoy-Chronology-Tests/package.st b/source/Buoy-Chronology-Tests/package.st index 5a5c867..0546ec5 100644 --- a/source/Buoy-Chronology-Tests/package.st +++ b/source/Buoy-Chronology-Tests/package.st @@ -1 +1 @@ -Package { #name : #'Buoy-Chronology-Tests' } +Package { #name : 'Buoy-Chronology-Tests' } diff --git a/source/Buoy-Collections-GS64-Extensions/Collection.extension.st b/source/Buoy-Collections-GS64-Extensions/Collection.extension.st index 47da53d..778b6c9 100644 --- a/source/Buoy-Collections-GS64-Extensions/Collection.extension.st +++ b/source/Buoy-Collections-GS64-Extensions/Collection.extension.st @@ -91,6 +91,12 @@ Collection >> detect: aBlock ifFound: foundBlock ifNone: exceptionBlock [ ^ exceptionBlock value ] +{ #category : '*Buoy-Collections-GS64-Extensions' } +Collection >> errorEmptyCollection [ + + CollectionIsEmpty signal: 'Collection is empty' +] + { #category : '*Buoy-Collections-GS64-Extensions' } Collection >> fillFrom: aCollection with: aBlock [ "Private. diff --git a/source/Buoy-Collections-Tests/CollectionExtensionsTest.class.st b/source/Buoy-Collections-Tests/CollectionExtensionsTest.class.st index cb45592..1c6cb21 100644 --- a/source/Buoy-Collections-Tests/CollectionExtensionsTest.class.st +++ b/source/Buoy-Collections-Tests/CollectionExtensionsTest.class.st @@ -223,14 +223,14 @@ CollectionExtensionsTest >> testMaxUsing [ self assert: ( #(#(1) #(3 1) #(2)) maxUsing: [ :anArray | anArray first ] ) equals: 3. - self should: [ #() maxUsing: [ :anArray | anArray first ] ] raise: Error + self should: [ #() maxUsing: [ :anArray | anArray first ] ] raise: CollectionIsEmpty ] { #category : 'tests' } CollectionExtensionsTest >> testMinUsing [ self assert: ( #(#(3 1) #(1) #(2)) minUsing: [ :anArray | anArray first ] ) equals: 1. - self should: [ #() minUsing: [ :anArray | anArray first ] ] raise: Error + self should: [ #() minUsing: [ :anArray | anArray first ] ] raise: CollectionIsEmpty ] { #category : 'tests' }