55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Factor
		
	
	
| USING: concurrency.mailboxes concurrency.count-downs concurrency.conditions
 | |
| vectors sequences threads tools.test math kernel strings namespaces
 | |
| continuations calendar destructors ;
 | |
| IN: concurrency.mailboxes.tests
 | |
| 
 | |
| { 1 1 } [ [ integer? ] mailbox-get? ] must-infer-as
 | |
| 
 | |
| [ V{ 1 2 3 } ] [
 | |
|     0 <vector>
 | |
|     <mailbox>
 | |
|     [ mailbox-get swap push ] in-thread
 | |
|     [ mailbox-get swap push ] in-thread
 | |
|     [ mailbox-get swap push ] in-thread
 | |
|     1 over mailbox-put
 | |
|     2 over mailbox-put
 | |
|     3 swap mailbox-put
 | |
| ] unit-test
 | |
| 
 | |
| [ V{ 1 2 3 } ] [
 | |
|     0 <vector>
 | |
|     <mailbox>
 | |
|     [ [ integer? ] mailbox-get? swap push ] in-thread
 | |
|     [ [ integer? ] mailbox-get? swap push ] in-thread
 | |
|     [ [ integer? ] mailbox-get? swap push ] in-thread
 | |
|     1 over mailbox-put
 | |
|     2 over mailbox-put
 | |
|     3 swap mailbox-put
 | |
| ] unit-test
 | |
| 
 | |
| [ V{ 1 "junk" 3 "junk2" } [ 456 ] ] [
 | |
|     0 <vector>
 | |
|     <mailbox>
 | |
|     [ [ integer? ] mailbox-get? swap push ] in-thread
 | |
|     [ [ integer? ] mailbox-get? swap push ] in-thread
 | |
|     [ [ string? ] mailbox-get? swap push ] in-thread
 | |
|     [ [ string? ] mailbox-get? swap push ] in-thread
 | |
|     1 over mailbox-put
 | |
|     "junk" over mailbox-put
 | |
|     [ 456 ] over mailbox-put
 | |
|     3 over mailbox-put
 | |
|     "junk2" over mailbox-put
 | |
|     mailbox-get
 | |
| ] unit-test
 | |
| 
 | |
| [ { "foo" "bar" } ] [
 | |
|     <mailbox>
 | |
|     "foo" over mailbox-put
 | |
|     "bar" over mailbox-put
 | |
|     mailbox-get-all
 | |
| ] unit-test
 | |
| 
 | |
| [
 | |
|     <mailbox> 1 seconds mailbox-get-timeout
 | |
| ] [ wait-timeout? ] must-fail-with
 |