hyeong 0.1.0

Hyeo-ung Programming Language Compiler
Documentation
#[cfg(test)]
mod code_test {
    use hyeong::code::Code;
    use hyeong::state::{State, UnOptState};
    use hyeong::{execute, io, optimize, parse};

    #[test]
    fn area_test01() {
        let t = format!(
            "{:?}",
            parse::parse("하아앗..? 흑..".to_string())[0].get_area()
        );
        assert_eq!("?__", t);
    }

    #[test]
    fn area_test02() {
        let t = format!(
            "{:?}",
            parse::parse("혀엉... 핫... 형..! 흑..".to_string())[2].get_area()
        );
        assert_eq!("!__", t);
    }

    #[test]
    fn un_opt_code_to_string_test01() {
        let t = format!("{:?}", parse::parse("".to_string())[0].to_string());
        assert_eq!("\"\\u{1b}[33m1:0\\u{1b}[0m 형_1_0 : _\"".to_string(), t);
    }

    #[test]
    fn un_opt_code_to_string_test02() {
        let t = format!("{:?}", parse::parse("하앗..".to_string())[0].to_string());
        assert_eq!("\"\\u{1b}[33m1:0\\u{1b}[0m 핫_2_2 : _\"".to_string(), t);
    }

    #[test]
    fn un_opt_code_get_raw_test01() {
        let t = parse::parse("형..".to_string())[0].get_raw();
        assert_eq!("형..", t);
    }

    #[test]
    fn un_opt_code_get_raw_test02() {
        let t = parse::parse("형..핫...".to_string())[0].get_raw();
        assert_eq!("형..", t);
    }

    #[test]
    fn un_opt_code_get_loc_test01() {
        let t1 = parse::parse("하앙..".to_string())[0].get_location();
        let t2 = (1, 0);
        assert_eq!(t1, t2);
    }

    #[test]
    fn un_opt_code_get_loc_test02() {
        let t1 = parse::parse("하아앗..💖 흑..".to_string())[0].get_location();
        let t2 = (1, 0);
        assert_eq!(t1, t2);
    }

    #[test]
    fn un_opt_state_test01() {
        let parsed = &parse::parse("형. 하앙...".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t1 = (state.get_all_stack_index()[0], state.stack_size());
        let t2 = (3, 1);
        assert_eq!(t1, t2);
    }

    #[test]
    fn un_opt_state_test02() {
        let parsed = &parse::parse("형. 하앙...".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t = format!("{:?}", state.get_all_code());
        assert_eq!(t, "[type: 0, cnt1: 1, cnt2: 1, area: \"_\"]")
    }

    #[test]
    fn un_opt_state_test03() {
        let parsed = &parse::parse("형. 하앙...".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t = state.get_all_point().len();
        assert_eq!(t, 0);
    }

    #[test]
    fn un_opt_state_test04() {
        let parsed = &parse::parse("형. 하앙...".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t = format!("{:?}", state);
        assert_eq!(t, "current stack: 3\nstack 3: [1]\n");
    }

    #[test]
    fn un_opt_state_test05() {
        let parsed = &parse::parse("형..💖 항..💖".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t = state.get_all_point()[0];
        assert_eq!(t, (37, 0));
    }

    #[test]
    fn un_opt_state_test06() {
        let parsed = &parse::parse("형..💖 항..💖".to_string())[0];
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let mut state = UnOptState::new();
        state = execute::execute(&mut ipt, &mut out, &mut err, state, parsed);
        let t = format!("{:?}", state);
        assert_eq!(t, "current stack: 3\nstack 3: [2]\n");
    }

    #[test]
    fn opt_state_test01() {
        let un_opt_code = parse::parse("흑 하앙...".to_string());
        let mut ipt = io::CustomReader::new("1 2".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let (mut opt_state, opt_code) = optimize::optimize(un_opt_code, 2);
        opt_state = execute::execute(&mut ipt, &mut out, &mut err, opt_state, &opt_code[0]);
        let t1 = (opt_state.get_all_stack_index()[1], opt_state.stack_size());
        let t2 = (1, 5);
        assert_eq!(t1, t2);
    }

    #[test]
    fn opt_state_test02() {
        let un_opt_code = parse::parse("흑 하앙...".to_string());
        let mut ipt = io::CustomReader::new("1 2".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let (mut opt_state, opt_code) = optimize::optimize(un_opt_code, 2);
        opt_state = execute::execute(&mut ipt, &mut out, &mut err, opt_state, &opt_code[0]);
        let t = opt_state.get_all_code()[0].get_type();
        assert_eq!(t, 5);
    }

    #[test]
    fn opt_state_test03() {
        let un_opt_code = parse::parse("형..💖 항..💖".to_string());
        let mut ipt = io::CustomReader::new("".to_string());
        let mut out = io::CustomWriter::new(|_| Result::Ok(()));
        let mut err = io::CustomWriter::new(|_| Result::Ok(()));
        let (mut opt_state, opt_code) = optimize::optimize(un_opt_code, 1);
        opt_state = execute::execute(&mut ipt, &mut out, &mut err, opt_state, &opt_code[0]);
        let t1 = opt_state.get_all_point()[0];
        let t2 = (37, 0);
        assert_eq!(t1, t2);
    }
}