aboutsummaryrefslogtreecommitdiff
path: root/tests/valid
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-01-15 12:44:05 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-01-15 12:44:05 -0800
commit0d8ce979a4d98c895f5f75826e8c49f02a64f311 (patch)
tree43dfa62e4459bd526deda6ebb79eb183a4d82af0 /tests/valid
parentaef183823c6de926cf1b598cae537e30dc6ad103 (diff)
downloadmilf-rs-0d8ce979a4d98c895f5f75826e8c49f02a64f311.tar.gz
milf-rs-0d8ce979a4d98c895f5f75826e8c49f02a64f311.zip
Move tests to integration tests
Diffstat (limited to 'tests/valid')
-rw-r--r--tests/valid/array-empty.json11
-rw-r--r--tests/valid/array-empty.toml1
-rw-r--r--tests/valid/array-nospaces.json10
-rw-r--r--tests/valid/array-nospaces.toml1
-rw-r--r--tests/valid/arrays-hetergeneous.json19
-rw-r--r--tests/valid/arrays-hetergeneous.toml1
-rw-r--r--tests/valid/arrays-nested.json13
-rw-r--r--tests/valid/arrays-nested.toml1
-rw-r--r--tests/valid/arrays.json34
-rw-r--r--tests/valid/arrays.toml9
-rw-r--r--tests/valid/bool.json4
-rw-r--r--tests/valid/bool.toml2
-rw-r--r--tests/valid/comments-everywhere.json12
-rw-r--r--tests/valid/comments-everywhere.toml24
-rw-r--r--tests/valid/datetime.json3
-rw-r--r--tests/valid/datetime.toml1
-rw-r--r--tests/valid/empty.json1
-rw-r--r--tests/valid/empty.toml0
-rw-r--r--tests/valid/example.json14
-rw-r--r--tests/valid/example.toml5
-rw-r--r--tests/valid/float.json4
-rw-r--r--tests/valid/float.toml2
-rw-r--r--tests/valid/implicit-and-explicit-after.json10
-rw-r--r--tests/valid/implicit-and-explicit-after.toml5
-rw-r--r--tests/valid/implicit-and-explicit-before.json10
-rw-r--r--tests/valid/implicit-and-explicit-before.toml5
-rw-r--r--tests/valid/implicit-groups.json9
-rw-r--r--tests/valid/implicit-groups.toml2
-rw-r--r--tests/valid/integer.json4
-rw-r--r--tests/valid/integer.toml2
-rw-r--r--tests/valid/key-equals-nospace.json3
-rw-r--r--tests/valid/key-equals-nospace.toml1
-rw-r--r--tests/valid/key-special-chars.json5
-rw-r--r--tests/valid/key-special-chars.toml1
-rw-r--r--tests/valid/key-with-pound.json3
-rw-r--r--tests/valid/key-with-pound.toml1
-rw-r--r--tests/valid/long-float.json4
-rw-r--r--tests/valid/long-float.toml2
-rw-r--r--tests/valid/long-integer.json4
-rw-r--r--tests/valid/long-integer.toml2
-rw-r--r--tests/valid/string-empty.json6
-rw-r--r--tests/valid/string-empty.toml1
-rw-r--r--tests/valid/string-escapes.json34
-rw-r--r--tests/valid/string-escapes.toml8
-rw-r--r--tests/valid/string-simple.json6
-rw-r--r--tests/valid/string-simple.toml1
-rw-r--r--tests/valid/string-with-pound.json7
-rw-r--r--tests/valid/string-with-pound.toml2
-rw-r--r--tests/valid/table-array-implicit.json7
-rw-r--r--tests/valid/table-array-implicit.toml2
-rw-r--r--tests/valid/table-array-many.json16
-rw-r--r--tests/valid/table-array-many.toml11
-rw-r--r--tests/valid/table-array-nest.json18
-rw-r--r--tests/valid/table-array-nest.toml17
-rw-r--r--tests/valid/table-array-one.json8
-rw-r--r--tests/valid/table-array-one.toml3
-rw-r--r--tests/valid/table-empty.json3
-rw-r--r--tests/valid/table-empty.toml1
-rw-r--r--tests/valid/table-sub-empty.json3
-rw-r--r--tests/valid/table-sub-empty.toml2
-rw-r--r--tests/valid/table-whitespace.json3
-rw-r--r--tests/valid/table-whitespace.toml1
-rw-r--r--tests/valid/table-with-pound.json5
-rw-r--r--tests/valid/table-with-pound.toml2
-rw-r--r--tests/valid/unicode-escape.json3
-rw-r--r--tests/valid/unicode-escape.toml1
-rw-r--r--tests/valid/unicode-literal.json3
-rw-r--r--tests/valid/unicode-literal.toml1
68 files changed, 420 insertions, 0 deletions
diff --git a/tests/valid/array-empty.json b/tests/valid/array-empty.json
new file mode 100644
index 0000000..2fbf256
--- /dev/null
+++ b/tests/valid/array-empty.json
@@ -0,0 +1,11 @@
+{
+ "thevoid": { "type": "array", "value": [
+ {"type": "array", "value": [
+ {"type": "array", "value": [
+ {"type": "array", "value": [
+ {"type": "array", "value": []}
+ ]}
+ ]}
+ ]}
+ ]}
+}
diff --git a/tests/valid/array-empty.toml b/tests/valid/array-empty.toml
new file mode 100644
index 0000000..fa58dc6
--- /dev/null
+++ b/tests/valid/array-empty.toml
@@ -0,0 +1 @@
+thevoid = [[[[[]]]]]
diff --git a/tests/valid/array-nospaces.json b/tests/valid/array-nospaces.json
new file mode 100644
index 0000000..1833d61
--- /dev/null
+++ b/tests/valid/array-nospaces.json
@@ -0,0 +1,10 @@
+{
+ "ints": {
+ "type": "array",
+ "value": [
+ {"type": "integer", "value": "1"},
+ {"type": "integer", "value": "2"},
+ {"type": "integer", "value": "3"}
+ ]
+ }
+}
diff --git a/tests/valid/array-nospaces.toml b/tests/valid/array-nospaces.toml
new file mode 100644
index 0000000..6618936
--- /dev/null
+++ b/tests/valid/array-nospaces.toml
@@ -0,0 +1 @@
+ints = [1,2,3]
diff --git a/tests/valid/arrays-hetergeneous.json b/tests/valid/arrays-hetergeneous.json
new file mode 100644
index 0000000..e703739
--- /dev/null
+++ b/tests/valid/arrays-hetergeneous.json
@@ -0,0 +1,19 @@
+{
+ "mixed": {
+ "type": "array",
+ "value": [
+ {"type": "array", "value": [
+ {"type": "integer", "value": "1"},
+ {"type": "integer", "value": "2"}
+ ]},
+ {"type": "array", "value": [
+ {"type": "string", "value": "a"},
+ {"type": "string", "value": "b"}
+ ]},
+ {"type": "array", "value": [
+ {"type": "float", "value": "1.0"},
+ {"type": "float", "value": "2.0"}
+ ]}
+ ]
+ }
+}
diff --git a/tests/valid/arrays-hetergeneous.toml b/tests/valid/arrays-hetergeneous.toml
new file mode 100644
index 0000000..91fcbdf
--- /dev/null
+++ b/tests/valid/arrays-hetergeneous.toml
@@ -0,0 +1 @@
+mixed = [[1, 2], ["a", "b"], [1.0, 2.0]]
diff --git a/tests/valid/arrays-nested.json b/tests/valid/arrays-nested.json
new file mode 100644
index 0000000..d21920c
--- /dev/null
+++ b/tests/valid/arrays-nested.json
@@ -0,0 +1,13 @@
+{
+ "nest": {
+ "type": "array",
+ "value": [
+ {"type": "array", "value": [
+ {"type": "string", "value": "a"}
+ ]},
+ {"type": "array", "value": [
+ {"type": "string", "value": "b"}
+ ]}
+ ]
+ }
+}
diff --git a/tests/valid/arrays-nested.toml b/tests/valid/arrays-nested.toml
new file mode 100644
index 0000000..ce33022
--- /dev/null
+++ b/tests/valid/arrays-nested.toml
@@ -0,0 +1 @@
+nest = [["a"], ["b"]]
diff --git a/tests/valid/arrays.json b/tests/valid/arrays.json
new file mode 100644
index 0000000..4d16d8a
--- /dev/null
+++ b/tests/valid/arrays.json
@@ -0,0 +1,34 @@
+{
+ "ints": {
+ "type": "array",
+ "value": [
+ {"type": "integer", "value": "1"},
+ {"type": "integer", "value": "2"},
+ {"type": "integer", "value": "3"}
+ ]
+ },
+ "floats": {
+ "type": "array",
+ "value": [
+ {"type": "float", "value": "1.0"},
+ {"type": "float", "value": "2.0"},
+ {"type": "float", "value": "3.0"}
+ ]
+ },
+ "strings": {
+ "type": "array",
+ "value": [
+ {"type": "string", "value": "a"},
+ {"type": "string", "value": "b"},
+ {"type": "string", "value": "c"}
+ ]
+ },
+ "dates": {
+ "type": "array",
+ "value": [
+ {"type": "datetime", "value": "1987-07-05T17:45:00Z"},
+ {"type": "datetime", "value": "1979-05-27T07:32:00Z"},
+ {"type": "datetime", "value": "2006-06-01T11:00:00Z"}
+ ]
+ }
+}
diff --git a/tests/valid/arrays.toml b/tests/valid/arrays.toml
new file mode 100644
index 0000000..6d6440d
--- /dev/null
+++ b/tests/valid/arrays.toml
@@ -0,0 +1,9 @@
+ints = [1, 2, 3]
+floats = [1.0, 2.0, 3.0]
+strings = ["a", "b", "c"]
+dates = [
+ 1987-07-05T17:45:00Z,
+ 1979-05-27T07:32:00Z,
+ 2006-06-01T11:00:00Z,
+]
+
diff --git a/tests/valid/bool.json b/tests/valid/bool.json
new file mode 100644
index 0000000..ae368e9
--- /dev/null
+++ b/tests/valid/bool.json
@@ -0,0 +1,4 @@
+{
+ "f": {"type": "bool", "value": "false"},
+ "t": {"type": "bool", "value": "true"}
+}
diff --git a/tests/valid/bool.toml b/tests/valid/bool.toml
new file mode 100644
index 0000000..a8a829b
--- /dev/null
+++ b/tests/valid/bool.toml
@@ -0,0 +1,2 @@
+t = true
+f = false
diff --git a/tests/valid/comments-everywhere.json b/tests/valid/comments-everywhere.json
new file mode 100644
index 0000000..e69a2e9
--- /dev/null
+++ b/tests/valid/comments-everywhere.json
@@ -0,0 +1,12 @@
+{
+ "group": {
+ "answer": {"type": "integer", "value": "42"},
+ "more": {
+ "type": "array",
+ "value": [
+ {"type": "integer", "value": "42"},
+ {"type": "integer", "value": "42"}
+ ]
+ }
+ }
+}
diff --git a/tests/valid/comments-everywhere.toml b/tests/valid/comments-everywhere.toml
new file mode 100644
index 0000000..3dca74c
--- /dev/null
+++ b/tests/valid/comments-everywhere.toml
@@ -0,0 +1,24 @@
+# Top comment.
+ # Top comment.
+# Top comment.
+
+# [no-extraneous-groups-please]
+
+[group] # Comment
+answer = 42 # Comment
+# no-extraneous-keys-please = 999
+# Inbetween comment.
+more = [ # Comment
+ # What about multiple # comments?
+ # Can you handle it?
+ #
+ # Evil.
+# Evil.
+ 42, 42, # Comments within arrays are fun.
+ # What about multiple # comments?
+ # Can you handle it?
+ #
+ # Evil.
+# Evil.
+# ] Did I fool you?
+] # Hopefully not.
diff --git a/tests/valid/datetime.json b/tests/valid/datetime.json
new file mode 100644
index 0000000..2ca93ce
--- /dev/null
+++ b/tests/valid/datetime.json
@@ -0,0 +1,3 @@
+{
+ "bestdayever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}
+}
diff --git a/tests/valid/datetime.toml b/tests/valid/datetime.toml
new file mode 100644
index 0000000..2e99340
--- /dev/null
+++ b/tests/valid/datetime.toml
@@ -0,0 +1 @@
+bestdayever = 1987-07-05T17:45:00Z
diff --git a/tests/valid/empty.json b/tests/valid/empty.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/tests/valid/empty.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/valid/empty.toml b/tests/valid/empty.toml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/valid/empty.toml
diff --git a/tests/valid/example.json b/tests/valid/example.json
new file mode 100644
index 0000000..48aa907
--- /dev/null
+++ b/tests/valid/example.json
@@ -0,0 +1,14 @@
+{
+ "best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"},
+ "numtheory": {
+ "boring": {"type": "bool", "value": "false"},
+ "perfection": {
+ "type": "array",
+ "value": [
+ {"type": "integer", "value": "6"},
+ {"type": "integer", "value": "28"},
+ {"type": "integer", "value": "496"}
+ ]
+ }
+ }
+}
diff --git a/tests/valid/example.toml b/tests/valid/example.toml
new file mode 100644
index 0000000..8cb02e0
--- /dev/null
+++ b/tests/valid/example.toml
@@ -0,0 +1,5 @@
+best-day-ever = 1987-07-05T17:45:00Z
+
+[numtheory]
+boring = false
+perfection = [6, 28, 496]
diff --git a/tests/valid/float.json b/tests/valid/float.json
new file mode 100644
index 0000000..b8a2e97
--- /dev/null
+++ b/tests/valid/float.json
@@ -0,0 +1,4 @@
+{
+ "pi": {"type": "float", "value": "3.14"},
+ "negpi": {"type": "float", "value": "-3.14"}
+}
diff --git a/tests/valid/float.toml b/tests/valid/float.toml
new file mode 100644
index 0000000..7c528d2
--- /dev/null
+++ b/tests/valid/float.toml
@@ -0,0 +1,2 @@
+pi = 3.14
+negpi = -3.14
diff --git a/tests/valid/implicit-and-explicit-after.json b/tests/valid/implicit-and-explicit-after.json
new file mode 100644
index 0000000..374bd09
--- /dev/null
+++ b/tests/valid/implicit-and-explicit-after.json
@@ -0,0 +1,10 @@
+{
+ "a": {
+ "better": {"type": "integer", "value": "43"},
+ "b": {
+ "c": {
+ "answer": {"type": "integer", "value": "42"}
+ }
+ }
+ }
+}
diff --git a/tests/valid/implicit-and-explicit-after.toml b/tests/valid/implicit-and-explicit-after.toml
new file mode 100644
index 0000000..c0e8865
--- /dev/null
+++ b/tests/valid/implicit-and-explicit-after.toml
@@ -0,0 +1,5 @@
+[a.b.c]
+answer = 42
+
+[a]
+better = 43
diff --git a/tests/valid/implicit-and-explicit-before.json b/tests/valid/implicit-and-explicit-before.json
new file mode 100644
index 0000000..374bd09
--- /dev/null
+++ b/tests/valid/implicit-and-explicit-before.json
@@ -0,0 +1,10 @@
+{
+ "a": {
+ "better": {"type": "integer", "value": "43"},
+ "b": {
+ "c": {
+ "answer": {"type": "integer", "value": "42"}
+ }
+ }
+ }
+}
diff --git a/tests/valid/implicit-and-explicit-before.toml b/tests/valid/implicit-and-explicit-before.toml
new file mode 100644
index 0000000..eee68ff
--- /dev/null
+++ b/tests/valid/implicit-and-explicit-before.toml
@@ -0,0 +1,5 @@
+[a]
+better = 43
+
+[a.b.c]
+answer = 42
diff --git a/tests/valid/implicit-groups.json b/tests/valid/implicit-groups.json
new file mode 100644
index 0000000..fbae7fc
--- /dev/null
+++ b/tests/valid/implicit-groups.json
@@ -0,0 +1,9 @@
+{
+ "a": {
+ "b": {
+ "c": {
+ "answer": {"type": "integer", "value": "42"}
+ }
+ }
+ }
+}
diff --git a/tests/valid/implicit-groups.toml b/tests/valid/implicit-groups.toml
new file mode 100644
index 0000000..b6333e4
--- /dev/null
+++ b/tests/valid/implicit-groups.toml
@@ -0,0 +1,2 @@
+[a.b.c]
+answer = 42
diff --git a/tests/valid/integer.json b/tests/valid/integer.json
new file mode 100644
index 0000000..61985a1
--- /dev/null
+++ b/tests/valid/integer.json
@@ -0,0 +1,4 @@
+{
+ "answer": {"type": "integer", "value": "42"},
+ "neganswer": {"type": "integer", "value": "-42"}
+}
diff --git a/tests/valid/integer.toml b/tests/valid/integer.toml
new file mode 100644
index 0000000..c4f6297
--- /dev/null
+++ b/tests/valid/integer.toml
@@ -0,0 +1,2 @@
+answer = 42
+neganswer = -42
diff --git a/tests/valid/key-equals-nospace.json b/tests/valid/key-equals-nospace.json
new file mode 100644
index 0000000..1f8709a
--- /dev/null
+++ b/tests/valid/key-equals-nospace.json
@@ -0,0 +1,3 @@
+{
+ "answer": {"type": "integer", "value": "42"}
+}
diff --git a/tests/valid/key-equals-nospace.toml b/tests/valid/key-equals-nospace.toml
new file mode 100644
index 0000000..560901c
--- /dev/null
+++ b/tests/valid/key-equals-nospace.toml
@@ -0,0 +1 @@
+answer=42
diff --git a/tests/valid/key-special-chars.json b/tests/valid/key-special-chars.json
new file mode 100644
index 0000000..6550ebd
--- /dev/null
+++ b/tests/valid/key-special-chars.json
@@ -0,0 +1,5 @@
+{
+ "~!@#$^&*()_+-`1234567890[]\\|/?><.,;:'": {
+ "type": "integer", "value": "1"
+ }
+}
diff --git a/tests/valid/key-special-chars.toml b/tests/valid/key-special-chars.toml
new file mode 100644
index 0000000..8b3fc51
--- /dev/null
+++ b/tests/valid/key-special-chars.toml
@@ -0,0 +1 @@
+~!@#$^&*()_+-`1234567890[]\|/?><.,;:' = 1
diff --git a/tests/valid/key-with-pound.json b/tests/valid/key-with-pound.json
new file mode 100644
index 0000000..ee39e1d
--- /dev/null
+++ b/tests/valid/key-with-pound.json
@@ -0,0 +1,3 @@
+{
+ "key#name": {"type": "integer", "value": "5"}
+}
diff --git a/tests/valid/key-with-pound.toml b/tests/valid/key-with-pound.toml
new file mode 100644
index 0000000..1c54f53
--- /dev/null
+++ b/tests/valid/key-with-pound.toml
@@ -0,0 +1 @@
+key#name = 5
diff --git a/tests/valid/long-float.json b/tests/valid/long-float.json
new file mode 100644
index 0000000..8ceed47
--- /dev/null
+++ b/tests/valid/long-float.json
@@ -0,0 +1,4 @@
+{
+ "longpi": {"type": "float", "value": "3.141592653589793"},
+ "neglongpi": {"type": "float", "value": "-3.141592653589793"}
+}
diff --git a/tests/valid/long-float.toml b/tests/valid/long-float.toml
new file mode 100644
index 0000000..9558ae4
--- /dev/null
+++ b/tests/valid/long-float.toml
@@ -0,0 +1,2 @@
+longpi = 3.141592653589793
+neglongpi = -3.141592653589793
diff --git a/tests/valid/long-integer.json b/tests/valid/long-integer.json
new file mode 100644
index 0000000..16c331e
--- /dev/null
+++ b/tests/valid/long-integer.json
@@ -0,0 +1,4 @@
+{
+ "answer": {"type": "integer", "value": "9223372036854775807"},
+ "neganswer": {"type": "integer", "value": "-9223372036854775808"}
+}
diff --git a/tests/valid/long-integer.toml b/tests/valid/long-integer.toml
new file mode 100644
index 0000000..424a13a
--- /dev/null
+++ b/tests/valid/long-integer.toml
@@ -0,0 +1,2 @@
+answer = 9223372036854775807
+neganswer = -9223372036854775808
diff --git a/tests/valid/string-empty.json b/tests/valid/string-empty.json
new file mode 100644
index 0000000..6c26d69
--- /dev/null
+++ b/tests/valid/string-empty.json
@@ -0,0 +1,6 @@
+{
+ "answer": {
+ "type": "string",
+ "value": ""
+ }
+}
diff --git a/tests/valid/string-empty.toml b/tests/valid/string-empty.toml
new file mode 100644
index 0000000..e37e681
--- /dev/null
+++ b/tests/valid/string-empty.toml
@@ -0,0 +1 @@
+answer = ""
diff --git a/tests/valid/string-escapes.json b/tests/valid/string-escapes.json
new file mode 100644
index 0000000..ca71d30
--- /dev/null
+++ b/tests/valid/string-escapes.json
@@ -0,0 +1,34 @@
+{
+ "backspace": {
+ "type": "string",
+ "value": "This string has a \u0008 backspace character."
+ },
+ "tab": {
+ "type": "string",
+ "value": "This string has a \u0009 tab character."
+ },
+ "newline": {
+ "type": "string",
+ "value": "This string has a \u000A new line character."
+ },
+ "formfeed": {
+ "type": "string",
+ "value": "This string has a \u000C form feed character."
+ },
+ "carriage": {
+ "type": "string",
+ "value": "This string has a \u000D carriage return character."
+ },
+ "quote": {
+ "type": "string",
+ "value": "This string has a \u0022 quote character."
+ },
+ "slash": {
+ "type": "string",
+ "value": "This string has a \u002F slash character."
+ },
+ "backslash": {
+ "type": "string",
+ "value": "This string has a \u005C backslash character."
+ }
+}
diff --git a/tests/valid/string-escapes.toml b/tests/valid/string-escapes.toml
new file mode 100644
index 0000000..2d64500
--- /dev/null
+++ b/tests/valid/string-escapes.toml
@@ -0,0 +1,8 @@
+backspace = "This string has a \b backspace character."
+tab = "This string has a \t tab character."
+newline = "This string has a \n new line character."
+formfeed = "This string has a \f form feed character."
+carriage = "This string has a \r carriage return character."
+quote = "This string has a \" quote character."
+slash = "This string has a \/ slash character."
+backslash = "This string has a \\ backslash character."
diff --git a/tests/valid/string-simple.json b/tests/valid/string-simple.json
new file mode 100644
index 0000000..2e05f99
--- /dev/null
+++ b/tests/valid/string-simple.json
@@ -0,0 +1,6 @@
+{
+ "answer": {
+ "type": "string",
+ "value": "You are not drinking enough whisky."
+ }
+}
diff --git a/tests/valid/string-simple.toml b/tests/valid/string-simple.toml
new file mode 100644
index 0000000..e17ade6
--- /dev/null
+++ b/tests/valid/string-simple.toml
@@ -0,0 +1 @@
+answer = "You are not drinking enough whisky."
diff --git a/tests/valid/string-with-pound.json b/tests/valid/string-with-pound.json
new file mode 100644
index 0000000..33cdc9c
--- /dev/null
+++ b/tests/valid/string-with-pound.json
@@ -0,0 +1,7 @@
+{
+ "pound": {"type": "string", "value": "We see no # comments here."},
+ "poundcomment": {
+ "type": "string",
+ "value": "But there are # some comments here."
+ }
+}
diff --git a/tests/valid/string-with-pound.toml b/tests/valid/string-with-pound.toml
new file mode 100644
index 0000000..5fd8746
--- /dev/null
+++ b/tests/valid/string-with-pound.toml
@@ -0,0 +1,2 @@
+pound = "We see no # comments here."
+poundcomment = "But there are # some comments here." # Did I # mess you up?
diff --git a/tests/valid/table-array-implicit.json b/tests/valid/table-array-implicit.json
new file mode 100644
index 0000000..32e4640
--- /dev/null
+++ b/tests/valid/table-array-implicit.json
@@ -0,0 +1,7 @@
+{
+ "albums": {
+ "songs": [
+ {"name": {"type": "string", "value": "Glory Days"}}
+ ]
+ }
+}
diff --git a/tests/valid/table-array-implicit.toml b/tests/valid/table-array-implicit.toml
new file mode 100644
index 0000000..3157ac9
--- /dev/null
+++ b/tests/valid/table-array-implicit.toml
@@ -0,0 +1,2 @@
+[[albums.songs]]
+name = "Glory Days"
diff --git a/tests/valid/table-array-many.json b/tests/valid/table-array-many.json
new file mode 100644
index 0000000..84df2da
--- /dev/null
+++ b/tests/valid/table-array-many.json
@@ -0,0 +1,16 @@
+{
+ "people": [
+ {
+ "first_name": {"type": "string", "value": "Bruce"},
+ "last_name": {"type": "string", "value": "Springsteen"}
+ },
+ {
+ "first_name": {"type": "string", "value": "Eric"},
+ "last_name": {"type": "string", "value": "Clapton"}
+ },
+ {
+ "first_name": {"type": "string", "value": "Bob"},
+ "last_name": {"type": "string", "value": "Seger"}
+ }
+ ]
+}
diff --git a/tests/valid/table-array-many.toml b/tests/valid/table-array-many.toml
new file mode 100644
index 0000000..46062be
--- /dev/null
+++ b/tests/valid/table-array-many.toml
@@ -0,0 +1,11 @@
+[[people]]
+first_name = "Bruce"
+last_name = "Springsteen"
+
+[[people]]
+first_name = "Eric"
+last_name = "Clapton"
+
+[[people]]
+first_name = "Bob"
+last_name = "Seger"
diff --git a/tests/valid/table-array-nest.json b/tests/valid/table-array-nest.json
new file mode 100644
index 0000000..c117afa
--- /dev/null
+++ b/tests/valid/table-array-nest.json
@@ -0,0 +1,18 @@
+{
+ "albums": [
+ {
+ "name": {"type": "string", "value": "Born to Run"},
+ "songs": [
+ {"name": {"type": "string", "value": "Jungleland"}},
+ {"name": {"type": "string", "value": "Meeting Across the River"}}
+ ]
+ },
+ {
+ "name": {"type": "string", "value": "Born in the USA"},
+ "songs": [
+ {"name": {"type": "string", "value": "Glory Days"}},
+ {"name": {"type": "string", "value": "Dancing in the Dark"}}
+ ]
+ }
+ ]
+}
diff --git a/tests/valid/table-array-nest.toml b/tests/valid/table-array-nest.toml
new file mode 100644
index 0000000..d659a3d
--- /dev/null
+++ b/tests/valid/table-array-nest.toml
@@ -0,0 +1,17 @@
+[[albums]]
+name = "Born to Run"
+
+ [[albums.songs]]
+ name = "Jungleland"
+
+ [[albums.songs]]
+ name = "Meeting Across the River"
+
+[[albums]]
+name = "Born in the USA"
+
+ [[albums.songs]]
+ name = "Glory Days"
+
+ [[albums.songs]]
+ name = "Dancing in the Dark"
diff --git a/tests/valid/table-array-one.json b/tests/valid/table-array-one.json
new file mode 100644
index 0000000..d75faae
--- /dev/null
+++ b/tests/valid/table-array-one.json
@@ -0,0 +1,8 @@
+{
+ "people": [
+ {
+ "first_name": {"type": "string", "value": "Bruce"},
+ "last_name": {"type": "string", "value": "Springsteen"}
+ }
+ ]
+}
diff --git a/tests/valid/table-array-one.toml b/tests/valid/table-array-one.toml
new file mode 100644
index 0000000..cd7e1b6
--- /dev/null
+++ b/tests/valid/table-array-one.toml
@@ -0,0 +1,3 @@
+[[people]]
+first_name = "Bruce"
+last_name = "Springsteen"
diff --git a/tests/valid/table-empty.json b/tests/valid/table-empty.json
new file mode 100644
index 0000000..6f3873a
--- /dev/null
+++ b/tests/valid/table-empty.json
@@ -0,0 +1,3 @@
+{
+ "a": {}
+}
diff --git a/tests/valid/table-empty.toml b/tests/valid/table-empty.toml
new file mode 100644
index 0000000..8bb6a0a
--- /dev/null
+++ b/tests/valid/table-empty.toml
@@ -0,0 +1 @@
+[a]
diff --git a/tests/valid/table-sub-empty.json b/tests/valid/table-sub-empty.json
new file mode 100644
index 0000000..9787770
--- /dev/null
+++ b/tests/valid/table-sub-empty.json
@@ -0,0 +1,3 @@
+{
+ "a": { "b": {} }
+}
diff --git a/tests/valid/table-sub-empty.toml b/tests/valid/table-sub-empty.toml
new file mode 100644
index 0000000..70b7fe1
--- /dev/null
+++ b/tests/valid/table-sub-empty.toml
@@ -0,0 +1,2 @@
+[a]
+[a.b]
diff --git a/tests/valid/table-whitespace.json b/tests/valid/table-whitespace.json
new file mode 100644
index 0000000..3a73ec8
--- /dev/null
+++ b/tests/valid/table-whitespace.json
@@ -0,0 +1,3 @@
+{
+ "valid key": {}
+}
diff --git a/tests/valid/table-whitespace.toml b/tests/valid/table-whitespace.toml
new file mode 100644
index 0000000..798756c
--- /dev/null
+++ b/tests/valid/table-whitespace.toml
@@ -0,0 +1 @@
+[valid key]
diff --git a/tests/valid/table-with-pound.json b/tests/valid/table-with-pound.json
new file mode 100644
index 0000000..5e594e4
--- /dev/null
+++ b/tests/valid/table-with-pound.json
@@ -0,0 +1,5 @@
+{
+ "key#group": {
+ "answer": {"type": "integer", "value": "42"}
+ }
+}
diff --git a/tests/valid/table-with-pound.toml b/tests/valid/table-with-pound.toml
new file mode 100644
index 0000000..e7b777e
--- /dev/null
+++ b/tests/valid/table-with-pound.toml
@@ -0,0 +1,2 @@
+[key#group]
+answer = 42
diff --git a/tests/valid/unicode-escape.json b/tests/valid/unicode-escape.json
new file mode 100644
index 0000000..deda62c
--- /dev/null
+++ b/tests/valid/unicode-escape.json
@@ -0,0 +1,3 @@
+{
+ "answer": {"type": "string", "value": "\u03B4"}
+}
diff --git a/tests/valid/unicode-escape.toml b/tests/valid/unicode-escape.toml
new file mode 100644
index 0000000..057ce15
--- /dev/null
+++ b/tests/valid/unicode-escape.toml
@@ -0,0 +1 @@
+answer = "\u03B4"
diff --git a/tests/valid/unicode-literal.json b/tests/valid/unicode-literal.json
new file mode 100644
index 0000000..00aa2f8
--- /dev/null
+++ b/tests/valid/unicode-literal.json
@@ -0,0 +1,3 @@
+{
+ "answer": {"type": "string", "value": "δ"}
+}
diff --git a/tests/valid/unicode-literal.toml b/tests/valid/unicode-literal.toml
new file mode 100644
index 0000000..c65723c
--- /dev/null
+++ b/tests/valid/unicode-literal.toml
@@ -0,0 +1 @@
+answer = "δ"