Commit f08ce340319c77ccd9d3ffcb65ce67e80ca8371c

Golmote 2015-08-30T18:37:26

Add tests for Rust

diff --git a/tests/languages/rust/attribute_feature.test b/tests/languages/rust/attribute_feature.test
new file mode 100644
index 0000000..a3dac8a
--- /dev/null
+++ b/tests/languages/rust/attribute_feature.test
@@ -0,0 +1,13 @@
+#[test]
+#![warn(unstable)]
+
+----------------------------------------------------
+
+[
+	["attribute", "#[test]"],
+	["attribute", "#![warn(unstable)]"]
+]
+
+----------------------------------------------------
+
+Checks for attributes.
\ No newline at end of file
diff --git a/tests/languages/rust/closure-params_feature.test b/tests/languages/rust/closure-params_feature.test
new file mode 100644
index 0000000..83bf900
--- /dev/null
+++ b/tests/languages/rust/closure-params_feature.test
@@ -0,0 +1,30 @@
+|x: int, y: int| -> int {}
+|| {}
+
+----------------------------------------------------
+
+[
+	["closure-params", [
+		["punctuation", "|"],
+		"x",
+		["punctuation", ":"],
+		" int",
+		["punctuation", ","],
+		" y",
+		["punctuation", ":"],
+		" int",
+		["punctuation", "|"]
+	]],
+	["punctuation", "->"],
+	" int ", ["punctuation", "{"], ["punctuation", "}"],
+
+	["closure-params", [
+		["punctuation", "|"],
+		["punctuation", "|"]
+	]],
+	["punctuation", "{"], ["punctuation", "}"]
+]
+
+----------------------------------------------------
+
+Checks for closure params.
\ No newline at end of file
diff --git a/tests/languages/rust/comment_feature.test b/tests/languages/rust/comment_feature.test
new file mode 100644
index 0000000..9367028
--- /dev/null
+++ b/tests/languages/rust/comment_feature.test
@@ -0,0 +1,18 @@
+//
+// foobar
+/**/
+/* foo
+bar */
+
+----------------------------------------------------
+
+[
+	["comment", "//"],
+	["comment", "// foobar"],
+	["comment", "/**/"],
+	["comment", "/* foo\r\nbar */"]
+]
+
+----------------------------------------------------
+
+Checks for comments.
\ No newline at end of file
diff --git a/tests/languages/rust/function_feature.test b/tests/languages/rust/function_feature.test
new file mode 100644
index 0000000..63fcc8b
--- /dev/null
+++ b/tests/languages/rust/function_feature.test
@@ -0,0 +1,23 @@
+foo (
+foobar(
+foo_bar_42(
+
+foo! (
+foobar![
+foo_bar_42!(
+
+----------------------------------------------------
+
+[
+	["function", "foo"], ["punctuation", "("],
+	["function", "foobar"], ["punctuation", "("],
+	["function", "foo_bar_42"], ["punctuation", "("],
+
+	["function", "foo!"], ["punctuation", "("],
+	["function", "foobar!"], ["punctuation", "["],
+	["function", "foo_bar_42!"], ["punctuation", "("]
+]
+
+----------------------------------------------------
+
+Checks for functions and macros.
\ No newline at end of file
diff --git a/tests/languages/rust/keyword_feature.test b/tests/languages/rust/keyword_feature.test
new file mode 100644
index 0000000..06da884
--- /dev/null
+++ b/tests/languages/rust/keyword_feature.test
@@ -0,0 +1,39 @@
+abstract alignof as
+be box break const
+continue crate do
+else enum extern
+false final fn for
+if impl in let loop
+match mod move mut
+offsetof once override
+priv pub pure ref
+return sizeof static
+self struct super
+true trait type typeof
+unsafe unsized use
+virtual where while
+yield
+
+----------------------------------------------------
+
+[
+	["keyword", "abstract"], ["keyword", "alignof"], ["keyword", "as"],
+	["keyword", "be"], ["keyword", "box"], ["keyword", "break"], ["keyword", "const"],
+	["keyword", "continue"], ["keyword", "crate"], ["keyword", "do"],
+	["keyword", "else"], ["keyword", "enum"], ["keyword", "extern"],
+	["keyword", "false"], ["keyword", "final"], ["keyword", "fn"], ["keyword", "for"],
+	["keyword", "if"], ["keyword", "impl"], ["keyword", "in"], ["keyword", "let"], ["keyword", "loop"],
+	["keyword", "match"], ["keyword", "mod"], ["keyword", "move"], ["keyword", "mut"],
+	["keyword", "offsetof"], ["keyword", "once"], ["keyword", "override"],
+	["keyword", "priv"], ["keyword", "pub"], ["keyword", "pure"], ["keyword", "ref"],
+	["keyword", "return"], ["keyword", "sizeof"], ["keyword", "static"],
+	["keyword", "self"], ["keyword", "struct"], ["keyword", "super"],
+	["keyword", "true"], ["keyword", "trait"], ["keyword", "type"], ["keyword", "typeof"],
+	["keyword", "unsafe"], ["keyword", "unsized"], ["keyword", "use"],
+	["keyword", "virtual"], ["keyword", "where"], ["keyword", "while"],
+	["keyword", "yield"]
+]
+
+----------------------------------------------------
+
+Checks for all keywords.
\ No newline at end of file
diff --git a/tests/languages/rust/macro-rules_feature.test b/tests/languages/rust/macro-rules_feature.test
new file mode 100644
index 0000000..9d30051
--- /dev/null
+++ b/tests/languages/rust/macro-rules_feature.test
@@ -0,0 +1,15 @@
+foo!
+foo_bar!
+foo_bar_42!
+
+----------------------------------------------------
+
+[
+	["macro-rules", "foo!"],
+	["macro-rules", "foo_bar!"],
+	["macro-rules", "foo_bar_42!"]
+]
+
+----------------------------------------------------
+
+Checks for macro rules.
\ No newline at end of file
diff --git a/tests/languages/rust/number_feature.test b/tests/languages/rust/number_feature.test
new file mode 100644
index 0000000..61d6e8a
--- /dev/null
+++ b/tests/languages/rust/number_feature.test
@@ -0,0 +1,47 @@
+0xBad_Face
+0o741_123
+0b0000_1111
+42_000
+3.14_15_9
+3e4
+3.5E-8
+4.6e+41
+
+0xBad_Faceu8
+0o741_123i8
+0b0000_1111u16
+42_000i16
+3.14_15_9u32
+3e4i32
+3.5E-8u64
+4.6e+41i64
+4.2f32
+4.2f64
+
+----------------------------------------------------
+
+[
+	["number", "0xBad_Face"],
+	["number", "0o741_123"],
+	["number", "0b0000_1111"],
+	["number", "42_000"],
+	["number", "3.14_15_9"],
+	["number", "3e4"],
+	["number", "3.5E-8"],
+	["number", "4.6e+41"],
+
+	["number", "0xBad_Faceu8"],
+	["number", "0o741_123i8"],
+	["number", "0b0000_1111u16"],
+	["number", "42_000i16"],
+	["number", "3.14_15_9u32"],
+	["number", "3e4i32"],
+	["number", "3.5E-8u64"],
+	["number", "4.6e+41i64"],
+	["number", "4.2f32"],
+	["number", "4.2f64"]
+]
+
+----------------------------------------------------
+
+Checks for numbers.
\ No newline at end of file
diff --git a/tests/languages/rust/operator_feature.test b/tests/languages/rust/operator_feature.test
new file mode 100644
index 0000000..a6e0892
--- /dev/null
+++ b/tests/languages/rust/operator_feature.test
@@ -0,0 +1,35 @@
++ +=
+- -=
+* *=
+/ /=
+% %=
+! !=
+^ ^=
+= ==
+& && &=
+| || |=
+< << <= <<=
+> >> >= >>=
+@
+
+----------------------------------------------------
+
+[
+	["operator", "+"], ["operator", "+="],
+	["operator", "-"], ["operator", "-="],
+	["operator", "*"], ["operator", "*="],
+	["operator", "/"], ["operator", "/="],
+	["operator", "%"], ["operator", "%="],
+	["operator", "!"], ["operator", "!="],
+	["operator", "^"], ["operator", "^="],
+	["operator", "="], ["operator", "=="],
+	["operator", "&"], ["operator", "&&"], ["operator", "&="],
+	["operator", "|"], ["operator", "||"], ["operator", "|="],
+	["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="],
+	["operator", ">"], ["operator", ">>"], ["operator", ">="], ["operator", ">>="],
+	["operator", "@"]
+]
+
+----------------------------------------------------
+
+Checks for all operators.
\ No newline at end of file
diff --git a/tests/languages/rust/string_feature.test b/tests/languages/rust/string_feature.test
new file mode 100644
index 0000000..0928252
--- /dev/null
+++ b/tests/languages/rust/string_feature.test
@@ -0,0 +1,43 @@
+""
+"fo\"obar"
+''
+'fo\'obar'
+
+b""
+b"fo\"obar"
+b''
+b'fo\'obar'
+
+r#""#
+r#"fo"obar"#
+r###"foo#bar"###
+
+br#""#
+br#"fo"obar"#
+br###"foo#bar"###
+
+----------------------------------------------------
+
+[
+	["string", "\"\""],
+	["string", "\"fo\\\"obar\""],
+	["string", "''"],
+	["string", "'fo\\'obar'"],
+
+	["string", "b\"\""],
+	["string", "b\"fo\\\"obar\""],
+	["string", "b''"],
+	["string", "b'fo\\'obar'"],
+
+	["string", "r#\"\"#"],
+	["string", "r#\"fo\"obar\"#"],
+	["string", "r###\"foo#bar\"###"],
+
+	["string", "br#\"\"#"],
+	["string", "br#\"fo\"obar\"#"],
+	["string", "br###\"foo#bar\"###"]
+]
+
+----------------------------------------------------
+
+Checks for strings.
\ No newline at end of file