sync: Test Gate
This commit is contained in:
		
							parent
							
								
									597e3189ca
								
							
						
					
					
						commit
						b5044de085
					
				
							
								
								
									
										52
									
								
								sync/gate_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								sync/gate_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| package usync | ||||
| 
 | ||||
| import "time" | ||||
| import "testing" | ||||
| 
 | ||||
| func TestGate(test *testing.T) { | ||||
| 	gate := NewGate[int]() | ||||
| 	go func() { | ||||
| 		for number := range 21 { | ||||
| 			test.Log("send", number) | ||||
| 			gate.Send(number) | ||||
| 		} | ||||
| 		test.Log("send done") | ||||
| 	}() | ||||
| 	for correct := range 21 { | ||||
| 		got := <- gate.Receive() | ||||
| 		test.Log("RECV", correct, got) | ||||
| 		if correct != got { | ||||
| 			test.Fatal("RECV not equal") | ||||
| 		} | ||||
| 	} | ||||
| 	test.Log("RECV done") | ||||
| } | ||||
| 
 | ||||
| func TestGateCloseEarly(test *testing.T) { | ||||
| 	gate := NewGate[int]() | ||||
| 	sendDone := make(chan struct { }) | ||||
| 	go func() { | ||||
| 		for number := range 21 { | ||||
| 			test.Log("send", number) | ||||
| 			gate.Send(number) | ||||
| 		} | ||||
| 		test.Log("send done") | ||||
| 		close(sendDone) | ||||
| 	}() | ||||
| 	for correct := range 15 { | ||||
| 		got := <- gate.Receive() | ||||
| 		test.Log("RECV", correct, got) | ||||
| 		if correct != got { | ||||
| 			test.Fatal("RECV not equal") | ||||
| 		} | ||||
| 	} | ||||
| 	test.Log("RECV done, closing gate... DOOR STUCK!! PLS I BEG OF YOU!!") | ||||
| 	gate.Close() | ||||
| 	test.Log("RECV closed gate yay :)))") | ||||
| 	timeout := time.NewTimer(time.Second * 4) | ||||
| 	select { | ||||
| 	case <- sendDone: | ||||
| 	case <- timeout.C: | ||||
| 		test.Fatal("timed out waiting for sender goroutine to stop") | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user