Skip to content

Commit ce2e0aa

Browse files
authored
Merge pull request #35 from HossamSaberr/api-alignment
Refactor: Align creation APIs and close resolved issues
2 parents 2989d8f + 2e2dded commit ce2e0aa

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

src/Containers-Array2D-Tests/CTNewArray2DTest.class.st

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,51 @@ CTNewArray2DTest >> testFromRightToLeftFromTopToBottomDo [
171171
self assert: res equals: #(2 1 4 3 6 5) asOrderedCollection
172172
]
173173

174+
{ #category : 'tests' }
175+
CTNewArray2DTest >> testFromRowsPad [
176+
| array |
177+
array := self arrayClass fromRows: #( #(1 2) #(3 4 5) #(6) ) pad: 0.
178+
179+
self assert: array width equals: 3.
180+
self assert: array height equals: 3.
181+
self assert: (array atRow: 1) equals: #(1 2 0).
182+
self assert: (array atRow: 2) equals: #(3 4 5).
183+
self assert: (array atRow: 3) equals: #(6 0 0).
184+
]
185+
186+
{ #category : 'tests' }
187+
CTNewArray2DTest >> testFromRowsPadNoPaddingNeeded [
188+
| array |
189+
array := self arrayClass fromRows: #( #(1 2) #(3 4) ) pad: 99.
190+
191+
self assert: array width equals: 2.
192+
self assert: array height equals: 2.
193+
self assert: (array atRow: 1) equals: #(1 2).
194+
self assert: (array atRow: 2) equals: #(3 4).
195+
]
196+
197+
{ #category : 'tests' }
198+
CTNewArray2DTest >> testFromRowsPadWithCharacters [
199+
| array |
200+
array := self arrayClass fromRows: #( #($a $b) #($c) ) pad: $x.
201+
202+
self assert: array width equals: 2.
203+
self assert: array height equals: 2.
204+
self assert: (array atRow: 1) equals: #($a $b).
205+
self assert: (array atRow: 2) equals: #($c $x).
206+
]
207+
208+
{ #category : 'tests' }
209+
CTNewArray2DTest >> testFromRowsPadWithNil [
210+
| array |
211+
array := self arrayClass fromRows: #( #(1) #(2 3) ) pad: nil.
212+
213+
self assert: array width equals: 2.
214+
self assert: array height equals: 2.
215+
self assert: (array atRow: 1) equals: #(1 nil).
216+
self assert: (array atRow: 2) equals: #(2 3).
217+
]
218+
174219
{ #category : 'tests' }
175220
CTNewArray2DTest >> testFromTopToBottomFromLeftToRightDo [
176221
|foo res|

src/Containers-Array2D/CTNewArray2D.class.st

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,21 @@ CTNewArray2D class >> fromArray: aCollection width: aSize [
4242

4343
]
4444

45+
{ #category : 'instance creation' }
46+
CTNewArray2D class >> fromRows: rows pad: paddingElement [
47+
| width contents pad |
48+
width := rows max: [ :row | row size ].
49+
contents := rows first species new: (width * rows size) streamContents: [ :aStream |
50+
rows do: [ :row |
51+
aStream nextPutAll: row.
52+
pad := width - row size.
53+
pad > 0 ifTrue: [ aStream next: pad put: paddingElement ].
54+
]
55+
].
56+
57+
^ self fromArray: contents width: width
58+
]
59+
4560
{ #category : 'instance creation' }
4661
CTNewArray2D class >> new [
4762

0 commit comments

Comments
 (0)