| 
									
										
										
										
											2008-11-06 20:09:51 -05:00
										 |  |  | ! Copyright (C) 2005 Chris Double, 2007 Clemens Hofreither, 2008 James Cash. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-03-01 17:00:45 -05:00
										 |  |  | IN: coroutines.tests | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | USING: coroutines kernel sequences prettyprint tools.test math ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : test1 ( -- co )
 | 
					
						
							|  |  |  |   [ drop 1 coyield* 2 coyield* 3 coterminate ] cocreate ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : test2 ( -- co )
 | 
					
						
							|  |  |  |   [ 1+ coyield* ] cocreate ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test1 dup *coresume . dup *coresume . dup *coresume . dup *coresume 2drop
 | 
					
						
							| 
									
										
										
										
											2008-02-06 14:47:19 -05:00
										 |  |  | [ test2 42 over coresume . dup *coresume . drop ] must-fail | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | { 43 } [ 42 test2 coresume ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : test3 ( -- co )
 | 
					
						
							|  |  |  |   [ [ coyield* ] each ] cocreate ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-17 23:29:32 -05:00
										 |  |  | { "c" "b" "a" } [ test3 { "a" "b" "c" } over coresume [ dup *coresume [ *coresume ] dip ] dip ] unit-test | 
					
						
							| 
									
										
										
										
											2008-11-06 20:01:31 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | { 4+2/3 } [ [ 1+ coyield 2 * coyield 3 / coreset ] cocreate 1 5 [ over coresume ] times nip ] unit-test |