hydro2_basic_operators/
single_value_test_op.rs

1// ---------------- [ File: src/single_value_test_op.rs ]
2crate::ix!();
3
4// --------------------------------------
5// SingleValOp
6// --------------------------------------
7#[derive(NamedItem, Operator, Debug)]
8#[operator(
9    execute="produce_val",
10    opcode="BasicOpCode::SingleValueTestOp",
11    output0="i32"
12)]
13pub struct SingleValOp {
14    name: String,
15    val:  i32,
16}
17
18impl Default for SingleValOp {
19
20    fn default() -> Self {
21        Self {
22            name: "SingleValOp".to_string(),
23            val:  777,
24        }
25    }
26}
27
28impl SingleValOp {
29
30    async fn produce_val(&self) -> NetResult<i32> {
31        info!("SingleValOp => produce {}", self.val);
32        Ok(self.val)
33    }
34}
35
36#[cfg(test)]
37mod single_val_op_tests {
38    use super::*;
39
40    #[tokio::test]
41    async fn test_single_val_op_produces_777() -> Result<(), NetworkError> {
42        let op = SingleValOp::default();
43        let input: [Option<&SingleValOpIO>;4] = [None,None,None,None];
44        let mut out: [Option<SingleValOpIO>;4] = [None,None,None,None];
45
46        op.execute(input, &mut out).await?;
47        assert_eq!(out[0], Some(SingleValOpIO::Output0(777)));
48        Ok(())
49    }
50}