#![cfg(feature = "serde")] use evalexpr::{build_operator_tree, Node}; #[test] fn test_serde() { let strings = ["3", "4+4", "21^(2*2)--3>5||!true"]; for string in &strings { let manual_tree = build_operator_tree(string).unwrap(); let serde_tree: Node = ron::de::from_str(&format!("\"{}\"", string)).unwrap(); assert_eq!(manual_tree.eval(), serde_tree.eval()); } } #[test] fn test_serde_errors() { assert_eq!(ron::de::from_str::("[\"5==5\"]"), Err(ron::de::Error::Parser(ron::de::ParseError::ExpectedString, ron::de::Position{col:1,line:1}))); assert_eq!(ron::de::from_str::("\"&\""), Err(ron::de::Error::Message("Found a partial token '&' that should be followed by another partial token.".to_owned()))); }