chap 2.5.0

Chap is an easy to learn, interpretive, scripting language written in Rust
Documentation
use crate::builtin_function::utils::returns;
use crate::common::data_type::DataType;
use crate::common::errors::Result;
use crate::{common::executable::ExecutableLine, runtime::Runtime};

pub fn input(runtime: &mut Runtime, executable: &ExecutableLine) -> Result<()> {
    let inp = runtime.std_in();
    returns(runtime, executable, DataType::String(inp))
}

#[cfg(test)]
mod tests {
    use crate::{
        common::{data_type::DataType, executable::ExecutableLine},
        runtime::Runtime,
    };

    use super::input;

    #[test]
    fn input_test() {
        let mut runtime = Runtime::new(Box::new(|_| {}), Box::new(|| "test".to_string()));

        input(
            &mut runtime,
            &ExecutableLine::new(1, "".to_string(), vec![], Some("test_var".to_string())),
        )
        .unwrap();

        assert_eq!(
            runtime.variables.get("test_var").unwrap(),
            &DataType::String("test".to_string())
        )
    }
}