summaryrefslogtreecommitdiff
path: root/tests/test_parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_parser.rs')
-rw-r--r--tests/test_parser.rs47
1 files changed, 28 insertions, 19 deletions
diff --git a/tests/test_parser.rs b/tests/test_parser.rs
index c619745..e33cdfa 100644
--- a/tests/test_parser.rs
+++ b/tests/test_parser.rs
@@ -52,43 +52,36 @@ fn test_complex_annotations() {
}
const program: &'static str =
-"func foo() =
- bar
- if this:
+"func foo(x): (int -> int) =
+ if this =
that
- else:
+ else =
this
hello
foo
bar
baz
-func foo =
+func foo: (bool -> int) =
this
- if that:
- then this
";
const lexed: &'static str =
-"func foo() = {
- bar;
- if this: {
+"func foo(x): (int -> int) = {
+ if this = {
that;
- }
- else: {
+ };
+ else = {
this;
- }
-}
+ };
+};
hello;
foo;
bar;
baz;
-func foo = {
+func foo: (bool -> int) = {
this;
- if that: {
- then this;
- }
-}";
+};";
#[test]
fn test_lexer() {
@@ -96,3 +89,19 @@ fn test_lexer() {
assert!(result.is_ok());
assert_eq!(result.unwrap(), lexed);
}
+
+#[test]
+fn test_parser() {
+ let result = parse_lang(lexed);
+ assert!(result.is_err());
+
+ let file = std::fs::read_to_string("tests/src/negate.nim");
+ assert!(file.is_ok());
+ let result = parse_lang(&file.unwrap());
+ assert!(result.is_err());
+
+ let file = std::fs::read_to_string("tests/src/fib.nim");
+ assert!(file.is_ok());
+ let result = parse_lang(&file.unwrap());
+ assert!(result.is_err());
+}