diff --git a/integration_tests/comparisons_test.ucg b/integration_tests/comparisons_test.ucg new file mode 100644 index 0000000..70a8e99 --- /dev/null +++ b/integration_tests/comparisons_test.ucg @@ -0,0 +1,56 @@ +// Simple Comparisons +let one = 1; +let two = 2; +let foo = "foo"; +let bar = "bar"; +let tpl1 = { + foo = "bar", + one = 1 +}; +let tpl2 = tpl1{}; +let tpl3 = { + bar = "foo", + two = 1 +}; +let list = [1, 2, 3]; +let list2 = list; +let list3 = [1, 2]; + +assert "one == one"; +assert "one == one"; +assert "one >= one"; +assert "two > one"; +assert "two >= two"; +assert "tpl1 == tpl2"; +assert "tpl1 != tpl3"; +assert "list == list2"; +assert "list != list3"; + +// Deep Comparisons +let tpl4 = { + foo = "bar", + lst = [1, 2, 3], + inner = { + fld = "value", + } +}; +let copy = tpl4; +let extra = tpl4{one = 1}; +let less = { + foo = "bar" +}; + +assert "tpl4.inner == copy.inner"; +assert "tpl4.inner.fld == copy.inner.fld"; +assert "tpl4.lst == copy.lst"; +assert "tpl4.foo == copy.foo"; +assert "tpl4 == copy"; +assert "tpl4 != extra"; +assert "tpl4 != less"; + +// Expression comparisons +assert "2 == 1+1"; +assert "(1+1) == 2"; +assert "(1+1) == (1+1)"; +let want = "foo"; +assert "select want, 1, { foo=2, } == 2"; \ No newline at end of file diff --git a/integration_tests/empty_test.ucg b/integration_tests/empty_test.ucg new file mode 100644 index 0000000..331b4af --- /dev/null +++ b/integration_tests/empty_test.ucg @@ -0,0 +1,5 @@ +let empty = NULL; +let tpl = { + foo = NULL, +}; +assert "tpl.foo == empty"; \ No newline at end of file diff --git a/integration_tests/operator_precedence_test.ucg b/integration_tests/operator_precedence_test.ucg new file mode 100644 index 0000000..384bedd --- /dev/null +++ b/integration_tests/operator_precedence_test.ucg @@ -0,0 +1,7 @@ +assert "2 * 2 + 1 == 5"; +assert "2 + 2 * 3 == 8"; +assert "2 * (2 + 1) == 6"; +assert "2 * 2 + 1 > 4"; +assert "2 * 2 + 1 > 6"; +assert "2 * 2 + 1 >= 5"; +assert "2 * 2 + 1 <= 5"; \ No newline at end of file diff --git a/src/build/compile_test.rs b/src/build/compile_test.rs index 6180f9a..5ffaf68 100644 --- a/src/build/compile_test.rs +++ b/src/build/compile_test.rs @@ -30,97 +30,27 @@ fn assert_build(input: &str) { #[test] fn test_comparisons() { - assert_build( - "let one = 1; - let two = 2; - let foo = \"foo\"; - let bar = \"bar\"; - let tpl1 = { - foo = \"bar\", - one = 1 - }; - let tpl2 = tpl1{}; - let tpl3 = { - bar = \"foo\", - two = 1 - }; - let list = [1, 2, 3]; - let list2 = list; - let list3 = [1, 2]; - assert \"one == one\"; - assert \"one == one\"; - assert \"one >= one\"; - assert \"two > one\"; - assert \"two >= two\"; - assert \"tpl1 == tpl2\"; - assert \"tpl1 != tpl3\"; - assert \"list == list2\"; - assert \"list != list3\"; - ", - ); + assert_build(include_str!("../../integration_tests/comparisons_test.ucg")); +} + +#[test] +fn test_macros() { + assert_build(include_str!("../../integration_tests/macros_test.ucg")); +} + +#[test] +fn test_selectors() { + assert_build(include_str!("../../integration_tests/selectors_test.ucg")); } #[test] fn test_empty_value() { - assert_build( - "let empty = NULL; - let tpl = { - foo = NULL, - }; - assert \"tpl.foo == empty\"; - ", - ); -} - -#[test] -fn test_deep_comparison() { - assert_build( - "let tpl1 = { - foo = \"bar\", - lst = [1, 2, 3], - inner = { - fld = \"value\", - } - }; - let copy = tpl1; - let extra = tpl1{one = 1}; - let less = { - foo = \"bar\" - }; - assert \"tpl1.inner == copy.inner\"; - assert \"tpl1.inner.fld == copy.inner.fld\"; - assert \"tpl1.lst == copy.lst\"; - assert \"tpl1.foo == copy.foo\"; - assert \"tpl1 == copy\"; - assert \"tpl1 != extra\"; - assert \"tpl1 != less\"; - ", - ); -} - -#[test] -fn test_expression_comparisons() { - assert_build("assert \"2 == 1+1\";"); - assert_build("assert \"(1+1) == 2\";"); - assert_build("assert \"(1+1) == (1+1)\";"); - assert_build( - "let want = \"foo\"; - assert \"select want, 1, { foo=2, } == 2\";", - ); + assert_build(include_str!("../../integration_tests/empty_test.ucg")); } #[test] fn test_binary_operator_precedence() { - assert_build( - "let result = 2 * 2 + 1; - assert \"result == 5\";", - ); - assert_build( - "let result = 2 + 2 * 3; - assert \"result == 8\";", - ); - assert_build( - "let result = 2 * (2 + 1); - assert \"result == 6\";", - ); + assert_build(include_str!( + "../../integration_tests/operator_precedence_test.ucg" + )); }