Add test scenario
This commit is contained in:
		
							
								
								
									
										44
									
								
								central_backend/engine_test/test_conflict.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								central_backend/engine_test/test_conflict.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
devices:
 | 
			
		||||
  - id: dev1
 | 
			
		||||
    info:
 | 
			
		||||
      reference: A
 | 
			
		||||
      version: 0.0.1
 | 
			
		||||
      max_relays: 1
 | 
			
		||||
    time_create: 1
 | 
			
		||||
    time_update: 1
 | 
			
		||||
    name: Dev1
 | 
			
		||||
    description: Day1
 | 
			
		||||
    validated: true
 | 
			
		||||
    enabled: true
 | 
			
		||||
    relays:
 | 
			
		||||
      - id: dcb3fd91-bf9b-4de3-99e5-92c1c7dd72e9
 | 
			
		||||
        name: R1
 | 
			
		||||
        enabled: true
 | 
			
		||||
        priority: 1
 | 
			
		||||
        consumption: 100
 | 
			
		||||
        minimal_uptime: 10
 | 
			
		||||
        minimal_downtime: 10
 | 
			
		||||
        depends_on: []
 | 
			
		||||
        conflicts_with: []
 | 
			
		||||
 | 
			
		||||
        on: true
 | 
			
		||||
        for: 5
 | 
			
		||||
        should_be_on: true
 | 
			
		||||
 | 
			
		||||
      - id: dcb3fd91-bf9b-4de3-99e5-92c1c7dd72e8
 | 
			
		||||
        name: R2
 | 
			
		||||
        enabled: true
 | 
			
		||||
        priority: 1
 | 
			
		||||
        consumption: 100
 | 
			
		||||
        minimal_uptime: 10
 | 
			
		||||
        minimal_downtime: 10
 | 
			
		||||
        depends_on: [ ]
 | 
			
		||||
        conflicts_with: [ dcb3fd91-bf9b-4de3-99e5-92c1c7dd72e9 ]
 | 
			
		||||
 | 
			
		||||
        on: false
 | 
			
		||||
        for: 500
 | 
			
		||||
        should_be_on: false
 | 
			
		||||
 | 
			
		||||
    online: true
 | 
			
		||||
 | 
			
		||||
curr_consumption: -10000
 | 
			
		||||
@@ -378,6 +378,7 @@ mod test {
 | 
			
		||||
    use crate::energy::consumption::EnergyConsumption;
 | 
			
		||||
    use crate::energy::engine::EnergyEngine;
 | 
			
		||||
    use crate::utils::time_utils::time_secs;
 | 
			
		||||
    use rust_embed::Embed;
 | 
			
		||||
 | 
			
		||||
    #[derive(serde::Deserialize)]
 | 
			
		||||
    struct TestRelayState {
 | 
			
		||||
@@ -442,22 +443,38 @@ mod test {
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn run_test(conf: &str) {
 | 
			
		||||
    fn run_test(name: &str, conf: &str) {
 | 
			
		||||
        let (devices, mut energy_engine, consumption, states) = parse_test_config(conf);
 | 
			
		||||
 | 
			
		||||
        energy_engine.refresh(consumption, &devices);
 | 
			
		||||
 | 
			
		||||
        for d in states {
 | 
			
		||||
            for r in d.relays {
 | 
			
		||||
                assert_eq!(energy_engine.relay_state(r.id).on, r.should_be_on);
 | 
			
		||||
        for (device_s, device) in states.iter().zip(&devices) {
 | 
			
		||||
            for (relay_s, relay) in device_s.relays.iter().zip(&device.relays) {
 | 
			
		||||
                let is_on = energy_engine.relay_state(relay_s.id).on;
 | 
			
		||||
 | 
			
		||||
                assert_eq!(
 | 
			
		||||
                    energy_engine.relay_state(relay_s.id).on,
 | 
			
		||||
                    relay_s.should_be_on,
 | 
			
		||||
                    "For test {name} on relay {} got state {is_on} instead of {}",
 | 
			
		||||
                    relay.name,
 | 
			
		||||
                    relay_s.should_be_on
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_basic_conf() {
 | 
			
		||||
        run_test(include_str!("../../engine_test/test_basic_conf.yaml"))
 | 
			
		||||
    }
 | 
			
		||||
    #[derive(Embed)]
 | 
			
		||||
    #[folder = "engine_test/"]
 | 
			
		||||
    struct Asset;
 | 
			
		||||
 | 
			
		||||
    // TODO : test more scenarios
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_confs() {
 | 
			
		||||
        for file in Asset::iter() {
 | 
			
		||||
            let content = Asset::get(&file).unwrap();
 | 
			
		||||
 | 
			
		||||
            log::info!("Testing {file}");
 | 
			
		||||
 | 
			
		||||
            run_test(&file, &String::from_utf8(content.data.to_vec()).unwrap())
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user