@@ -154,7 +154,7 @@ check "pick on list sets doesn't repeat order":
154154 found-diff is true
155155end
156156
157- check "sets pick visits all elemeents " :
157+ check "sets pick visits all elements " :
158158
159159 fun pick-sum( s) :
160160 cases ( P . Pick ) s. pick() :
@@ -169,3 +169,115 @@ check "sets pick visits all elemeents":
169169 pick-sum( [ tree-set:] ) is 0
170170
171171end
172+
173+ check "Set map function" :
174+
175+ # Check empty sets:
176+ sets. map( empty-list-set, lam ( x) : x + 1 end ) is empty-list-set
177+
178+ sets. map( empty-tree-set, lam ( x) : x + 1 end ) is empty-tree-set
179+
180+ # Other tests:
181+ sets. map( [ list-set: 1 , 2 , 3 , 4 ] , lam ( x) : 1 end )
182+ is [ list-set: 1 ]
183+
184+ sets. map( [ tree-set: 1 , 2 , 3 , 4 ] , lam ( x) : 1 end )
185+ is [ tree-set: 1 ]
186+
187+ sets. map( [ list-set: 1 , 2 , 3 , 4 ] , lam ( x) : x + 1 end )
188+ is [ list-set: 5 , 4 , 3 , 2 ]
189+
190+ sets. map( [ tree-set: 1 , 2 , 3 , 4 ] , lam ( x) : x + 1 end )
191+ is [ tree-set: 5 , 4 , 3 , 2 ]
192+
193+ # Number -> String mapping test:
194+ test-string = "abcd"
195+
196+ sets. map( [ list-set: 0 , 1 , 2 , 3 ] ,
197+ lam ( x) :
198+ string-substring( test-string, x, x + 1 )
199+ end ). to-list(). sort() is [ list: "a" , "b" , "c" , "d" ]
200+
201+ sets. map( [ tree-set: 0 , 1 , 2 , 3 ] ,
202+ lam ( x) :
203+ string-substring( test-string, x, x + 1 )
204+ end ). to-list(). sort() is [ list: "a" , "b" , "c" , "d" ]
205+
206+ # String -> Number mapping test:
207+ sets. map( [ list-set: "Arr" , "," , "Hello" , "Pyret" , "mateys!" ] , string-length)
208+ is [ list-set: 1 , 3 , 7 , 5 ]
209+
210+ sets. map( [ tree-set: "Arr" , "," , "Hello" , "Pyret" , "mateys!" ] ,string-length)
211+ is [ tree-set: 1 , 3 , 7 , 5 ]
212+ end
213+
214+ check "Set map method" :
215+
216+ # Check empty sets:
217+ empty-list-set. map( lam ( x) : x + 1 end ) is empty-list-set
218+
219+ empty-tree-set. map( lam ( x) : x + 1 end ) is empty-tree-set
220+
221+ # Check map returns the same list type:
222+ [ list-set: 1 , 2 , 3 , 4 ] . map( lam ( x) : x end )
223+ is [ list-set: 1 , 2 , 3 , 4 ]
224+
225+ [ tree-set: 1 , 2 , 3 , 4 ] . map( lam ( x) : x end )
226+ is [ tree-set: 1 , 2 , 3 , 4 ]
227+
228+ # Other tests:
229+ [ list-set: 1 , 2 , 3 , 4 ] . map( lam ( x) : 1 end )
230+ is [ list-set: 1 ]
231+
232+ [ list-set: 1 , 2 , 3 , 4 ] . map( lam ( x) : x + 1 end )
233+ is [ list-set: 5 , 4 , 3 , 2 ]
234+
235+ [ tree-set: 1 , 2 , 3 , 4 ] . map( lam ( x) : x + 1 end )
236+ is [ tree-set: 5 , 4 , 3 , 2 ]
237+
238+ # Number -> String mapping test:
239+ test-string = "abcd"
240+
241+ [ list-set: 0 , 1 , 2 , 3 ] . map( lam ( x) :
242+ string-substring( test-string, x, x + 1 )
243+ end ). to-list(). sort() is [ list: "a" , "b" , "c" , "d" ]
244+
245+ [ tree-set: 0 , 1 , 2 , 3 ] . map( lam ( x) :
246+ string-substring( test-string, x, x + 1 )
247+ end ). to-list(). sort() is [ list: "a" , "b" , "c" , "d" ]
248+
249+ # String -> Number mapping test:
250+ [ list-set: "Arr" , "," , "Hello" , "Pyret" , "mateys!" ] . map( string-length)
251+ is [ list-set: 1 , 3 , 7 , 5 ]
252+
253+ [ tree-set: "Arr" , "," , "Hello" , "Pyret" , "mateys!" ] . map( string-length)
254+ is [ tree-set: 1 , 3 , 7 , 5 ]
255+ end
256+
257+ check "Set filter function" :
258+
259+ sets. filter( lam ( e) : e > 5 end , [ list-set: -1 , 1 ] ) is [ list-set: ]
260+ sets. filter( lam ( e) : e > 5 end , [ tree-set: -1 , 1 ] ) is [ tree-set: ]
261+
262+ sets. filter( lam ( e) : e > 0 end , [ list-set: -1 , 1 ] ) is [ list-set: 1 ]
263+ sets. filter( lam ( e) : e > 0 end , [ tree-set: -1 , 1 ] ) is [ tree-set: 1 ]
264+
265+ sets. filter( lam ( e) : num-modulo( e, 2 ) == 0 end ,
266+ [ list-set: 1 , 2 , 3 , 4 ] ) is [ list-set: 2 , 4 ]
267+
268+ sets. filter( lam ( e) : num-modulo( e, 2 ) == 0 end ,
269+ [ tree-set: 1 , 2 , 3 , 4 ] ) is [ tree-set: 2 , 4 ]
270+ end
271+
272+ check "Set filter method" :
273+
274+ [ list-set: -1 , 1 ] . filter( lam ( e) : e > 5 end ) is [ list-set: ]
275+ [ tree-set: -1 , 1 ] . filter( lam ( e) : e > 5 end ) is [ tree-set: ]
276+
277+ [ list-set: -1 , 1 ] . filter( lam ( e) : e > 0 end ) is [ list-set: 1 ]
278+ [ tree-set: -1 , 1 ] . filter( lam ( e) : e > 0 end ) is [ tree-set: 1 ]
279+
280+ [ list-set: 1 , 2 , 3 , 4 ] . filter( lam ( e) : num-modulo( e, 2 ) == 0 end )
281+ is [ list-set: 2 , 4 ]
282+
283+ end
0 commit comments