Commit 9af550d41988724febb07851730f271b5d7ea611

Golmote 2015-08-19T08:42:25

Add tests for F#

diff --git a/tests/languages/fsharp/comment_feature.test b/tests/languages/fsharp/comment_feature.test
new file mode 100644
index 0000000..ff9170b
--- /dev/null
+++ b/tests/languages/fsharp/comment_feature.test
@@ -0,0 +1,16 @@
+// foobar
+(**)
+(* foo
+bar *)
+
+----------------------------------------------------
+
+[
+	["comment", "// foobar"],
+	["comment", "(**)"],
+	["comment", "(* foo\r\nbar *)"]
+]
+
+----------------------------------------------------
+
+Checks for single-line and multi-line comments.
\ No newline at end of file
diff --git a/tests/languages/fsharp/keyword_feature.test b/tests/languages/fsharp/keyword_feature.test
new file mode 100644
index 0000000..d2ef996
--- /dev/null
+++ b/tests/languages/fsharp/keyword_feature.test
@@ -0,0 +1,71 @@
+abstract and as assert
+base begin
+class;
+default
+delegate do done downcast
+downto elif else end
+exception extern false finally
+for fun function global
+if in inherit inline
+interface;
+internal lazy let
+let! match member module
+mutable namespace
+new;
+not
+null of open or override
+private public rec return
+return! select static struct
+then to true try type
+upcast use use! val void
+when while with yield
+yield! asr land lor lsl
+lsr lxor mod sig atomic
+break checked component
+const constraint constructor
+continue eager event external
+fixed functor include method
+mixin object parallel process
+protected pure sealed tailcall
+trait;
+virtual volatile
+
+----------------------------------------------------
+
+[
+	["keyword", "abstract"], ["keyword", "and"], ["keyword", "as"], ["keyword", "assert"],
+	["keyword", "base"], ["keyword", "begin"],
+	["keyword", "class"], ["punctuation", ";"],
+	["keyword", "default"],
+	["keyword", "delegate"], ["keyword", "do"], ["keyword", "done"], ["keyword", "downcast"],
+	["keyword", "downto"], ["keyword", "elif"], ["keyword", "else"], ["keyword", "end"],
+	["keyword", "exception"], ["keyword", "extern"], ["keyword", "false"], ["keyword", "finally"],
+	["keyword", "for"], ["keyword", "fun"], ["keyword", "function"], ["keyword", "global"],
+	["keyword", "if"], ["keyword", "in"], ["keyword", "inherit"], ["keyword", "inline"],
+	["keyword", "interface"], ["punctuation", ";"],
+	["keyword", "internal"], ["keyword", "lazy"], ["keyword", "let"],
+	["keyword", "let!"], ["keyword", "match"], ["keyword", "member"], ["keyword", "module"],
+	["keyword", "mutable"], ["keyword", "namespace"],
+	["keyword", "new"], ["punctuation", ";"],
+	["keyword", "not"],
+	["keyword", "null"], ["keyword", "of"], ["keyword", "open"], ["keyword", "or"], ["keyword", "override"],
+	["keyword", "private"], ["keyword", "public"], ["keyword", "rec"], ["keyword", "return"],
+	["keyword", "return!"], ["keyword", "select"], ["keyword", "static"], ["keyword", "struct"],
+	["keyword", "then"], ["keyword", "to"], ["keyword", "true"], ["keyword", "try"], ["keyword", "type"],
+	["keyword", "upcast"], ["keyword", "use"], ["keyword", "use!"], ["keyword", "val"], ["keyword", "void"],
+	["keyword", "when"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"],
+	["keyword", "yield!"], ["keyword", "asr"], ["keyword", "land"], ["keyword", "lor"], ["keyword", "lsl"],
+	["keyword", "lsr"], ["keyword", "lxor"], ["keyword", "mod"], ["keyword", "sig"], ["keyword", "atomic"],
+	["keyword", "break"], ["keyword", "checked"], ["keyword", "component"],
+	["keyword", "const"], ["keyword", "constraint"], ["keyword", "constructor"],
+	["keyword", "continue"], ["keyword", "eager"], ["keyword", "event"], ["keyword", "external"],
+	["keyword", "fixed"], ["keyword", "functor"], ["keyword", "include"], ["keyword", "method"],
+	["keyword", "mixin"], ["keyword", "object"], ["keyword", "parallel"], ["keyword", "process"],
+	["keyword", "protected"], ["keyword", "pure"], ["keyword", "sealed"], ["keyword", "tailcall"],
+	["keyword", "trait"], ["punctuation", ";"],
+	["keyword", "virtual"], ["keyword", "volatile"]
+]
+
+----------------------------------------------------
+
+Checks for all keywords.
\ No newline at end of file
diff --git a/tests/languages/fsharp/number_feature.test b/tests/languages/fsharp/number_feature.test
new file mode 100644
index 0000000..f2f86ed
--- /dev/null
+++ b/tests/languages/fsharp/number_feature.test
@@ -0,0 +1,65 @@
+0xbabe
+0xBABEun
+0xflf
+0xfLF
+
+0b1001
+0b1001y
+0b1001uy
+
+42
+1.5
+2.3E+32
+2.3e-32
+4.14F
+4.14f
+0.7833M
+0.7833m
+
+86y
+86uy
+86s
+86us
+86l
+86u
+86ul
+86L
+86UL
+9999999999999999999999999999I
+
+----------------------------------------------------
+
+[
+	["number", "0xbabe"],
+	["number", "0xBABEun"],
+	["number", "0xflf"],
+	["number", "0xfLF"],
+
+	["number", "0b1001"],
+	["number", "0b1001y"],
+	["number", "0b1001uy"],
+
+	["number", "42"],
+	["number", "1.5"],
+	["number", "2.3E+32"],
+	["number", "2.3e-32"],
+	["number", "4.14F"],
+	["number", "4.14f"],
+	["number", "0.7833M"],
+	["number", "0.7833m"],
+
+	["number", "86y"],
+	["number", "86uy"],
+	["number", "86s"],
+	["number", "86us"],
+	["number", "86l"],
+	["number", "86u"],
+	["number", "86ul"],
+	["number", "86L"],
+	["number", "86UL"],
+	["number", "9999999999999999999999999999I"]
+]
+
+----------------------------------------------------
+
+Checks for decimal, hexadecimal and binary numbers, with all possible suffixes.
\ No newline at end of file
diff --git a/tests/languages/fsharp/preprocessor_feature.test b/tests/languages/fsharp/preprocessor_feature.test
new file mode 100644
index 0000000..0bb16a6
--- /dev/null
+++ b/tests/languages/fsharp/preprocessor_feature.test
@@ -0,0 +1,15 @@
+#if foo
+#else
+#endif
+
+----------------------------------------------------
+
+[
+	["preprocessor", "#if foo"],
+	["preprocessor", "#else"],
+	["preprocessor", "#endif"]
+]
+
+----------------------------------------------------
+
+Checks for preprocessor directives.
\ No newline at end of file
diff --git a/tests/languages/fsharp/string_feature.test b/tests/languages/fsharp/string_feature.test
new file mode 100644
index 0000000..89412ac
--- /dev/null
+++ b/tests/languages/fsharp/string_feature.test
@@ -0,0 +1,45 @@
+""
+"fo\"o"
+"foo\
+bar"
+"foo"B
+
+@""
+@"foo"
+@"fo""o"
+@"foo"B
+
+""""""
+"""fo""o"
+bar"""
+"""foo"""B
+
+'a'
+'\''
+'\\'
+
+----------------------------------------------------
+
+[
+	["string", "\"\""],
+	["string", "\"fo\\\"o\""],
+	["string", "\"foo\\\r\nbar\""],
+	["string", "\"foo\"B"],
+
+	["string", "@\"\""],
+	["string", "@\"foo\""],
+	["string", "@\"fo\"\"o\""],
+	["string", "@\"foo\"B"],
+
+	["string", "\"\"\"\"\"\""],
+	["string", "\"\"\"fo\"\"o\"\r\nbar\"\"\""],
+	["string", "\"\"\"foo\"\"\"B"],
+
+	["string", "'a'"],
+	["string", "'\\''"],
+	["string", "'\\\\'"]
+]
+
+----------------------------------------------------
+
+Checks for normal strings, verbatim strings, triple-quoted strings and character literals.
\ No newline at end of file