| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | USING: tools.test concurrency.flags concurrency.combinators | 
					
						
							|  |  |  | kernel threads locals accessors calendar ;
 | 
					
						
							|  |  |  | IN: concurrency.flags.tests | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :: flag-test-1 ( -- val )
 | 
					
						
							|  |  |  |     <flag> :> f
 | 
					
						
							|  |  |  |     [ f raise-flag ] "Flag test" spawn drop
 | 
					
						
							|  |  |  |     f lower-flag | 
					
						
							|  |  |  |     f value>> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { f } [ flag-test-1 ] unit-test | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | :: flag-test-2 ( -- ? )
 | 
					
						
							|  |  |  |     <flag> :> f
 | 
					
						
							|  |  |  |     [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop
 | 
					
						
							|  |  |  |     f lower-flag | 
					
						
							|  |  |  |     f value>> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { f } [ flag-test-2 ] unit-test | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | :: flag-test-3 ( -- val )
 | 
					
						
							|  |  |  |     <flag> :> f
 | 
					
						
							|  |  |  |     f raise-flag | 
					
						
							|  |  |  |     f value>> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { t } [ flag-test-3 ] unit-test | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | :: flag-test-4 ( -- val )
 | 
					
						
							|  |  |  |     <flag> :> f
 | 
					
						
							|  |  |  |     [ f raise-flag ] "Flag test" spawn drop
 | 
					
						
							|  |  |  |     f wait-for-flag | 
					
						
							|  |  |  |     f value>> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { t } [ flag-test-4 ] unit-test | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | :: flag-test-5 ( -- val )
 | 
					
						
							|  |  |  |     <flag> :> f
 | 
					
						
							|  |  |  |     [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop
 | 
					
						
							|  |  |  |     f wait-for-flag | 
					
						
							|  |  |  |     f value>> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { t } [ flag-test-5 ] unit-test | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  |     { 1 2 } <flag> | 
					
						
							|  |  |  |     [ [ 1 seconds sleep raise-flag ] curry "Flag test" spawn drop ] | 
					
						
							|  |  |  |     [ [ wait-for-flag drop ] curry parallel-each ] bi
 | 
					
						
							|  |  |  | ] unit-test |