//! Tests for pretty-printing expressions. use expy::prettify; #[test] fn single_value() { assert_eq!(prettify("42").unwrap(), "42"); assert_eq!(prettify("true").unwrap(), "true"); assert_eq!(prettify("foo").unwrap(), "foo"); assert_eq!(prettify("@bar").unwrap(), "@bar"); } #[test] fn unary_expression() { assert_eq!(prettify("-55").unwrap(), "-55"); // noop assert_eq!(prettify("- 66 ").unwrap(), "-66"); } #[test] fn binary_expression() { assert_eq!(prettify("3 * 2").unwrap(), "3 * 2"); // noop assert_eq!(prettify("3.4 *7").unwrap(), "3.4 * 7"); assert_eq!(prettify("12e6/ 4").unwrap(), "12e6 / 4"); assert_eq!(prettify("17-5").unwrap(), "17 - 5"); assert_eq!(prettify("1+2+3+4+5").unwrap(), "1 + 2 + 3 + 4 + 5"); assert_eq!(prettify("2==2||3>1").unwrap(), "2 == 2 || 3 > 1"); } #[test] fn function_call() { assert_eq!(prettify("foo()").unwrap(), "foo()"); // noop assert_eq!(prettify("foo ()").unwrap(), "foo()"); assert_eq!(prettify("foo( )").unwrap(), "foo()"); assert_eq!(prettify("foo ( )").unwrap(), "foo()"); assert_eq!(prettify("foo(42)").unwrap(), "foo(42)"); // noop assert_eq!(prettify("foo( 42 )").unwrap(), "foo(42)"); assert_eq!(prettify("foo(42 )").unwrap(), "foo(42)"); assert_eq!(prettify("foo( 42)").unwrap(), "foo(42)"); assert_eq!(prettify("foo (42)").unwrap(), "foo(42)"); assert_eq!(prettify("foo(42, 69)").unwrap(), "foo(42, 69)"); // noop assert_eq!(prettify("foo(42,69)").unwrap(), "foo(42, 69)"); assert_eq!(prettify("foo( 42, 69 )").unwrap(), "foo(42, 69)"); assert_eq!(prettify("foo(42, 69 )").unwrap(), "foo(42, 69)"); assert_eq!(prettify("foo ( 42 , 69 )").unwrap(), "foo(42, 69)"); } // TODO subscript tests #[test] fn member_access() { assert_eq!(prettify("foo.bar").unwrap(), "foo.bar"); // noop assert_eq!(prettify("foo. bar").unwrap(), "foo.bar"); assert_eq!(prettify("foo .bar").unwrap(), "foo.bar"); assert_eq!(prettify("foo . bar").unwrap(), "foo.bar"); assert_eq!(prettify("( foo ).bar").unwrap(), "(foo).bar"); assert_eq!(prettify("foo.bar.baz").unwrap(), "foo.bar.baz"); // noop assert_eq!(prettify("foo .bar. baz").unwrap(), "foo.bar.baz"); assert_eq!(prettify("foo. bar .baz").unwrap(), "foo.bar.baz"); assert_eq!(prettify("foo . bar . baz").unwrap(), "foo.bar.baz"); } #[test] fn parentheses() { assert_eq!(prettify("1 + (2 + 3)").unwrap(), "1 + (2 + 3)"); // noop assert_eq!(prettify("1 + ( 2 + 3 )").unwrap(), "1 + (2 + 3)"); assert_eq!(prettify("1 + ( 2 + 3 )").unwrap(), "1 + (2 + 3)"); assert_eq!(prettify("1+(2+3)").unwrap(), "1 + (2 + 3)"); assert_eq!(prettify("((((((1 + (2 + 3)))))))").unwrap(), "((((((1 + (2 + 3)))))))"); // noop assert_eq!(prettify("( ( ( ( 42))))").unwrap(), "((((42))))"); } #[test] fn mixed_scalars() { assert_eq!(prettify("foo(3 + foo(42))").unwrap(), "foo(3 + foo(42))"); // noop assert_eq!( prettify("foo( 6.7,100, foo(0.33 , foo( ) ) )").unwrap(), "foo(6.7, 100, foo(0.33, foo()))"); assert_eq!(prettify("( 0 * 8888)/foo( 9^(2 + 0))").unwrap(), "(0 * 8888) / foo(9^(2 + 0))"); } #[cfg(glam)] #[test] fn vectors() { assert_eq!(prettify("[1, 2]").unwrap(), "[1, 2]"); // noop assert_eq!(prettify("[32., 42.]").unwrap(), "[32., 42.]"); // noop assert_eq!(prettify("[ 454, 987 ]").unwrap(), "[454, 987]"); }