Add a few more ProgramRunner tests
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									690a165950
								
							
						
					
					
						commit
						6d33b7ed50
					
				| @ -531,4 +531,107 @@ mod test { | ||||
|         sec_runner.quit().await.unwrap(); | ||||
|         yield_now().await; | ||||
|     } | ||||
| 
 | ||||
|     #[tokio::test] | ||||
|     async fn test_close_event_chan() { | ||||
|         let (sections, mut sec_runner, _) = make_sections_and_runner(); | ||||
|         let mut runner = ProgramRunner::new(sec_runner.clone()); | ||||
|         let mut prog_events = runner.subscribe().await.unwrap(); | ||||
| 
 | ||||
|         let program: ProgramRef = Program { | ||||
|             id: 1, | ||||
|             name: "Program 1".into(), | ||||
|             sequence: vec![], | ||||
|         } | ||||
|         .into(); | ||||
| 
 | ||||
|         runner.update_sections(sections.clone()).await.unwrap(); | ||||
| 
 | ||||
|         runner.run_program(program.clone()).await.unwrap(); | ||||
|         prog_events.recv().await.unwrap(); | ||||
|         prog_events.recv().await.unwrap(); | ||||
|         // Make sure it doesn't panic when the events channel is dropped
 | ||||
|         drop(prog_events); | ||||
|         yield_now().await; | ||||
|         runner.run_program(program).await.unwrap(); | ||||
|         yield_now().await; | ||||
| 
 | ||||
|         runner.quit().await.unwrap(); | ||||
|         sec_runner.quit().await.unwrap(); | ||||
|         yield_now().await; | ||||
|     } | ||||
| 
 | ||||
|     #[tokio::test] | ||||
|     async fn test_run_program_id() { | ||||
|         let (sections, mut sec_runner, _) = make_sections_and_runner(); | ||||
|         let mut runner = ProgramRunner::new(sec_runner.clone()); | ||||
|         let mut prog_events = runner.subscribe().await.unwrap(); | ||||
| 
 | ||||
|         let program1: ProgramRef = Program { | ||||
|             id: 1, | ||||
|             name: "Program 1".into(), | ||||
|             sequence: vec![ | ||||
|                 ProgramItem { | ||||
|                     section_id: 2, | ||||
|                     duration: Duration::from_secs(10), | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
|         .into(); | ||||
|         let program2: ProgramRef = Program { | ||||
|             id: 2, | ||||
|             name: "Program 2".into(), | ||||
|             sequence: vec![ | ||||
|                 ProgramItem { | ||||
|                     section_id: 2, | ||||
|                     duration: Duration::from_secs(10), | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
|         .into(); | ||||
|         let programs = ordmap![ 1 => program1, 2 => program2 ]; | ||||
| 
 | ||||
|         runner.update_sections(sections.clone()).await.unwrap(); | ||||
|         runner.update_programs(programs).await.unwrap(); | ||||
| 
 | ||||
|         // First try a non-existant program id
 | ||||
|         runner.run_program_id(3).await.unwrap(); | ||||
|         yield_now().await; | ||||
|         assert!(matches!( | ||||
|             prog_events.try_recv(), | ||||
|             Err(broadcast::TryRecvError::Empty) | ||||
|         )); | ||||
| 
 | ||||
|         runner.run_program_id(1).await.unwrap(); | ||||
|         yield_now().await; | ||||
|         assert!(matches!( | ||||
|             prog_events.try_recv().unwrap(), | ||||
|             ProgramEvent::RunStart(prog) | ||||
|             if prog.id == 1 | ||||
|         )); | ||||
| 
 | ||||
|         tokio::time::pause(); | ||||
|         assert!(matches!( | ||||
|             prog_events.recv().await.unwrap(), | ||||
|             ProgramEvent::RunFinish(prog) | ||||
|             if prog.id == 1 | ||||
|         )); | ||||
|         runner.run_program_id(1).await.unwrap(); | ||||
|         yield_now().await; | ||||
|         assert!(matches!( | ||||
|             prog_events.try_recv().unwrap(), | ||||
|             ProgramEvent::RunStart(prog) | ||||
|             if prog.id == 1 | ||||
|         )); | ||||
| 
 | ||||
|         assert!(matches!( | ||||
|             prog_events.recv().await.unwrap(), | ||||
|             ProgramEvent::RunFinish(prog) | ||||
|             if prog.id == 1 | ||||
|         )); | ||||
| 
 | ||||
|         runner.quit().await.unwrap(); | ||||
|         sec_runner.quit().await.unwrap(); | ||||
|         yield_now().await; | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user