131 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Factor
		
	
	
|  | USING: unrolled-lists tools.test deques kernel sequences | ||
|  | random prettyprint grouping ;
 | ||
|  | IN: unrolled-lists.tests | ||
|  | 
 | ||
|  | [ 1 ] [ <unrolled-list> 1 over push-front pop-front ] unit-test | ||
|  | [ 1 ] [ <unrolled-list> 1 over push-front pop-back ] unit-test | ||
|  | [ 1 ] [ <unrolled-list> 1 over push-back pop-front ] unit-test | ||
|  | [ 1 ] [ <unrolled-list> 1 over push-back pop-back ] unit-test | ||
|  | 
 | ||
|  | [ 1 2 ] [ | ||
|  |     <unrolled-list> 1 over push-back 2 over push-back | ||
|  |     [ pop-front ] [ pop-front ] bi
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ 2 1 ] [ | ||
|  |     <unrolled-list> 1 over push-back 2 over push-back | ||
|  |     [ pop-back ] [ pop-back ] bi
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ 1 2 3 ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-back | ||
|  |     2 over push-back | ||
|  |     3 over push-back | ||
|  |     [ pop-front ] [ pop-front ] [ pop-front ] tri
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ 3 2 1 ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-back | ||
|  |     2 over push-back | ||
|  |     3 over push-back | ||
|  |     [ pop-back ] [ pop-back ] [ pop-back ] tri
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 } ] [ | ||
|  |     <unrolled-list> | ||
|  |     32 [ over push-front ] each
 | ||
|  |     32 [ dup pop-back ] replicate
 | ||
|  |     nip
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 } ] [ | ||
|  |     <unrolled-list> | ||
|  |     32 [ over push-front ] each
 | ||
|  |     32 [ dup pop-front ] replicate reverse
 | ||
|  |     nip
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1000 [ 1000 random ] replicate
 | ||
|  |     [ [ over push-front ] each ] | ||
|  |     [ [ dup pop-back ] replicate ] | ||
|  |     [ ] | ||
|  |     tri
 | ||
|  |     =
 | ||
|  |     nip
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1000 [ 1000 random ] replicate
 | ||
|  |     [ | ||
|  |         10 group [ | ||
|  |             [ [ over push-front ] each ] | ||
|  |             [ [ dup pop-back ] replicate ] | ||
|  |             bi  | ||
|  |         ] map concat
 | ||
|  |     ] keep
 | ||
|  |     =
 | ||
|  |     nip
 | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ <unrolled-list> deque-empty? ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-front | ||
|  |     dup pop-front* | ||
|  |     deque-empty? | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-back | ||
|  |     dup pop-front* | ||
|  |     deque-empty? | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-front | ||
|  |     dup pop-back* | ||
|  |     deque-empty? | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     1 over push-back | ||
|  |     dup pop-back* | ||
|  |     deque-empty? | ||
|  | ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ | ||
|  |     <unrolled-list> | ||
|  |     21 over push-front | ||
|  |     22 over push-front | ||
|  |     25 over push-front | ||
|  |     26 over push-front | ||
|  |     dup pop-back 21 assert=
 | ||
|  |     28 over push-front | ||
|  |     dup pop-back 22 assert=
 | ||
|  |     29 over push-front | ||
|  |     dup pop-back 25 assert=
 | ||
|  |     24 over push-front | ||
|  |     dup pop-back 26 assert=
 | ||
|  |     23 over push-front | ||
|  |     dup pop-back 28 assert=
 | ||
|  |     dup pop-back 29 assert=
 | ||
|  |     dup pop-back 24 assert=
 | ||
|  |     17 over push-front | ||
|  |     dup pop-back 23 assert=
 | ||
|  |     27 over push-front | ||
|  |     dup pop-back 17 assert=
 | ||
|  |     30 over push-front | ||
|  |     dup pop-back 27 assert=
 | ||
|  |     dup pop-back 30 assert=
 | ||
|  |     deque-empty? | ||
|  | ] unit-test |