diff --git a/src/main.rs b/src/main.rs index 692b899..360b4de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use std::{error::Error, io}; +use std::io; #[derive(Debug, PartialEq, Eq)] enum Symbol { @@ -20,6 +20,21 @@ enum Node { Number { value: u64 }, } +#[test] +fn test_eval() { + let node_to_eval = Node::Add { + left: Box::new(Node::Add { + left: Box::new(Node::Number { value: 1 }), + right: Box::new(Node::Number { value: 1 }), + }), + right: Box::new(Node::Number { value: 3 }), + }; + + let result = eval(&node_to_eval); + + assert!(result == 5 as i64); +} + fn eval(expr: &Node) -> i64 { match expr { Node::Add { left, right } => eval(left) + eval(right), @@ -158,13 +173,10 @@ fn ast(input: Vec) -> Result { let mut i = 0; while i < length { - // println!("Count: {}", i); let s = &input[i]; - // println!("Symbol: {:?}", s); match s { Symbol::Number { value } => { stack.push(Node::Number { value: *value }); - // println!("pushed {value}") } Symbol::Add => { let left = stack.pop(); @@ -199,8 +211,6 @@ fn ast(input: Vec) -> Result { } i += 1; } - // println!("Stack length: {}", stack.len()); - // println!("Stack: {:?}", stack); if stack.len() != 1 { return Err(ParseError::WrongTokenError { pos: 1 }); }