summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-02-11 23:22:37 +0000
committerxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-02-11 23:22:37 +0000
commit2d5e94be47b74f34aac788f97fe28fc1fe12dd04 (patch)
treeb8ddac084e52a9fcc7fb0c5ea2d8a21ebe09bf32
downloadpyyaml-2d5e94be47b74f34aac788f97fe28fc1fe12dd04.tar.gz
Add a branch for the new parser. Add tests from the spec.
git-svn-id: http://svn.pyyaml.org/branches/pyyaml3000@38 18f92427-320e-0410-9341-c67f048884a3
-rw-r--r--tests/data/spec-02-01.data3
-rw-r--r--tests/data/spec-02-02.data3
-rw-r--r--tests/data/spec-02-03.data8
-rw-r--r--tests/data/spec-02-04.data8
-rw-r--r--tests/data/spec-02-05.data3
-rw-r--r--tests/data/spec-02-06.data5
-rw-r--r--tests/data/spec-02-07.data10
-rw-r--r--tests/data/spec-02-08.data10
-rw-r--r--tests/data/spec-02-09.data8
-rw-r--r--tests/data/spec-02-10.data8
-rw-r--r--tests/data/spec-02-11.data9
-rw-r--r--tests/data/spec-02-12.data8
-rw-r--r--tests/data/spec-02-13.data4
-rw-r--r--tests/data/spec-02-14.data4
-rw-r--r--tests/data/spec-02-15.data8
-rw-r--r--tests/data/spec-02-16.data7
-rw-r--r--tests/data/spec-02-17.data7
-rw-r--r--tests/data/spec-02-18.data6
-rw-r--r--tests/data/spec-02-19.data5
-rw-r--r--tests/data/spec-02-20.data6
-rw-r--r--tests/data/spec-02-21.data4
-rw-r--r--tests/data/spec-02-22.data4
-rw-r--r--tests/data/spec-02-23.data13
-rw-r--r--tests/data/spec-02-24.data14
-rw-r--r--tests/data/spec-02-25.data7
-rw-r--r--tests/data/spec-02-26.data7
-rw-r--r--tests/data/spec-02-27.data29
-rw-r--r--tests/data/spec-02-28.data26
-rw-r--r--tests/data/spec-05-01-utf16be.databin0 -> 34 bytes
-rw-r--r--tests/data/spec-05-01-utf16be.empty2
-rw-r--r--tests/data/spec-05-01-utf16le.databin0 -> 34 bytes
-rw-r--r--tests/data/spec-05-01-utf16le.empty2
-rw-r--r--tests/data/spec-05-01-utf8.data1
-rw-r--r--tests/data/spec-05-01-utf8.empty2
-rw-r--r--tests/data/spec-05-02-utf16be.databin0 -> 90 bytes
-rw-r--r--tests/data/spec-05-02-utf16be.error3
-rw-r--r--tests/data/spec-05-02-utf16le.databin0 -> 90 bytes
-rw-r--r--tests/data/spec-05-02-utf16le.error3
-rw-r--r--tests/data/spec-05-02-utf8.data3
-rw-r--r--tests/data/spec-05-02-utf8.error3
-rw-r--r--tests/data/spec-05-03.canonical13
-rw-r--r--tests/data/spec-05-03.data7
-rw-r--r--tests/data/spec-05-04.canonical13
-rw-r--r--tests/data/spec-05-04.data2
-rw-r--r--tests/data/spec-05-05.data1
-rw-r--r--tests/data/spec-05-05.empty2
-rw-r--r--tests/data/spec-05-06.canonical8
-rw-r--r--tests/data/spec-05-06.data2
-rw-r--r--tests/data/spec-05-07.canonical8
-rw-r--r--tests/data/spec-05-07.data4
-rw-r--r--tests/data/spec-05-08.canonical8
-rw-r--r--tests/data/spec-05-08.data2
-rw-r--r--tests/data/spec-05-09.canonical3
-rw-r--r--tests/data/spec-05-09.data2
-rw-r--r--tests/data/spec-05-10.data2
-rw-r--r--tests/data/spec-05-10.error3
-rw-r--r--tests/data/spec-05-11.canonical6
-rw-r--r--tests/data/spec-05-11.data3
-rw-r--r--tests/data/spec-05-12.data9
-rw-r--r--tests/data/spec-05-12.error8
-rw-r--r--tests/data/spec-05-13.canonical5
-rw-r--r--tests/data/spec-05-13.data3
-rw-r--r--tests/data/spec-05-14.canonical7
-rw-r--r--tests/data/spec-05-14.data2
-rw-r--r--tests/data/spec-05-15.data3
-rw-r--r--tests/data/spec-05-15.error3
-rw-r--r--tests/data/spec-06-01.canonical15
-rw-r--r--tests/data/spec-06-01.data12
-rw-r--r--tests/data/spec-06-02.data3
-rw-r--r--tests/data/spec-06-02.empty2
-rw-r--r--tests/data/spec-06-03.canonical6
-rw-r--r--tests/data/spec-06-03.data2
-rw-r--r--tests/data/spec-06-04.canonical6
-rw-r--r--tests/data/spec-06-04.data4
-rw-r--r--tests/data/spec-06-05.canonical16
-rw-r--r--tests/data/spec-06-05.data6
-rw-r--r--tests/data/spec-06-06.canonical10
-rw-r--r--tests/data/spec-06-06.data7
-rw-r--r--tests/data/spec-06-07.canonical6
-rw-r--r--tests/data/spec-06-07.data8
-rw-r--r--tests/data/spec-06-08.canonical5
-rw-r--r--tests/data/spec-06-08.data2
-rw-r--r--tests/data/spec-07-01.canonical3
-rw-r--r--tests/data/spec-07-01.data3
-rw-r--r--tests/data/spec-07-02.canonical3
-rw-r--r--tests/data/spec-07-02.data4
-rw-r--r--tests/data/spec-07-03.data3
-rw-r--r--tests/data/spec-07-03.error3
-rw-r--r--tests/data/spec-07-04.canonical3
-rw-r--r--tests/data/spec-07-04.data3
-rw-r--r--tests/data/spec-07-05.data3
-rw-r--r--tests/data/spec-07-05.error4
-rw-r--r--tests/data/spec-07-06.canonical6
-rw-r--r--tests/data/spec-07-06.data5
-rw-r--r--tests/data/spec-07-07a.canonical3
-rw-r--r--tests/data/spec-07-07a.data2
-rw-r--r--tests/data/spec-07-07b.canonical3
-rw-r--r--tests/data/spec-07-07b.data4
-rw-r--r--tests/data/spec-07-08.canonical7
-rw-r--r--tests/data/spec-07-08.data9
-rw-r--r--tests/data/spec-07-09.canonical9
-rw-r--r--tests/data/spec-07-09.data11
-rw-r--r--tests/data/spec-07-10.canonical14
-rw-r--r--tests/data/spec-07-10.data11
-rw-r--r--tests/data/spec-07-11.data2
-rw-r--r--tests/data/spec-07-11.empty2
-rw-r--r--tests/data/spec-07-12a.canonical6
-rw-r--r--tests/data/spec-07-12a.data3
-rw-r--r--tests/data/spec-07-12b.canonical3
-rw-r--r--tests/data/spec-07-12b.data4
-rw-r--r--tests/data/spec-07-13.canonical9
-rw-r--r--tests/data/spec-07-13.data9
-rw-r--r--tests/data/spec-08-01.canonical8
-rw-r--r--tests/data/spec-08-01.data4
-rw-r--r--tests/data/spec-08-02.canonical8
-rw-r--r--tests/data/spec-08-02.data2
-rw-r--r--tests/data/spec-08-03.canonical6
-rw-r--r--tests/data/spec-08-03.data2
-rw-r--r--tests/data/spec-08-04.data2
-rw-r--r--tests/data/spec-08-04.error6
-rw-r--r--tests/data/spec-08-05.canonical7
-rw-r--r--tests/data/spec-08-05.data5
-rw-r--r--tests/data/spec-08-06.data5
-rw-r--r--tests/data/spec-08-06.error4
-rw-r--r--tests/data/spec-08-07.canonical7
-rw-r--r--tests/data/spec-08-07.data4
-rw-r--r--tests/data/spec-08-08.canonical15
-rw-r--r--tests/data/spec-08-08.data13
-rw-r--r--tests/data/spec-08-09.canonical21
-rw-r--r--tests/data/spec-08-09.data11
-rw-r--r--tests/data/spec-08-10.canonical23
-rw-r--r--tests/data/spec-08-10.data15
-rw-r--r--tests/data/spec-08-11.canonical8
-rw-r--r--tests/data/spec-08-11.data2
-rw-r--r--tests/data/spec-08-12.canonical9
-rw-r--r--tests/data/spec-08-12.data7
-rw-r--r--tests/data/spec-08-13.canonical8
-rw-r--r--tests/data/spec-08-13.data4
-rw-r--r--tests/data/spec-08-14.canonical10
-rw-r--r--tests/data/spec-08-14.data5
-rw-r--r--tests/data/spec-08-15.canonical11
-rw-r--r--tests/data/spec-08-15.data6
-rw-r--r--tests/data/spec-09-01.canonical11
-rw-r--r--tests/data/spec-09-01.data6
-rw-r--r--tests/data/spec-09-02.canonical7
-rw-r--r--tests/data/spec-09-02.data6
-rw-r--r--tests/data/spec-09-03.canonical7
-rw-r--r--tests/data/spec-09-03.data6
-rw-r--r--tests/data/spec-09-04.canonical6
-rw-r--r--tests/data/spec-09-04.data4
-rw-r--r--tests/data/spec-09-05.canonical7
-rw-r--r--tests/data/spec-09-05.data8
-rw-r--r--tests/data/spec-09-06.canonical3
-rw-r--r--tests/data/spec-09-06.data1
-rw-r--r--tests/data/spec-09-07.canonical11
-rw-r--r--tests/data/spec-09-07.data6
-rw-r--r--tests/data/spec-09-08.canonical6
-rw-r--r--tests/data/spec-09-08.data1
-rw-r--r--tests/data/spec-09-09.canonical7
-rw-r--r--tests/data/spec-09-09.data6
-rw-r--r--tests/data/spec-09-10.canonical5
-rw-r--r--tests/data/spec-09-10.data3
-rw-r--r--tests/data/spec-09-11.canonical6
-rw-r--r--tests/data/spec-09-11.data5
-rw-r--r--tests/data/spec-09-12.canonical12
-rw-r--r--tests/data/spec-09-12.data8
-rw-r--r--tests/data/spec-09-13.canonical11
-rw-r--r--tests/data/spec-09-13.data6
-rw-r--r--tests/data/spec-09-14.data14
-rw-r--r--tests/data/spec-09-14.error6
-rw-r--r--tests/data/spec-09-15.canonical18
-rw-r--r--tests/data/spec-09-15.data13
-rw-r--r--tests/data/spec-09-16.canonical6
-rw-r--r--tests/data/spec-09-16.data1
-rw-r--r--tests/data/spec-09-17.canonical4
-rw-r--r--tests/data/spec-09-17.data3
-rw-r--r--tests/data/spec-09-18.canonical8
-rw-r--r--tests/data/spec-09-18.data9
-rw-r--r--tests/data/spec-09-19.canonical6
-rw-r--r--tests/data/spec-09-19.data4
-rw-r--r--tests/data/spec-09-20.canonical8
-rw-r--r--tests/data/spec-09-20.data11
-rw-r--r--tests/data/spec-09-21.canonical7
-rw-r--r--tests/data/spec-09-21.data8
-rw-r--r--tests/data/spec-09-22.canonical10
-rw-r--r--tests/data/spec-09-22.data4
-rw-r--r--tests/data/spec-09-23.canonical10
-rw-r--r--tests/data/spec-09-23.data11
-rw-r--r--tests/data/spec-09-24.canonical10
-rw-r--r--tests/data/spec-09-24.data6
-rw-r--r--tests/data/spec-09-25.canonical6
-rw-r--r--tests/data/spec-09-25.data3
-rw-r--r--tests/data/spec-09-26.canonical3
-rw-r--r--tests/data/spec-09-26.data8
-rw-r--r--tests/data/spec-09-27.canonical3
-rw-r--r--tests/data/spec-09-27.data8
-rw-r--r--tests/data/spec-09-28.canonical3
-rw-r--r--tests/data/spec-09-28.data8
-rw-r--r--tests/data/spec-09-29.canonical6
-rw-r--r--tests/data/spec-09-29.data4
-rw-r--r--tests/data/spec-09-30.canonical9
-rw-r--r--tests/data/spec-09-30.data14
-rw-r--r--tests/data/spec-09-31.canonical9
-rw-r--r--tests/data/spec-09-31.data14
-rw-r--r--tests/data/spec-09-32.canonical9
-rw-r--r--tests/data/spec-09-32.data14
-rw-r--r--tests/data/spec-09-33.canonical9
-rw-r--r--tests/data/spec-09-33.data14
-rw-r--r--tests/data/spec-10-01.canonical12
-rw-r--r--tests/data/spec-10-01.data2
-rw-r--r--tests/data/spec-10-02.canonical14
-rw-r--r--tests/data/spec-10-02.data8
-rw-r--r--tests/data/spec-10-03.canonical12
-rw-r--r--tests/data/spec-10-03.data4
-rw-r--r--tests/data/spec-10-04.canonical11
-rw-r--r--tests/data/spec-10-04.data4
-rw-r--r--tests/data/spec-10-05.canonical14
-rw-r--r--tests/data/spec-10-05.data7
-rw-r--r--tests/data/spec-10-06.canonical16
-rw-r--r--tests/data/spec-10-06.data2
-rw-r--r--tests/data/spec-10-07.canonical16
-rw-r--r--tests/data/spec-10-07.data7
-rw-r--r--tests/data/spec-10-08.canonical5
-rw-r--r--tests/data/spec-10-08.data5
-rw-r--r--tests/data/spec-10-09.canonical8
-rw-r--r--tests/data/spec-10-09.data4
-rw-r--r--tests/data/spec-10-10.canonical16
-rw-r--r--tests/data/spec-10-10.data8
-rw-r--r--tests/data/spec-10-11.canonical24
-rw-r--r--tests/data/spec-10-11.data7
-rw-r--r--tests/data/spec-10-12.canonical9
-rw-r--r--tests/data/spec-10-12.data3
-rw-r--r--tests/data/spec-10-13.canonical11
-rw-r--r--tests/data/spec-10-13.data5
-rw-r--r--tests/data/spec-10-14.canonical11
-rw-r--r--tests/data/spec-10-14.data4
-rw-r--r--tests/data/spec-10-15.canonical18
-rw-r--r--tests/data/spec-10-15.data3
238 files changed, 1640 insertions, 0 deletions
diff --git a/tests/data/spec-02-01.data b/tests/data/spec-02-01.data
new file mode 100644
index 0000000..d12e671
--- /dev/null
+++ b/tests/data/spec-02-01.data
@@ -0,0 +1,3 @@
+- Mark McGwire
+- Sammy Sosa
+- Ken Griffey
diff --git a/tests/data/spec-02-02.data b/tests/data/spec-02-02.data
new file mode 100644
index 0000000..7b7ec94
--- /dev/null
+++ b/tests/data/spec-02-02.data
@@ -0,0 +1,3 @@
+hr: 65 # Home runs
+avg: 0.278 # Batting average
+rbi: 147 # Runs Batted In
diff --git a/tests/data/spec-02-03.data b/tests/data/spec-02-03.data
new file mode 100644
index 0000000..656d628
--- /dev/null
+++ b/tests/data/spec-02-03.data
@@ -0,0 +1,8 @@
+american:
+ - Boston Red Sox
+ - Detroit Tigers
+ - New York Yankees
+national:
+ - New York Mets
+ - Chicago Cubs
+ - Atlanta Braves
diff --git a/tests/data/spec-02-04.data b/tests/data/spec-02-04.data
new file mode 100644
index 0000000..430f6b3
--- /dev/null
+++ b/tests/data/spec-02-04.data
@@ -0,0 +1,8 @@
+-
+ name: Mark McGwire
+ hr: 65
+ avg: 0.278
+-
+ name: Sammy Sosa
+ hr: 63
+ avg: 0.288
diff --git a/tests/data/spec-02-05.data b/tests/data/spec-02-05.data
new file mode 100644
index 0000000..cdd7770
--- /dev/null
+++ b/tests/data/spec-02-05.data
@@ -0,0 +1,3 @@
+- [name , hr, avg ]
+- [Mark McGwire, 65, 0.278]
+- [Sammy Sosa , 63, 0.288]
diff --git a/tests/data/spec-02-06.data b/tests/data/spec-02-06.data
new file mode 100644
index 0000000..7a957b2
--- /dev/null
+++ b/tests/data/spec-02-06.data
@@ -0,0 +1,5 @@
+Mark McGwire: {hr: 65, avg: 0.278}
+Sammy Sosa: {
+ hr: 63,
+ avg: 0.288
+ }
diff --git a/tests/data/spec-02-07.data b/tests/data/spec-02-07.data
new file mode 100644
index 0000000..bc711d5
--- /dev/null
+++ b/tests/data/spec-02-07.data
@@ -0,0 +1,10 @@
+# Ranking of 1998 home runs
+---
+- Mark McGwire
+- Sammy Sosa
+- Ken Griffey
+
+# Team ranking
+---
+- Chicago Cubs
+- St Louis Cardinals
diff --git a/tests/data/spec-02-08.data b/tests/data/spec-02-08.data
new file mode 100644
index 0000000..05e102d
--- /dev/null
+++ b/tests/data/spec-02-08.data
@@ -0,0 +1,10 @@
+---
+time: 20:03:20
+player: Sammy Sosa
+action: strike (miss)
+...
+---
+time: 20:03:47
+player: Sammy Sosa
+action: grand slam
+...
diff --git a/tests/data/spec-02-09.data b/tests/data/spec-02-09.data
new file mode 100644
index 0000000..e264180
--- /dev/null
+++ b/tests/data/spec-02-09.data
@@ -0,0 +1,8 @@
+---
+hr: # 1998 hr ranking
+ - Mark McGwire
+ - Sammy Sosa
+rbi:
+ # 1998 rbi ranking
+ - Sammy Sosa
+ - Ken Griffey
diff --git a/tests/data/spec-02-10.data b/tests/data/spec-02-10.data
new file mode 100644
index 0000000..61808f6
--- /dev/null
+++ b/tests/data/spec-02-10.data
@@ -0,0 +1,8 @@
+---
+hr:
+ - Mark McGwire
+ # Following node labeled SS
+ - &SS Sammy Sosa
+rbi:
+ - *SS # Subsequent occurrence
+ - Ken Griffey
diff --git a/tests/data/spec-02-11.data b/tests/data/spec-02-11.data
new file mode 100644
index 0000000..9123ce2
--- /dev/null
+++ b/tests/data/spec-02-11.data
@@ -0,0 +1,9 @@
+? - Detroit Tigers
+ - Chicago cubs
+:
+ - 2001-07-23
+
+? [ New York Yankees,
+ Atlanta Braves ]
+: [ 2001-07-02, 2001-08-12,
+ 2001-08-14 ]
diff --git a/tests/data/spec-02-12.data b/tests/data/spec-02-12.data
new file mode 100644
index 0000000..1fc33f9
--- /dev/null
+++ b/tests/data/spec-02-12.data
@@ -0,0 +1,8 @@
+---
+# products purchased
+- item : Super Hoop
+ quantity: 1
+- item : Basketball
+ quantity: 4
+- item : Big Shoes
+ quantity: 1
diff --git a/tests/data/spec-02-13.data b/tests/data/spec-02-13.data
new file mode 100644
index 0000000..13fb656
--- /dev/null
+++ b/tests/data/spec-02-13.data
@@ -0,0 +1,4 @@
+# ASCII Art
+--- |
+ \//||\/||
+ // || ||__
diff --git a/tests/data/spec-02-14.data b/tests/data/spec-02-14.data
new file mode 100644
index 0000000..59943de
--- /dev/null
+++ b/tests/data/spec-02-14.data
@@ -0,0 +1,4 @@
+---
+ Mark McGwire's
+ year was crippled
+ by a knee injury.
diff --git a/tests/data/spec-02-15.data b/tests/data/spec-02-15.data
new file mode 100644
index 0000000..80b89a6
--- /dev/null
+++ b/tests/data/spec-02-15.data
@@ -0,0 +1,8 @@
+>
+ Sammy Sosa completed another
+ fine season with great stats.
+
+ 63 Home Runs
+ 0.288 Batting Average
+
+ What a year!
diff --git a/tests/data/spec-02-16.data b/tests/data/spec-02-16.data
new file mode 100644
index 0000000..9f66d88
--- /dev/null
+++ b/tests/data/spec-02-16.data
@@ -0,0 +1,7 @@
+name: Mark McGwire
+accomplishment: >
+ Mark set a major league
+ home run record in 1998.
+stats: |
+ 65 Home Runs
+ 0.278 Batting Average
diff --git a/tests/data/spec-02-17.data b/tests/data/spec-02-17.data
new file mode 100644
index 0000000..b2870c5
--- /dev/null
+++ b/tests/data/spec-02-17.data
@@ -0,0 +1,7 @@
+unicode: "Sosa did fine.\u263A"
+control: "\b1998\t1999\t2000\n"
+hexesc: "\x13\x10 is \r\n"
+
+single: '"Howdy!" he cried.'
+quoted: ' # not a ''comment''.'
+tie-fighter: '|\-*-/|'
diff --git a/tests/data/spec-02-18.data b/tests/data/spec-02-18.data
new file mode 100644
index 0000000..e0a8bfa
--- /dev/null
+++ b/tests/data/spec-02-18.data
@@ -0,0 +1,6 @@
+plain:
+ This unquoted scalar
+ spans many lines.
+
+quoted: "So does this
+ quoted scalar.\n"
diff --git a/tests/data/spec-02-19.data b/tests/data/spec-02-19.data
new file mode 100644
index 0000000..bf69de6
--- /dev/null
+++ b/tests/data/spec-02-19.data
@@ -0,0 +1,5 @@
+canonical: 12345
+decimal: +12,345
+sexagesimal: 3:25:45
+octal: 014
+hexadecimal: 0xC
diff --git a/tests/data/spec-02-20.data b/tests/data/spec-02-20.data
new file mode 100644
index 0000000..1d4897f
--- /dev/null
+++ b/tests/data/spec-02-20.data
@@ -0,0 +1,6 @@
+canonical: 1.23015e+3
+exponential: 12.3015e+02
+sexagesimal: 20:30.15
+fixed: 1,230.15
+negative infinity: -.inf
+not a number: .NaN
diff --git a/tests/data/spec-02-21.data b/tests/data/spec-02-21.data
new file mode 100644
index 0000000..dec6a56
--- /dev/null
+++ b/tests/data/spec-02-21.data
@@ -0,0 +1,4 @@
+null: ~
+true: y
+false: n
+string: '12345'
diff --git a/tests/data/spec-02-22.data b/tests/data/spec-02-22.data
new file mode 100644
index 0000000..aaac185
--- /dev/null
+++ b/tests/data/spec-02-22.data
@@ -0,0 +1,4 @@
+canonical: 2001-12-15T02:59:43.1Z
+iso8601: 2001-12-14t21:59:43.10-05:00
+spaced: 2001-12-14 21:59:43.10 -5
+date: 2002-12-14
diff --git a/tests/data/spec-02-23.data b/tests/data/spec-02-23.data
new file mode 100644
index 0000000..5dbd992
--- /dev/null
+++ b/tests/data/spec-02-23.data
@@ -0,0 +1,13 @@
+---
+not-date: !!str 2002-04-28
+
+picture: !!binary |
+ R0lGODlhDAAMAIQAAP//9/X
+ 17unp5WZmZgAAAOfn515eXv
+ Pz7Y6OjuDg4J+fn5OTk6enp
+ 56enmleECcgggoBADs=
+
+application specific tag: !something |
+ The semantics of the tag
+ above may be different for
+ different documents.
diff --git a/tests/data/spec-02-24.data b/tests/data/spec-02-24.data
new file mode 100644
index 0000000..1180757
--- /dev/null
+++ b/tests/data/spec-02-24.data
@@ -0,0 +1,14 @@
+%TAG ! tag:clarkevans.com,2002:
+--- !shape
+ # Use the ! handle for presenting
+ # tag:clarkevans.com,2002:circle
+- !circle
+ center: &ORIGIN {x: 73, y: 129}
+ radius: 7
+- !line
+ start: *ORIGIN
+ finish: { x: 89, y: 102 }
+- !label
+ start: *ORIGIN
+ color: 0xFFEEBB
+ text: Pretty vector drawing.
diff --git a/tests/data/spec-02-25.data b/tests/data/spec-02-25.data
new file mode 100644
index 0000000..769ac31
--- /dev/null
+++ b/tests/data/spec-02-25.data
@@ -0,0 +1,7 @@
+# sets are represented as a
+# mapping where each key is
+# associated with the empty string
+--- !!set
+? Mark McGwire
+? Sammy Sosa
+? Ken Griff
diff --git a/tests/data/spec-02-26.data b/tests/data/spec-02-26.data
new file mode 100644
index 0000000..3143763
--- /dev/null
+++ b/tests/data/spec-02-26.data
@@ -0,0 +1,7 @@
+# ordered maps are represented as
+# a sequence of mappings, with
+# each mapping having one key
+--- !!omap
+- Mark McGwire: 65
+- Sammy Sosa: 63
+- Ken Griffy: 58
diff --git a/tests/data/spec-02-27.data b/tests/data/spec-02-27.data
new file mode 100644
index 0000000..4625739
--- /dev/null
+++ b/tests/data/spec-02-27.data
@@ -0,0 +1,29 @@
+--- !<tag:clarkevans.com,2002:invoice>
+invoice: 34843
+date : 2001-01-23
+bill-to: &id001
+ given : Chris
+ family : Dumars
+ address:
+ lines: |
+ 458 Walkman Dr.
+ Suite #292
+ city : Royal Oak
+ state : MI
+ postal : 48046
+ship-to: *id001
+product:
+ - sku : BL394D
+ quantity : 4
+ description : Basketball
+ price : 450.00
+ - sku : BL4438H
+ quantity : 1
+ description : Super Hoop
+ price : 2392.00
+tax : 251.42
+total: 4443.52
+comments:
+ Late afternoon is best.
+ Backup contact is Nancy
+ Billsmer @ 338-4338.
diff --git a/tests/data/spec-02-28.data b/tests/data/spec-02-28.data
new file mode 100644
index 0000000..a5c8dc8
--- /dev/null
+++ b/tests/data/spec-02-28.data
@@ -0,0 +1,26 @@
+---
+Time: 2001-11-23 15:01:42 -5
+User: ed
+Warning:
+ This is an error message
+ for the log file
+---
+Time: 2001-11-23 15:02:31 -5
+User: ed
+Warning:
+ A slightly different error
+ message.
+---
+Date: 2001-11-23 15:03:17 -5
+User: ed
+Fatal:
+ Unknown variable "bar"
+Stack:
+ - file: TopClass.py
+ line: 23
+ code: |
+ x = MoreObject("345\n")
+ - file: MoreClass.py
+ line: 58
+ code: |-
+ foo = bar
diff --git a/tests/data/spec-05-01-utf16be.data b/tests/data/spec-05-01-utf16be.data
new file mode 100644
index 0000000..3525062
--- /dev/null
+++ b/tests/data/spec-05-01-utf16be.data
Binary files differ
diff --git a/tests/data/spec-05-01-utf16be.empty b/tests/data/spec-05-01-utf16be.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-05-01-utf16be.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-05-01-utf16le.data b/tests/data/spec-05-01-utf16le.data
new file mode 100644
index 0000000..0823f74
--- /dev/null
+++ b/tests/data/spec-05-01-utf16le.data
Binary files differ
diff --git a/tests/data/spec-05-01-utf16le.empty b/tests/data/spec-05-01-utf16le.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-05-01-utf16le.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-05-01-utf8.data b/tests/data/spec-05-01-utf8.data
new file mode 100644
index 0000000..780d25b
--- /dev/null
+++ b/tests/data/spec-05-01-utf8.data
@@ -0,0 +1 @@
+# Comment only.
diff --git a/tests/data/spec-05-01-utf8.empty b/tests/data/spec-05-01-utf8.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-05-01-utf8.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-05-02-utf16be.data b/tests/data/spec-05-02-utf16be.data
new file mode 100644
index 0000000..5ebbb04
--- /dev/null
+++ b/tests/data/spec-05-02-utf16be.data
Binary files differ
diff --git a/tests/data/spec-05-02-utf16be.error b/tests/data/spec-05-02-utf16be.error
new file mode 100644
index 0000000..1df3616
--- /dev/null
+++ b/tests/data/spec-05-02-utf16be.error
@@ -0,0 +1,3 @@
+ERROR:
+ A BOM must not appear
+ inside a document.
diff --git a/tests/data/spec-05-02-utf16le.data b/tests/data/spec-05-02-utf16le.data
new file mode 100644
index 0000000..0cd90a2
--- /dev/null
+++ b/tests/data/spec-05-02-utf16le.data
Binary files differ
diff --git a/tests/data/spec-05-02-utf16le.error b/tests/data/spec-05-02-utf16le.error
new file mode 100644
index 0000000..1df3616
--- /dev/null
+++ b/tests/data/spec-05-02-utf16le.error
@@ -0,0 +1,3 @@
+ERROR:
+ A BOM must not appear
+ inside a document.
diff --git a/tests/data/spec-05-02-utf8.data b/tests/data/spec-05-02-utf8.data
new file mode 100644
index 0000000..fb74866
--- /dev/null
+++ b/tests/data/spec-05-02-utf8.data
@@ -0,0 +1,3 @@
+# Invalid use of BOM
+# inside a
+# document.
diff --git a/tests/data/spec-05-02-utf8.error b/tests/data/spec-05-02-utf8.error
new file mode 100644
index 0000000..1df3616
--- /dev/null
+++ b/tests/data/spec-05-02-utf8.error
@@ -0,0 +1,3 @@
+ERROR:
+ A BOM must not appear
+ inside a document.
diff --git a/tests/data/spec-05-03.canonical b/tests/data/spec-05-03.canonical
new file mode 100644
index 0000000..00c9723
--- /dev/null
+++ b/tests/data/spec-05-03.canonical
@@ -0,0 +1,13 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "sequence"
+ : !!seq [
+ !!str "one", !!str "two"
+ ],
+ ? !!str "mapping"
+ : !!map {
+ ? !!str "sky" : !!str "blue",
+ ? !!str "sea" : !!str "green",
+ }
+}
diff --git a/tests/data/spec-05-03.data b/tests/data/spec-05-03.data
new file mode 100644
index 0000000..4661f33
--- /dev/null
+++ b/tests/data/spec-05-03.data
@@ -0,0 +1,7 @@
+sequence:
+- one
+- two
+mapping:
+ ? sky
+ : blue
+ ? sea : green
diff --git a/tests/data/spec-05-04.canonical b/tests/data/spec-05-04.canonical
new file mode 100644
index 0000000..00c9723
--- /dev/null
+++ b/tests/data/spec-05-04.canonical
@@ -0,0 +1,13 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "sequence"
+ : !!seq [
+ !!str "one", !!str "two"
+ ],
+ ? !!str "mapping"
+ : !!map {
+ ? !!str "sky" : !!str "blue",
+ ? !!str "sea" : !!str "green",
+ }
+}
diff --git a/tests/data/spec-05-04.data b/tests/data/spec-05-04.data
new file mode 100644
index 0000000..df33847
--- /dev/null
+++ b/tests/data/spec-05-04.data
@@ -0,0 +1,2 @@
+sequence: [ one, two, ]
+mapping: { sky: blue, sea: green }
diff --git a/tests/data/spec-05-05.data b/tests/data/spec-05-05.data
new file mode 100644
index 0000000..62524c0
--- /dev/null
+++ b/tests/data/spec-05-05.data
@@ -0,0 +1 @@
+# Comment only.
diff --git a/tests/data/spec-05-05.empty b/tests/data/spec-05-05.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-05-05.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-05-06.canonical b/tests/data/spec-05-06.canonical
new file mode 100644
index 0000000..bdf4123
--- /dev/null
+++ b/tests/data/spec-05-06.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "anchored"
+ : !local &A1 "value",
+ ? !!str "alias"
+ : *A1,
+}
diff --git a/tests/data/spec-05-06.data b/tests/data/spec-05-06.data
new file mode 100644
index 0000000..7a1f9b3
--- /dev/null
+++ b/tests/data/spec-05-06.data
@@ -0,0 +1,2 @@
+anchored: !local &anchor value
+alias: *anchor
diff --git a/tests/data/spec-05-07.canonical b/tests/data/spec-05-07.canonical
new file mode 100644
index 0000000..dc3732a
--- /dev/null
+++ b/tests/data/spec-05-07.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "literal"
+ : !!str "text\n",
+ ? !!str "folded"
+ : !!str "text\n",
+}
diff --git a/tests/data/spec-05-07.data b/tests/data/spec-05-07.data
new file mode 100644
index 0000000..97eb3a3
--- /dev/null
+++ b/tests/data/spec-05-07.data
@@ -0,0 +1,4 @@
+literal: |
+ text
+folded: >
+ text
diff --git a/tests/data/spec-05-08.canonical b/tests/data/spec-05-08.canonical
new file mode 100644
index 0000000..fd8af6a
--- /dev/null
+++ b/tests/data/spec-05-08.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "double"
+ : !!str "text",
+ ? !!str "single"
+ : !!str "text",
+}
diff --git a/tests/data/spec-05-08.data b/tests/data/spec-05-08.data
new file mode 100644
index 0000000..04ebf69
--- /dev/null
+++ b/tests/data/spec-05-08.data
@@ -0,0 +1,2 @@
+single: 'text'
+double: "text"
diff --git a/tests/data/spec-05-09.canonical b/tests/data/spec-05-09.canonical
new file mode 100644
index 0000000..597e3de
--- /dev/null
+++ b/tests/data/spec-05-09.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "text"
diff --git a/tests/data/spec-05-09.data b/tests/data/spec-05-09.data
new file mode 100644
index 0000000..a43431b
--- /dev/null
+++ b/tests/data/spec-05-09.data
@@ -0,0 +1,2 @@
+%YAML 1.1
+--- text
diff --git a/tests/data/spec-05-10.data b/tests/data/spec-05-10.data
new file mode 100644
index 0000000..a4caf91
--- /dev/null
+++ b/tests/data/spec-05-10.data
@@ -0,0 +1,2 @@
+commercial-at: @text
+grave-accent: `text
diff --git a/tests/data/spec-05-10.error b/tests/data/spec-05-10.error
new file mode 100644
index 0000000..46f776e
--- /dev/null
+++ b/tests/data/spec-05-10.error
@@ -0,0 +1,3 @@
+ERROR:
+ Reserved indicators can't
+ start a plain scalar.
diff --git a/tests/data/spec-05-11.canonical b/tests/data/spec-05-11.canonical
new file mode 100644
index 0000000..fc25bef
--- /dev/null
+++ b/tests/data/spec-05-11.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+--- !!str
+"Generic line break (no glyph)\n\
+ Generic line break (glyphed)\n\
+ Line separator\u2028\
+ Paragraph separator\u2029"
diff --git a/tests/data/spec-05-11.data b/tests/data/spec-05-11.data
new file mode 100644
index 0000000..b448b75
--- /dev/null
+++ b/tests/data/spec-05-11.data
@@ -0,0 +1,3 @@
+|
+ Generic line break (no glyph)
+ Generic line break (glyphed)… Line separator
 Paragraph separator
 \ No newline at end of file
diff --git a/tests/data/spec-05-12.data b/tests/data/spec-05-12.data
new file mode 100644
index 0000000..7c3ad7f
--- /dev/null
+++ b/tests/data/spec-05-12.data
@@ -0,0 +1,9 @@
+# Tabs do's and don'ts:
+# comment:
+quoted: "Quoted "
+block: |
+ void main() {
+ printf("Hello, world!\n");
+ }
+elsewhere: # separation
+ indentation, in plain scalar
diff --git a/tests/data/spec-05-12.error b/tests/data/spec-05-12.error
new file mode 100644
index 0000000..8aad4c8
--- /dev/null
+++ b/tests/data/spec-05-12.error
@@ -0,0 +1,8 @@
+ERROR:
+ Tabs may appear inside
+ comments and quoted or
+ block scalar content.
+ Tabs must not appear
+ elsewhere, such as
+ in indentation and
+ separation spaces.
diff --git a/tests/data/spec-05-13.canonical b/tests/data/spec-05-13.canonical
new file mode 100644
index 0000000..90c1c5c
--- /dev/null
+++ b/tests/data/spec-05-13.canonical
@@ -0,0 +1,5 @@
+%YAML 1.1
+--- !!str
+"Text containing \
+ both space and \
+ tab characters"
diff --git a/tests/data/spec-05-13.data b/tests/data/spec-05-13.data
new file mode 100644
index 0000000..fce7951
--- /dev/null
+++ b/tests/data/spec-05-13.data
@@ -0,0 +1,3 @@
+ "Text containing
+ both space and
+ tab characters"
diff --git a/tests/data/spec-05-14.canonical b/tests/data/spec-05-14.canonical
new file mode 100644
index 0000000..d30e994
--- /dev/null
+++ b/tests/data/spec-05-14.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+"Fun with \x5C
+ \x22 \x07 \x08 \x1B \0C
+ \x0A \x0D \x09 \x0B \x00
+ \x20 \xA0 \x85 \u2028 \u2029
+ A A A"
diff --git a/tests/data/spec-05-14.data b/tests/data/spec-05-14.data
new file mode 100644
index 0000000..d6e8ce4
--- /dev/null
+++ b/tests/data/spec-05-14.data
@@ -0,0 +1,2 @@
+"Fun with \\
+ \" \a \b \e \f \… \n \r \t \v \0 \
 \ \_ \N \L \P \
 \x41 \u0041 \U00000041"
diff --git a/tests/data/spec-05-15.data b/tests/data/spec-05-15.data
new file mode 100644
index 0000000..7bf12b6
--- /dev/null
+++ b/tests/data/spec-05-15.data
@@ -0,0 +1,3 @@
+Bad escapes:
+ "\c
+ \xq-"
diff --git a/tests/data/spec-05-15.error b/tests/data/spec-05-15.error
new file mode 100644
index 0000000..71ffbd9
--- /dev/null
+++ b/tests/data/spec-05-15.error
@@ -0,0 +1,3 @@
+ERROR:
+- c is an invalid escaped character.
+- q and - are invalid hex digits.
diff --git a/tests/data/spec-06-01.canonical b/tests/data/spec-06-01.canonical
new file mode 100644
index 0000000..a1e43ff
--- /dev/null
+++ b/tests/data/spec-06-01.canonical
@@ -0,0 +1,15 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "Not indented"
+ : !!map {
+ ? !!str "By one space"
+ : !!str "By four\n spaces\n",
+ ? !!str "Flow style"
+ : !!seq [
+ !!str "By two",
+ !!str "Still by two",
+ !!str "Again by two",
+ ]
+ }
+}
diff --git a/tests/data/spec-06-01.data b/tests/data/spec-06-01.data
new file mode 100644
index 0000000..b5496c1
--- /dev/null
+++ b/tests/data/spec-06-01.data
@@ -0,0 +1,12 @@
+ # Leading comment line spaces are
+ # neither content nor indentation.
+
+Not indented:
+ By one space: |
+ By four
+ spaces
+ Flow style: [ # Leading spaces
+ By two, # in flow style
+ Also by two, # are neither
+ Still by two # content nor
+ ] # indentation.
diff --git a/tests/data/spec-06-02.data b/tests/data/spec-06-02.data
new file mode 100644
index 0000000..ff741e5
--- /dev/null
+++ b/tests/data/spec-06-02.data
@@ -0,0 +1,3 @@
+ # Comment
+
+
diff --git a/tests/data/spec-06-02.empty b/tests/data/spec-06-02.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-06-02.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-06-03.canonical b/tests/data/spec-06-03.canonical
new file mode 100644
index 0000000..ec26902
--- /dev/null
+++ b/tests/data/spec-06-03.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "key"
+ : !!str "value"
+}
diff --git a/tests/data/spec-06-03.data b/tests/data/spec-06-03.data
new file mode 100644
index 0000000..9db0912
--- /dev/null
+++ b/tests/data/spec-06-03.data
@@ -0,0 +1,2 @@
+key: # Comment
+ value
diff --git a/tests/data/spec-06-04.canonical b/tests/data/spec-06-04.canonical
new file mode 100644
index 0000000..ec26902
--- /dev/null
+++ b/tests/data/spec-06-04.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "key"
+ : !!str "value"
+}
diff --git a/tests/data/spec-06-04.data b/tests/data/spec-06-04.data
new file mode 100644
index 0000000..86308dd
--- /dev/null
+++ b/tests/data/spec-06-04.data
@@ -0,0 +1,4 @@
+key: # Comment
+ # lines
+ value
+
diff --git a/tests/data/spec-06-05.canonical b/tests/data/spec-06-05.canonical
new file mode 100644
index 0000000..8da431d
--- /dev/null
+++ b/tests/data/spec-06-05.canonical
@@ -0,0 +1,16 @@
+%YAML 1.1
+---
+!!map {
+ ? !!map {
+ ? !!str "first"
+ : !!str "Sammy",
+ ? !!str "last"
+ : !!str "Sosa"
+ }
+ : !!map {
+ ? !!str "hr"
+ : !!int "65",
+ ? !!str "avg"
+ : !!float "0.278"
+ }
+}
diff --git a/tests/data/spec-06-05.data b/tests/data/spec-06-05.data
new file mode 100644
index 0000000..37613f5
--- /dev/null
+++ b/tests/data/spec-06-05.data
@@ -0,0 +1,6 @@
+{ first: Sammy, last: Sosa }:
+# Statistics:
+ hr: # Home runs
+ 65
+ avg: # Average
+ 0.278
diff --git a/tests/data/spec-06-06.canonical b/tests/data/spec-06-06.canonical
new file mode 100644
index 0000000..5e13dde
--- /dev/null
+++ b/tests/data/spec-06-06.canonical
@@ -0,0 +1,10 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "plain"
+ : !!str "text lines",
+ ? !!str "quoted"
+ : !!str "text lines",
+ ? !!str "block"
+ : !!str "text lines\n"
+}
diff --git a/tests/data/spec-06-06.data b/tests/data/spec-06-06.data
new file mode 100644
index 0000000..2f62d08
--- /dev/null
+++ b/tests/data/spec-06-06.data
@@ -0,0 +1,7 @@
+plain: text
+ lines
+quoted: "text
+ lines"
+block: |
+ text
+ lines
diff --git a/tests/data/spec-06-07.canonical b/tests/data/spec-06-07.canonical
new file mode 100644
index 0000000..5d3cab6
--- /dev/null
+++ b/tests/data/spec-06-07.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq {
+ !!str "foo\nbar",
+ !!str "foo\n\nbar"
+}
diff --git a/tests/data/spec-06-07.data b/tests/data/spec-06-07.data
new file mode 100644
index 0000000..130cfa7
--- /dev/null
+++ b/tests/data/spec-06-07.data
@@ -0,0 +1,8 @@
+- foo
+
+ bar
+- |-
+ foo
+
+ bar
+
diff --git a/tests/data/spec-06-08.canonical b/tests/data/spec-06-08.canonical
new file mode 100644
index 0000000..cc72bc8
--- /dev/null
+++ b/tests/data/spec-06-08.canonical
@@ -0,0 +1,5 @@
+%YAML 1.1
+--- !!str
+"specific\L\
+ trimmed\n\n\n\
+ as space"
diff --git a/tests/data/spec-06-08.data b/tests/data/spec-06-08.data
new file mode 100644
index 0000000..f2896ed
--- /dev/null
+++ b/tests/data/spec-06-08.data
@@ -0,0 +1,2 @@
+>-
+ specific
 trimmed… … …… as… space
diff --git a/tests/data/spec-07-01.canonical b/tests/data/spec-07-01.canonical
new file mode 100644
index 0000000..8c8c48d
--- /dev/null
+++ b/tests/data/spec-07-01.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+--- !!str
+"foo"
diff --git a/tests/data/spec-07-01.data b/tests/data/spec-07-01.data
new file mode 100644
index 0000000..2113eb6
--- /dev/null
+++ b/tests/data/spec-07-01.data
@@ -0,0 +1,3 @@
+%FOO bar baz # Should be ignored
+ # with a warning.
+--- "foo"
diff --git a/tests/data/spec-07-02.canonical b/tests/data/spec-07-02.canonical
new file mode 100644
index 0000000..cb7dd1c
--- /dev/null
+++ b/tests/data/spec-07-02.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "foo"
diff --git a/tests/data/spec-07-02.data b/tests/data/spec-07-02.data
new file mode 100644
index 0000000..c8b7322
--- /dev/null
+++ b/tests/data/spec-07-02.data
@@ -0,0 +1,4 @@
+%YAML 1.2 # Attempt parsing
+ # with a warning
+---
+"foo"
diff --git a/tests/data/spec-07-03.data b/tests/data/spec-07-03.data
new file mode 100644
index 0000000..4bfa07a
--- /dev/null
+++ b/tests/data/spec-07-03.data
@@ -0,0 +1,3 @@
+%YAML 1.1
+%YAML 1.1
+foo
diff --git a/tests/data/spec-07-03.error b/tests/data/spec-07-03.error
new file mode 100644
index 0000000..b0ac446
--- /dev/null
+++ b/tests/data/spec-07-03.error
@@ -0,0 +1,3 @@
+ERROR:
+The YAML directive must only be
+given at most once per document.
diff --git a/tests/data/spec-07-04.canonical b/tests/data/spec-07-04.canonical
new file mode 100644
index 0000000..cb7dd1c
--- /dev/null
+++ b/tests/data/spec-07-04.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "foo"
diff --git a/tests/data/spec-07-04.data b/tests/data/spec-07-04.data
new file mode 100644
index 0000000..50f5ab9
--- /dev/null
+++ b/tests/data/spec-07-04.data
@@ -0,0 +1,3 @@
+%TAG !yaml! tag:yaml.org,2002:
+---
+!yaml!str "foo"
diff --git a/tests/data/spec-07-05.data b/tests/data/spec-07-05.data
new file mode 100644
index 0000000..7276eae
--- /dev/null
+++ b/tests/data/spec-07-05.data
@@ -0,0 +1,3 @@
+%TAG ! !foo
+%TAG ! !foo
+bar
diff --git a/tests/data/spec-07-05.error b/tests/data/spec-07-05.error
new file mode 100644
index 0000000..5601b19
--- /dev/null
+++ b/tests/data/spec-07-05.error
@@ -0,0 +1,4 @@
+ERROR:
+The TAG directive must only
+be given at most once per
+handle in the same document.
diff --git a/tests/data/spec-07-06.canonical b/tests/data/spec-07-06.canonical
new file mode 100644
index 0000000..bddf616
--- /dev/null
+++ b/tests/data/spec-07-06.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq [
+ !<!foobar> "baz",
+ !<tag:yaml.org,2002:str> "string"
+]
diff --git a/tests/data/spec-07-06.data b/tests/data/spec-07-06.data
new file mode 100644
index 0000000..d9854cb
--- /dev/null
+++ b/tests/data/spec-07-06.data
@@ -0,0 +1,5 @@
+%TAG ! !foo
+%TAG !yaml! tag:yaml.org,2002:
+---
+- !bar "baz"
+- !yaml!str "string"
diff --git a/tests/data/spec-07-07a.canonical b/tests/data/spec-07-07a.canonical
new file mode 100644
index 0000000..fa086df
--- /dev/null
+++ b/tests/data/spec-07-07a.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!<!foo> "bar"
diff --git a/tests/data/spec-07-07a.data b/tests/data/spec-07-07a.data
new file mode 100644
index 0000000..9d42ec3
--- /dev/null
+++ b/tests/data/spec-07-07a.data
@@ -0,0 +1,2 @@
+# Private application:
+!foo "bar"
diff --git a/tests/data/spec-07-07b.canonical b/tests/data/spec-07-07b.canonical
new file mode 100644
index 0000000..fe917d8
--- /dev/null
+++ b/tests/data/spec-07-07b.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!<tag:ben-kiki.org,2000:app/foo> "bar"
diff --git a/tests/data/spec-07-07b.data b/tests/data/spec-07-07b.data
new file mode 100644
index 0000000..2d36d0e
--- /dev/null
+++ b/tests/data/spec-07-07b.data
@@ -0,0 +1,4 @@
+# Migrated to global:
+%TAG ! tag:ben-kiki.org,2000:app/
+---
+!foo "bar"
diff --git a/tests/data/spec-07-08.canonical b/tests/data/spec-07-08.canonical
new file mode 100644
index 0000000..5e88c74
--- /dev/null
+++ b/tests/data/spec-07-08.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !<!foo> "bar",
+ !<tag:yaml.org,2002:str> "string"
+ !<tag:ben-kiki.org,2000:type> "baz"
+]
diff --git a/tests/data/spec-07-08.data b/tests/data/spec-07-08.data
new file mode 100644
index 0000000..e2c6d9e
--- /dev/null
+++ b/tests/data/spec-07-08.data
@@ -0,0 +1,9 @@
+# Explicitly specify default settings:
+%TAG ! !
+%TAG !! tag:yaml.org,2002:
+# Named handles have no default:
+%TAG !o! tag:ben-kiki.org,2000:
+---
+- !foo "bar"
+- !!str "string"
+- !o!type "baz"
diff --git a/tests/data/spec-07-09.canonical b/tests/data/spec-07-09.canonical
new file mode 100644
index 0000000..32d9e94
--- /dev/null
+++ b/tests/data/spec-07-09.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!str "foo"
+%YAML 1.1
+---
+!!str "bar"
+%YAML 1.1
+---
+!!str "baz"
diff --git a/tests/data/spec-07-09.data b/tests/data/spec-07-09.data
new file mode 100644
index 0000000..1209d47
--- /dev/null
+++ b/tests/data/spec-07-09.data
@@ -0,0 +1,11 @@
+---
+foo
+...
+# Repeated end marker.
+...
+---
+bar
+# No end marker.
+---
+baz
+...
diff --git a/tests/data/spec-07-10.canonical b/tests/data/spec-07-10.canonical
new file mode 100644
index 0000000..af10679
--- /dev/null
+++ b/tests/data/spec-07-10.canonical
@@ -0,0 +1,14 @@
+%YAML 1.1
+---
+!!str "Root flow scalar"
+%YAML 1.1
+---
+!!str "Root block scalar"
+%YAML 1.1
+---
+!!map {
+ ? !!str "foo"
+ : !!str "bar"
+}
+---
+!!str ""
diff --git a/tests/data/spec-07-10.data b/tests/data/spec-07-10.data
new file mode 100644
index 0000000..6939b39
--- /dev/null
+++ b/tests/data/spec-07-10.data
@@ -0,0 +1,11 @@
+"Root flow
+ scalar"
+--- !!str >
+ Root block
+ scalar
+---
+# Root collection:
+foo : bar
+... # Is optional.
+---
+# Explicit document may be empty.
diff --git a/tests/data/spec-07-11.data b/tests/data/spec-07-11.data
new file mode 100644
index 0000000..d11302d
--- /dev/null
+++ b/tests/data/spec-07-11.data
@@ -0,0 +1,2 @@
+# A stream may contain
+# no documents.
diff --git a/tests/data/spec-07-11.empty b/tests/data/spec-07-11.empty
new file mode 100644
index 0000000..bfffa8b
--- /dev/null
+++ b/tests/data/spec-07-11.empty
@@ -0,0 +1,2 @@
+# This stream contains no
+# documents, only comments.
diff --git a/tests/data/spec-07-12a.canonical b/tests/data/spec-07-12a.canonical
new file mode 100644
index 0000000..efc116f
--- /dev/null
+++ b/tests/data/spec-07-12a.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "foo"
+ : !!str "bar"
+}
diff --git a/tests/data/spec-07-12a.data b/tests/data/spec-07-12a.data
new file mode 100644
index 0000000..3807d57
--- /dev/null
+++ b/tests/data/spec-07-12a.data
@@ -0,0 +1,3 @@
+# Implicit document. Root
+# collection (mapping) node.
+foo : bar
diff --git a/tests/data/spec-07-12b.canonical b/tests/data/spec-07-12b.canonical
new file mode 100644
index 0000000..04bcffc
--- /dev/null
+++ b/tests/data/spec-07-12b.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "Text content\n"
diff --git a/tests/data/spec-07-12b.data b/tests/data/spec-07-12b.data
new file mode 100644
index 0000000..43250db
--- /dev/null
+++ b/tests/data/spec-07-12b.data
@@ -0,0 +1,4 @@
+# Explicit document. Root
+# scalar (literal) node.
+--- |
+ Text content
diff --git a/tests/data/spec-07-13.canonical b/tests/data/spec-07-13.canonical
new file mode 100644
index 0000000..5af71e9
--- /dev/null
+++ b/tests/data/spec-07-13.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!str "First document"
+---
+!<!foo> "No directives"
+---
+!<!foobar> "With directives"
+---
+!<!baz> "Reset settings"
diff --git a/tests/data/spec-07-13.data b/tests/data/spec-07-13.data
new file mode 100644
index 0000000..ba7ec63
--- /dev/null
+++ b/tests/data/spec-07-13.data
@@ -0,0 +1,9 @@
+! "First document"
+---
+!foo "No directives"
+%TAG ! !foo
+---
+!bar "With directives"
+%YAML 1.1
+---
+!baz "Reset settings"
diff --git a/tests/data/spec-08-01.canonical b/tests/data/spec-08-01.canonical
new file mode 100644
index 0000000..5361dc5
--- /dev/null
+++ b/tests/data/spec-08-01.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? &A1 !!str "foo"
+ : !!str "bar",
+ ? !!str &A2 "baz"
+ : *a1
+}
diff --git a/tests/data/spec-08-01.data b/tests/data/spec-08-01.data
new file mode 100644
index 0000000..195a368
--- /dev/null
+++ b/tests/data/spec-08-01.data
@@ -0,0 +1,4 @@
+!!str
+ &a1
+ "foo" : !!str bar
+&a2 baz : *a1
diff --git a/tests/data/spec-08-02.canonical b/tests/data/spec-08-02.canonical
new file mode 100644
index 0000000..dd6f76e
--- /dev/null
+++ b/tests/data/spec-08-02.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "First occurrence"
+ : &A !!str "Value",
+ ? !!str "Second occurrence"
+ : *A
+}
diff --git a/tests/data/spec-08-02.data b/tests/data/spec-08-02.data
new file mode 100644
index 0000000..600d179
--- /dev/null
+++ b/tests/data/spec-08-02.data
@@ -0,0 +1,2 @@
+First occurrence: &anchor Value
+Second occurrence: *anchor
diff --git a/tests/data/spec-08-03.canonical b/tests/data/spec-08-03.canonical
new file mode 100644
index 0000000..be7ea8f
--- /dev/null
+++ b/tests/data/spec-08-03.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!map {
+ ? !<tag:yaml.org,2002:str> "foo"
+ : !<!bar> "baz"
+}
diff --git a/tests/data/spec-08-03.data b/tests/data/spec-08-03.data
new file mode 100644
index 0000000..8e51f52
--- /dev/null
+++ b/tests/data/spec-08-03.data
@@ -0,0 +1,2 @@
+!<tag:yaml.org,2002:str> foo :
+ !<!bar> baz
diff --git a/tests/data/spec-08-04.data b/tests/data/spec-08-04.data
new file mode 100644
index 0000000..f7d1b01
--- /dev/null
+++ b/tests/data/spec-08-04.data
@@ -0,0 +1,2 @@
+- !<!> foo
+- !<$:?> bar
diff --git a/tests/data/spec-08-04.error b/tests/data/spec-08-04.error
new file mode 100644
index 0000000..6066375
--- /dev/null
+++ b/tests/data/spec-08-04.error
@@ -0,0 +1,6 @@
+ERROR:
+- Verbatim tags aren't resolved,
+ so ! is invalid.
+- The $:? tag is neither a global
+ URI tag nor a local tag starting
+ with “!”.
diff --git a/tests/data/spec-08-05.canonical b/tests/data/spec-08-05.canonical
new file mode 100644
index 0000000..a5c710a
--- /dev/null
+++ b/tests/data/spec-08-05.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !<!local> "foo",
+ !<tag:yaml.org,2002:str> "bar",
+ !<tag:ben-kiki.org,2000:type> "baz",
+]
diff --git a/tests/data/spec-08-05.data b/tests/data/spec-08-05.data
new file mode 100644
index 0000000..93576ed
--- /dev/null
+++ b/tests/data/spec-08-05.data
@@ -0,0 +1,5 @@
+%TAG !o! tag:ben-kiki.org,2000:
+---
+- !local foo
+- !!str bar
+- !o!type baz
diff --git a/tests/data/spec-08-06.data b/tests/data/spec-08-06.data
new file mode 100644
index 0000000..8580010
--- /dev/null
+++ b/tests/data/spec-08-06.data
@@ -0,0 +1,5 @@
+%TAG !o! tag:ben-kiki.org,2000:
+---
+- !$a!b foo
+- !o! bar
+- !h!type baz
diff --git a/tests/data/spec-08-06.error b/tests/data/spec-08-06.error
new file mode 100644
index 0000000..fb76f42
--- /dev/null
+++ b/tests/data/spec-08-06.error
@@ -0,0 +1,4 @@
+ERROR:
+- The !$a! looks like a handle.
+- The !o! handle has no suffix.
+- The !h! handle wasn't declared.
diff --git a/tests/data/spec-08-07.canonical b/tests/data/spec-08-07.canonical
new file mode 100644
index 0000000..eda1adf
--- /dev/null
+++ b/tests/data/spec-08-07.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !<tag:yaml.org,2002:str> "12",
+ !<tag:yaml.org,2002:int> "12",
+ !<tag:yaml.org,2002:str> "12",
+]
diff --git a/tests/data/spec-08-07.data b/tests/data/spec-08-07.data
new file mode 100644
index 0000000..98aa565
--- /dev/null
+++ b/tests/data/spec-08-07.data
@@ -0,0 +1,4 @@
+# Assuming conventional resolution:
+- "12"
+- 12
+- ! 12
diff --git a/tests/data/spec-08-08.canonical b/tests/data/spec-08-08.canonical
new file mode 100644
index 0000000..4f95c0f
--- /dev/null
+++ b/tests/data/spec-08-08.canonical
@@ -0,0 +1,15 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "foo"
+ : !!str "bar baz"
+}
+%YAML 1.1
+---
+!!str "foo bar"
+%YAML 1.1
+---
+!!str "foo bar"
+%YAML 1.1
+---
+!!str "foo bar\n"
diff --git a/tests/data/spec-08-08.data b/tests/data/spec-08-08.data
new file mode 100644
index 0000000..757a93d
--- /dev/null
+++ b/tests/data/spec-08-08.data
@@ -0,0 +1,13 @@
+---
+foo:
+ "bar
+ baz"
+---
+"foo
+ bar"
+---
+foo
+ bar
+--- |
+ foo
+...
diff --git a/tests/data/spec-08-09.canonical b/tests/data/spec-08-09.canonical
new file mode 100644
index 0000000..501cc04
--- /dev/null
+++ b/tests/data/spec-08-09.canonical
@@ -0,0 +1,21 @@
+%YAML 1.1
+--- !!map {
+ ? !!str "scalars" : !!map {
+ ? !!str "plain"
+ : !!str "some text",
+ ? !!str "quoted"
+ : !!map {
+ ? !!str "single"
+ : !!str "some text",
+ ? !!str "double"
+ : !!str "some text"
+ } },
+ ? !!str "collections": : !!map {
+ ? !!str "sequence" : !!seq [
+ ? !!str "entry",
+ : !!map {
+ ? !!str "key" : !!str "value"
+ } ],
+ ? !!str "mapping": : !!map {
+ ? !!str "key" : !!str "value"
+} } }
diff --git a/tests/data/spec-08-09.data b/tests/data/spec-08-09.data
new file mode 100644
index 0000000..8d286d3
--- /dev/null
+++ b/tests/data/spec-08-09.data
@@ -0,0 +1,11 @@
+---
+scalars:
+ plain: !!str some text
+ quoted:
+ single: 'some text'
+ double: "some text"
+collections:
+ sequence: !!seq [ !str entry,
+ # Mapping entry:
+ key: value ]
+ mapping: { key: value }
diff --git a/tests/data/spec-08-10.canonical b/tests/data/spec-08-10.canonical
new file mode 100644
index 0000000..a6702c3
--- /dev/null
+++ b/tests/data/spec-08-10.canonical
@@ -0,0 +1,23 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "block styles" : !!map {
+ ? !!str "scalars" : !!map {
+ ? !!str "literal"
+ : !!str "#!!/usr/bin/perl\n\
+ print \"Hello,
+ world!!\\n\";\n",
+ ? !!str "folded"
+ : !!str "This sentence
+ is false.\n"
+ },
+ ? !!str "collections" : !!map {
+ ? !!str "sequence" : !!seq [
+ !!str "entry",
+ !!map {
+ ? !!str "key" : !!str "value"
+ }
+ ],
+ ? !!str "mapping" : !!map {
+ ? !!str "key" : !!str "value"
+} } } }
diff --git a/tests/data/spec-08-10.data b/tests/data/spec-08-10.data
new file mode 100644
index 0000000..285e462
--- /dev/null
+++ b/tests/data/spec-08-10.data
@@ -0,0 +1,15 @@
+block styles:
+ scalars:
+ literal: !!str |
+ #!/usr/bin/perl
+ print "Hello, world!\n";
+ folded: >
+ This sentence
+ is false.
+ collections: !!seq
+ sequence: !!seq # Entry:
+ - entry # Plain
+ # Mapping entry:
+ - key: value
+ mapping:
+ key: value
diff --git a/tests/data/spec-08-11.canonical b/tests/data/spec-08-11.canonical
new file mode 100644
index 0000000..dd6f76e
--- /dev/null
+++ b/tests/data/spec-08-11.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "First occurrence"
+ : &A !!str "Value",
+ ? !!str "Second occurrence"
+ : *A
+}
diff --git a/tests/data/spec-08-11.data b/tests/data/spec-08-11.data
new file mode 100644
index 0000000..600d179
--- /dev/null
+++ b/tests/data/spec-08-11.data
@@ -0,0 +1,2 @@
+First occurrence: &anchor Value
+Second occurrence: *anchor
diff --git a/tests/data/spec-08-12.canonical b/tests/data/spec-08-12.canonical
new file mode 100644
index 0000000..dc3b81a
--- /dev/null
+++ b/tests/data/spec-08-12.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "Without properties",
+ &A !!str "Anchored",
+ !!str "Tagged",
+ *A,
+ !!str "",
+]
diff --git a/tests/data/spec-08-12.data b/tests/data/spec-08-12.data
new file mode 100644
index 0000000..546617b
--- /dev/null
+++ b/tests/data/spec-08-12.data
@@ -0,0 +1,7 @@
+[
+ Without properties,
+ &anchor "Anchored",
+ !!str 'Tagged',
+ *anchor, # Alias node
+ !!str, # Empty plain scalar
+]
diff --git a/tests/data/spec-08-13.canonical b/tests/data/spec-08-13.canonical
new file mode 100644
index 0000000..62d9f22
--- /dev/null
+++ b/tests/data/spec-08-13.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "foo"
+ : !!str "",
+ ? !!str "",
+ : !!str "bar",
+}
diff --git a/tests/data/spec-08-13.data b/tests/data/spec-08-13.data
new file mode 100644
index 0000000..ebe663a
--- /dev/null
+++ b/tests/data/spec-08-13.data
@@ -0,0 +1,4 @@
+{
+ ? foo :,
+ ? : bar,
+}
diff --git a/tests/data/spec-08-14.canonical b/tests/data/spec-08-14.canonical
new file mode 100644
index 0000000..11db439
--- /dev/null
+++ b/tests/data/spec-08-14.canonical
@@ -0,0 +1,10 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "flow in block",
+ !!str "Block scalar\n",
+ !!map {
+ ? !!str "foo"
+ : !!str "bar"
+ }
+]
diff --git a/tests/data/spec-08-14.data b/tests/data/spec-08-14.data
new file mode 100644
index 0000000..2fbb1f7
--- /dev/null
+++ b/tests/data/spec-08-14.data
@@ -0,0 +1,5 @@
+- "flow in block"
+- >
+ Block scalar
+- !!map # Block collection
+ foo : bar
diff --git a/tests/data/spec-08-15.canonical b/tests/data/spec-08-15.canonical
new file mode 100644
index 0000000..114c667
--- /dev/null
+++ b/tests/data/spec-08-15.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "",
+ !!map {
+ ? !!str "foo"
+ : !!str "",
+ ? !!str "",
+ : !!str "bar",
+ }
+]
diff --git a/tests/data/spec-08-15.data b/tests/data/spec-08-15.data
new file mode 100644
index 0000000..a2958cd
--- /dev/null
+++ b/tests/data/spec-08-15.data
@@ -0,0 +1,6 @@
+seq:
+- # Empty plain scalar
+- ? foo
+ :
+ ?
+ : bar,
diff --git a/tests/data/spec-09-01.canonical b/tests/data/spec-09-01.canonical
new file mode 100644
index 0000000..e71a548
--- /dev/null
+++ b/tests/data/spec-09-01.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "simple key"
+ : !!map {
+ ? !!str "also simple"
+ : !!str "value",
+ ? !!str "not a simple key"
+ : !!str "any value"
+ }
+}
diff --git a/tests/data/spec-09-01.data b/tests/data/spec-09-01.data
new file mode 100644
index 0000000..9e83eaf
--- /dev/null
+++ b/tests/data/spec-09-01.data
@@ -0,0 +1,6 @@
+"simple key" : {
+ "also simple" : value,
+ ? "not a
+ simple key" : "any
+ value"
+}
diff --git a/tests/data/spec-09-02.canonical b/tests/data/spec-09-02.canonical
new file mode 100644
index 0000000..6771065
--- /dev/null
+++ b/tests/data/spec-09-02.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!str "as space \
+ trimmed\n\
+ specific\L\n\
+ escaped\t\
+ none"
diff --git a/tests/data/spec-09-02.data b/tests/data/spec-09-02.data
new file mode 100644
index 0000000..d84883d
--- /dev/null
+++ b/tests/data/spec-09-02.data
@@ -0,0 +1,6 @@
+ "as space
+ trimmed
+
+ specific

+ escaped \

+ none"
diff --git a/tests/data/spec-09-03.canonical b/tests/data/spec-09-03.canonical
new file mode 100644
index 0000000..658c6df
--- /dev/null
+++ b/tests/data/spec-09-03.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !!str " last",
+ !!str " last",
+ !!str " \tfirst last",
+]
diff --git a/tests/data/spec-09-03.data b/tests/data/spec-09-03.data
new file mode 100644
index 0000000..e0b914d
--- /dev/null
+++ b/tests/data/spec-09-03.data
@@ -0,0 +1,6 @@
+- "
+ last"
+- "
+ last"
+- " first
+ last"
diff --git a/tests/data/spec-09-04.canonical b/tests/data/spec-09-04.canonical
new file mode 100644
index 0000000..fa46632
--- /dev/null
+++ b/tests/data/spec-09-04.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!str "first \
+ inner 1 \
+ inner 2 \
+ last"
diff --git a/tests/data/spec-09-04.data b/tests/data/spec-09-04.data
new file mode 100644
index 0000000..313a91b
--- /dev/null
+++ b/tests/data/spec-09-04.data
@@ -0,0 +1,4 @@
+ "first
+ inner 1
+ \ inner 2 \
+ last"
diff --git a/tests/data/spec-09-05.canonical b/tests/data/spec-09-05.canonical
new file mode 100644
index 0000000..24d1052
--- /dev/null
+++ b/tests/data/spec-09-05.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "first ",
+ !!str "first\nlast",
+ !!str "first inner \tlast",
+]
diff --git a/tests/data/spec-09-05.data b/tests/data/spec-09-05.data
new file mode 100644
index 0000000..624c30e
--- /dev/null
+++ b/tests/data/spec-09-05.data
@@ -0,0 +1,8 @@
+- "first
+ "
+- "first
+
+ last"
+- "first
+ inner
+ \ last"
diff --git a/tests/data/spec-09-06.canonical b/tests/data/spec-09-06.canonical
new file mode 100644
index 0000000..5028772
--- /dev/null
+++ b/tests/data/spec-09-06.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "here's to \"quotes\""
diff --git a/tests/data/spec-09-06.data b/tests/data/spec-09-06.data
new file mode 100644
index 0000000..b038078
--- /dev/null
+++ b/tests/data/spec-09-06.data
@@ -0,0 +1 @@
+ 'here''s to "quotes"'
diff --git a/tests/data/spec-09-07.canonical b/tests/data/spec-09-07.canonical
new file mode 100644
index 0000000..e71a548
--- /dev/null
+++ b/tests/data/spec-09-07.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "simple key"
+ : !!map {
+ ? !!str "also simple"
+ : !!str "value",
+ ? !!str "not a simple key"
+ : !!str "any value"
+ }
+}
diff --git a/tests/data/spec-09-07.data b/tests/data/spec-09-07.data
new file mode 100644
index 0000000..755b54a
--- /dev/null
+++ b/tests/data/spec-09-07.data
@@ -0,0 +1,6 @@
+'simple key' : {
+ 'also simple' : value,
+ ? 'not a
+ simple key' : 'any
+ value'
+}
diff --git a/tests/data/spec-09-08.canonical b/tests/data/spec-09-08.canonical
new file mode 100644
index 0000000..06abdb5
--- /dev/null
+++ b/tests/data/spec-09-08.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!str "as space \
+ trimmed\n\
+ specific\L\n\
+ none"
diff --git a/tests/data/spec-09-08.data b/tests/data/spec-09-08.data
new file mode 100644
index 0000000..aa4d458
--- /dev/null
+++ b/tests/data/spec-09-08.data
@@ -0,0 +1 @@
+ 'as space … trimmed …… specific
… none'
diff --git a/tests/data/spec-09-09.canonical b/tests/data/spec-09-09.canonical
new file mode 100644
index 0000000..658c6df
--- /dev/null
+++ b/tests/data/spec-09-09.canonical
@@ -0,0 +1,7 @@
+%YAML 1.1
+---
+!!seq [
+ !!str " last",
+ !!str " last",
+ !!str " \tfirst last",
+]
diff --git a/tests/data/spec-09-09.data b/tests/data/spec-09-09.data
new file mode 100644
index 0000000..52171df
--- /dev/null
+++ b/tests/data/spec-09-09.data
@@ -0,0 +1,6 @@
+- '
+ last'
+- '
+ last'
+- ' first
+ last'
diff --git a/tests/data/spec-09-10.canonical b/tests/data/spec-09-10.canonical
new file mode 100644
index 0000000..2028d04
--- /dev/null
+++ b/tests/data/spec-09-10.canonical
@@ -0,0 +1,5 @@
+%YAML 1.1
+---
+!!str "first \
+ inner \
+ last"
diff --git a/tests/data/spec-09-10.data b/tests/data/spec-09-10.data
new file mode 100644
index 0000000..0e41449
--- /dev/null
+++ b/tests/data/spec-09-10.data
@@ -0,0 +1,3 @@
+ 'first
+ inner
+ last'
diff --git a/tests/data/spec-09-11.canonical b/tests/data/spec-09-11.canonical
new file mode 100644
index 0000000..4eb222c
--- /dev/null
+++ b/tests/data/spec-09-11.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "first ",
+ !!str "first\nlast",
+]
diff --git a/tests/data/spec-09-11.data b/tests/data/spec-09-11.data
new file mode 100644
index 0000000..5efa873
--- /dev/null
+++ b/tests/data/spec-09-11.data
@@ -0,0 +1,5 @@
+- 'first
+ '
+- 'first
+
+ last'
diff --git a/tests/data/spec-09-12.canonical b/tests/data/spec-09-12.canonical
new file mode 100644
index 0000000..d8e6dce
--- /dev/null
+++ b/tests/data/spec-09-12.canonical
@@ -0,0 +1,12 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "::std::vector",
+ !!str "Up, up, and away!",
+ !!int "-123",
+ !!seq [
+ !!str "::std::vector",
+ !!str "Up, up, and away!",
+ !!int "-123",
+ ]
+]
diff --git a/tests/data/spec-09-12.data b/tests/data/spec-09-12.data
new file mode 100644
index 0000000..f91b26c
--- /dev/null
+++ b/tests/data/spec-09-12.data
@@ -0,0 +1,8 @@
+# Outside flow collection:
+- ::std::vector
+- Up, up and away!
+- -123
+# Inside flow collection:
+- [ ::std::vector,
+ "Up, up and away!",
+ -123 ]
diff --git a/tests/data/spec-09-13.canonical b/tests/data/spec-09-13.canonical
new file mode 100644
index 0000000..e71a548
--- /dev/null
+++ b/tests/data/spec-09-13.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "simple key"
+ : !!map {
+ ? !!str "also simple"
+ : !!str "value",
+ ? !!str "not a simple key"
+ : !!str "any value"
+ }
+}
diff --git a/tests/data/spec-09-13.data b/tests/data/spec-09-13.data
new file mode 100644
index 0000000..b156386
--- /dev/null
+++ b/tests/data/spec-09-13.data
@@ -0,0 +1,6 @@
+simple key : {
+ also simple : value,
+ ? not a
+ simple key : any
+ value
+}
diff --git a/tests/data/spec-09-14.data b/tests/data/spec-09-14.data
new file mode 100644
index 0000000..97f2316
--- /dev/null
+++ b/tests/data/spec-09-14.data
@@ -0,0 +1,14 @@
+---
+--- ||| : foo
+... >>>: bar
+---
+[
+---
+,
+... ,
+{
+--- :
+... # Nested
+}
+]
+...
diff --git a/tests/data/spec-09-14.error b/tests/data/spec-09-14.error
new file mode 100644
index 0000000..9f3db7b
--- /dev/null
+++ b/tests/data/spec-09-14.error
@@ -0,0 +1,6 @@
+ERROR:
+ The --- and ... document
+ start and end markers must
+ not be specified as the
+ first content line of a
+ non-indented plain scalar.
diff --git a/tests/data/spec-09-15.canonical b/tests/data/spec-09-15.canonical
new file mode 100644
index 0000000..20f60ed
--- /dev/null
+++ b/tests/data/spec-09-15.canonical
@@ -0,0 +1,18 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "---"
+ : !!str "foo",
+ ? !!str "...",
+ : !!str "bar"
+}
+%YAML 1.1
+---
+!!seq [
+ !!str "---",
+ !!str "...",
+ !!map {
+ ? !!str "---"
+ : !!str "..."
+ }
+]
diff --git a/tests/data/spec-09-15.data b/tests/data/spec-09-15.data
new file mode 100644
index 0000000..e6863b0
--- /dev/null
+++ b/tests/data/spec-09-15.data
@@ -0,0 +1,13 @@
+---
+"---" : foo
+...: bar
+---
+[
+---,
+...,
+{
+? ---
+: ...
+}
+]
+...
diff --git a/tests/data/spec-09-16.canonical b/tests/data/spec-09-16.canonical
new file mode 100644
index 0000000..06abdb5
--- /dev/null
+++ b/tests/data/spec-09-16.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!str "as space \
+ trimmed\n\
+ specific\L\n\
+ none"
diff --git a/tests/data/spec-09-16.data b/tests/data/spec-09-16.data
new file mode 100644
index 0000000..eec5c76
--- /dev/null
+++ b/tests/data/spec-09-16.data
@@ -0,0 +1 @@
+ as space … trimmed …… specific
… none
diff --git a/tests/data/spec-09-17.canonical b/tests/data/spec-09-17.canonical
new file mode 100644
index 0000000..68cb70d
--- /dev/null
+++ b/tests/data/spec-09-17.canonical
@@ -0,0 +1,4 @@
+%YAML 1.1
+---
+!!str "first line\n\
+ more line"
diff --git a/tests/data/spec-09-17.data b/tests/data/spec-09-17.data
new file mode 100644
index 0000000..97bc46c
--- /dev/null
+++ b/tests/data/spec-09-17.data
@@ -0,0 +1,3 @@
+ first line
+
+ more line
diff --git a/tests/data/spec-09-18.canonical b/tests/data/spec-09-18.canonical
new file mode 100644
index 0000000..f21428f
--- /dev/null
+++ b/tests/data/spec-09-18.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "literal\n",
+ !!str " folded\n",
+ !!str "keep\n\n",
+ !!str " strip",
+]
diff --git a/tests/data/spec-09-18.data b/tests/data/spec-09-18.data
new file mode 100644
index 0000000..68c5d7c
--- /dev/null
+++ b/tests/data/spec-09-18.data
@@ -0,0 +1,9 @@
+- | # Just the style
+ literal
+- >1 # Indentation indicator
+ folded
+- |+ # Chomping indicator
+ keep
+
+- >-1 # Both indicators
+ strip
diff --git a/tests/data/spec-09-19.canonical b/tests/data/spec-09-19.canonical
new file mode 100644
index 0000000..3e828d7
--- /dev/null
+++ b/tests/data/spec-09-19.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "literal\n",
+ !!str "folded\n",
+]
diff --git a/tests/data/spec-09-19.data b/tests/data/spec-09-19.data
new file mode 100644
index 0000000..f0e589d
--- /dev/null
+++ b/tests/data/spec-09-19.data
@@ -0,0 +1,4 @@
+- |
+ literal
+- >
+ folded
diff --git a/tests/data/spec-09-20.canonical b/tests/data/spec-09-20.canonical
new file mode 100644
index 0000000..3f697e2
--- /dev/null
+++ b/tests/data/spec-09-20.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "detected\n",
+ !!str "\n\n# detected\n",
+ !!str " explicit\n",
+ !!str "\t detected\n",
+]
diff --git a/tests/data/spec-09-20.data b/tests/data/spec-09-20.data
new file mode 100644
index 0000000..39bee04
--- /dev/null
+++ b/tests/data/spec-09-20.data
@@ -0,0 +1,11 @@
+- |
+ detected
+- >
+
+
+ # detected
+- |1
+ explicit
+- >
+
+ detected
diff --git a/tests/data/spec-09-21.canonical b/tests/data/spec-09-21.canonical
new file mode 100644
index 0000000..1379ca5
--- /dev/null
+++ b/tests/data/spec-09-21.canonical
@@ -0,0 +1,7 @@
+ERROR:
+- A leading all-space line must
+ not have too many spaces.
+- A following text line must
+ not be less indented.
+- The text is less indented
+ than the indicated level.
diff --git a/tests/data/spec-09-21.data b/tests/data/spec-09-21.data
new file mode 100644
index 0000000..0fdd14f
--- /dev/null
+++ b/tests/data/spec-09-21.data
@@ -0,0 +1,8 @@
+- |
+
+ text
+- >
+ text
+ text
+- |1
+ text
diff --git a/tests/data/spec-09-22.canonical b/tests/data/spec-09-22.canonical
new file mode 100644
index 0000000..c1bbcd2
--- /dev/null
+++ b/tests/data/spec-09-22.canonical
@@ -0,0 +1,10 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "strip"
+ : !!str "text",
+ ? !!str "clip"
+ : !!str "text\n",
+ ? !!str "keep"
+ : !!str "text\L",
+}
diff --git a/tests/data/spec-09-22.data b/tests/data/spec-09-22.data
new file mode 100644
index 0000000..0dd51eb
--- /dev/null
+++ b/tests/data/spec-09-22.data
@@ -0,0 +1,4 @@
+strip: |-
+ text
clip: |
+ text…keep: |+
+ text
 \ No newline at end of file
diff --git a/tests/data/spec-09-23.canonical b/tests/data/spec-09-23.canonical
new file mode 100644
index 0000000..ef248ea
--- /dev/null
+++ b/tests/data/spec-09-23.canonical
@@ -0,0 +1,10 @@
+%YAML 1.1
+---
+!!seq [
+ ? !!str "strip"
+ : !!str "# text",
+ ? !!str "clip"
+ : !!str "# text\n",
+ ? !!str "keep"
+ : !!str "# text\L\n",
+]
diff --git a/tests/data/spec-09-23.data b/tests/data/spec-09-23.data
new file mode 100644
index 0000000..8972d2b
--- /dev/null
+++ b/tests/data/spec-09-23.data
@@ -0,0 +1,11 @@
+ # Strip
+ # Comments:
+strip: |-
+ # text
 
 # Clip
+ # comments:
+…clip: |
+ # text… 
 # Keep
+ # comments:
+…keep: |+
+ # text
… # Trail
+ # comments.
diff --git a/tests/data/spec-09-24.canonical b/tests/data/spec-09-24.canonical
new file mode 100644
index 0000000..4ce926a
--- /dev/null
+++ b/tests/data/spec-09-24.canonical
@@ -0,0 +1,10 @@
+%YAML 1.1
+---
+!!seq [
+ ? !!str "strip"
+ : !!str "",
+ ? !!str "clip"
+ : !!str "",
+ ? !!str "keep"
+ : !!str "\n",
+]
diff --git a/tests/data/spec-09-24.data b/tests/data/spec-09-24.data
new file mode 100644
index 0000000..de0b64b
--- /dev/null
+++ b/tests/data/spec-09-24.data
@@ -0,0 +1,6 @@
+strip: >-
+
+clip: >
+
+keep: |+
+
diff --git a/tests/data/spec-09-25.canonical b/tests/data/spec-09-25.canonical
new file mode 100644
index 0000000..0a545c1
--- /dev/null
+++ b/tests/data/spec-09-25.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "literal\n\
+ \ttext\n"
+]
diff --git a/tests/data/spec-09-25.data b/tests/data/spec-09-25.data
new file mode 100644
index 0000000..84da455
--- /dev/null
+++ b/tests/data/spec-09-25.data
@@ -0,0 +1,3 @@
+| # Simple block scalar
+ literal
+ text
diff --git a/tests/data/spec-09-26.canonical b/tests/data/spec-09-26.canonical
new file mode 100644
index 0000000..cbbf46a
--- /dev/null
+++ b/tests/data/spec-09-26.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "\nliteral\n\ntext\n"
diff --git a/tests/data/spec-09-26.data b/tests/data/spec-09-26.data
new file mode 100644
index 0000000..f28555a
--- /dev/null
+++ b/tests/data/spec-09-26.data
@@ -0,0 +1,8 @@
+|
+
+
+ literal
+
+ text
+
+ # Comment
diff --git a/tests/data/spec-09-27.canonical b/tests/data/spec-09-27.canonical
new file mode 100644
index 0000000..cbbf46a
--- /dev/null
+++ b/tests/data/spec-09-27.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "\nliteral\n\ntext\n"
diff --git a/tests/data/spec-09-27.data b/tests/data/spec-09-27.data
new file mode 100644
index 0000000..f28555a
--- /dev/null
+++ b/tests/data/spec-09-27.data
@@ -0,0 +1,8 @@
+|
+
+
+ literal
+
+ text
+
+ # Comment
diff --git a/tests/data/spec-09-28.canonical b/tests/data/spec-09-28.canonical
new file mode 100644
index 0000000..cbbf46a
--- /dev/null
+++ b/tests/data/spec-09-28.canonical
@@ -0,0 +1,3 @@
+%YAML 1.1
+---
+!!str "\nliteral\n\ntext\n"
diff --git a/tests/data/spec-09-28.data b/tests/data/spec-09-28.data
new file mode 100644
index 0000000..f28555a
--- /dev/null
+++ b/tests/data/spec-09-28.data
@@ -0,0 +1,8 @@
+|
+
+
+ literal
+
+ text
+
+ # Comment
diff --git a/tests/data/spec-09-29.canonical b/tests/data/spec-09-29.canonical
new file mode 100644
index 0000000..7cbf319
--- /dev/null
+++ b/tests/data/spec-09-29.canonical
@@ -0,0 +1,6 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "folded text\n\
+ \tlines\n"
+]
diff --git a/tests/data/spec-09-29.data b/tests/data/spec-09-29.data
new file mode 100644
index 0000000..82e611f
--- /dev/null
+++ b/tests/data/spec-09-29.data
@@ -0,0 +1,4 @@
+> # Simple folded scalar
+ folded
+ text
+ lines
diff --git a/tests/data/spec-09-30.canonical b/tests/data/spec-09-30.canonical
new file mode 100644
index 0000000..fbade17
--- /dev/null
+++ b/tests/data/spec-09-30.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "folded line\n\
+ next line\n\
+ \ * bullet\n\
+ \ * list\n\
+ last line\n"
+]
diff --git a/tests/data/spec-09-30.data b/tests/data/spec-09-30.data
new file mode 100644
index 0000000..a4d8c36
--- /dev/null
+++ b/tests/data/spec-09-30.data
@@ -0,0 +1,14 @@
+>
+ folded
+ line
+
+ next
+ line
+
+ * bullet
+ * list
+
+ last
+ line
+
+# Comment
diff --git a/tests/data/spec-09-31.canonical b/tests/data/spec-09-31.canonical
new file mode 100644
index 0000000..fbade17
--- /dev/null
+++ b/tests/data/spec-09-31.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "folded line\n\
+ next line\n\
+ \ * bullet\n\
+ \ * list\n\
+ last line\n"
+]
diff --git a/tests/data/spec-09-31.data b/tests/data/spec-09-31.data
new file mode 100644
index 0000000..a4d8c36
--- /dev/null
+++ b/tests/data/spec-09-31.data
@@ -0,0 +1,14 @@
+>
+ folded
+ line
+
+ next
+ line
+
+ * bullet
+ * list
+
+ last
+ line
+
+# Comment
diff --git a/tests/data/spec-09-32.canonical b/tests/data/spec-09-32.canonical
new file mode 100644
index 0000000..fbade17
--- /dev/null
+++ b/tests/data/spec-09-32.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "folded line\n\
+ next line\n\
+ \ * bullet\n\
+ \ * list\n\
+ last line\n"
+]
diff --git a/tests/data/spec-09-32.data b/tests/data/spec-09-32.data
new file mode 100644
index 0000000..a4d8c36
--- /dev/null
+++ b/tests/data/spec-09-32.data
@@ -0,0 +1,14 @@
+>
+ folded
+ line
+
+ next
+ line
+
+ * bullet
+ * list
+
+ last
+ line
+
+# Comment
diff --git a/tests/data/spec-09-33.canonical b/tests/data/spec-09-33.canonical
new file mode 100644
index 0000000..fbade17
--- /dev/null
+++ b/tests/data/spec-09-33.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "folded line\n\
+ next line\n\
+ \ * bullet\n\
+ \ * list\n\
+ last line\n"
+]
diff --git a/tests/data/spec-09-33.data b/tests/data/spec-09-33.data
new file mode 100644
index 0000000..a4d8c36
--- /dev/null
+++ b/tests/data/spec-09-33.data
@@ -0,0 +1,14 @@
+>
+ folded
+ line
+
+ next
+ line
+
+ * bullet
+ * list
+
+ last
+ line
+
+# Comment
diff --git a/tests/data/spec-10-01.canonical b/tests/data/spec-10-01.canonical
new file mode 100644
index 0000000..d08cdd4
--- /dev/null
+++ b/tests/data/spec-10-01.canonical
@@ -0,0 +1,12 @@
+%YAML 1.1
+---
+!!seq [
+ !!seq [
+ !!str "inner",
+ !!str "inner",
+ ],
+ !!seq [
+ !!str "inner",
+ !!str "last",
+ ],
+]
diff --git a/tests/data/spec-10-01.data b/tests/data/spec-10-01.data
new file mode 100644
index 0000000..e668d38
--- /dev/null
+++ b/tests/data/spec-10-01.data
@@ -0,0 +1,2 @@
+- [ inner, inner, ]
+- [inner,last]
diff --git a/tests/data/spec-10-02.canonical b/tests/data/spec-10-02.canonical
new file mode 100644
index 0000000..82fe0d9
--- /dev/null
+++ b/tests/data/spec-10-02.canonical
@@ -0,0 +1,14 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "double quoted",
+ !!str "single quoted",
+ !!str "plain text",
+ !!seq [
+ !!str "nested",
+ ],
+ !!map {
+ ? !!str "single"
+ : !!str "pair"
+ }
+]
diff --git a/tests/data/spec-10-02.data b/tests/data/spec-10-02.data
new file mode 100644
index 0000000..3b23351
--- /dev/null
+++ b/tests/data/spec-10-02.data
@@ -0,0 +1,8 @@
+[
+"double
+ quoted", 'single
+ quoted',
+plain
+ text, [ nested ],
+single: pair ,
+]
diff --git a/tests/data/spec-10-03.canonical b/tests/data/spec-10-03.canonical
new file mode 100644
index 0000000..1443395
--- /dev/null
+++ b/tests/data/spec-10-03.canonical
@@ -0,0 +1,12 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "block"
+ : !!seq [
+ !!str "one",
+ !!map {
+ ? !!str "two"
+ : !!str "three"
+ }
+ ]
+}
diff --git a/tests/data/spec-10-03.data b/tests/data/spec-10-03.data
new file mode 100644
index 0000000..9e15f83
--- /dev/null
+++ b/tests/data/spec-10-03.data
@@ -0,0 +1,4 @@
+block: # Block
+ # sequence
+- one
+- two : three
diff --git a/tests/data/spec-10-04.canonical b/tests/data/spec-10-04.canonical
new file mode 100644
index 0000000..ae486a3
--- /dev/null
+++ b/tests/data/spec-10-04.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "block"
+ : !!seq [
+ !!str "one",
+ !!seq [
+ !!str "two"
+ ]
+ ]
+}
diff --git a/tests/data/spec-10-04.data b/tests/data/spec-10-04.data
new file mode 100644
index 0000000..2905b0d
--- /dev/null
+++ b/tests/data/spec-10-04.data
@@ -0,0 +1,4 @@
+block:
+- one
+-
+ - two
diff --git a/tests/data/spec-10-05.canonical b/tests/data/spec-10-05.canonical
new file mode 100644
index 0000000..a872ba2
--- /dev/null
+++ b/tests/data/spec-10-05.canonical
@@ -0,0 +1,14 @@
+%YAML 1.1
+---
+!!seq [
+ !!str "",
+ !!str "block node\n",
+ !!seq [
+ !!str "one",
+ !!str "two",
+ ]
+ !!map {
+ ? !!str "one"
+ : !!str "two",
+ }
+]
diff --git a/tests/data/spec-10-05.data b/tests/data/spec-10-05.data
new file mode 100644
index 0000000..f19a99e
--- /dev/null
+++ b/tests/data/spec-10-05.data
@@ -0,0 +1,7 @@
+- # Empty
+- |
+ block node
+- - one # in-line
+ - two # sequence
+- one: two # in-line
+ # mapping
diff --git a/tests/data/spec-10-06.canonical b/tests/data/spec-10-06.canonical
new file mode 100644
index 0000000..d9986c2
--- /dev/null
+++ b/tests/data/spec-10-06.canonical
@@ -0,0 +1,16 @@
+%YAML 1.1
+---
+!!seq [
+ !!map {
+ ? !!str "inner"
+ : !!str "entry",
+ ? !!str "also"
+ : !!str "inner"
+ },
+ !!map {
+ ? !!str "inner"
+ : !!str "entry",
+ ? !!str "last"
+ : !!str "entry"
+ }
+]
diff --git a/tests/data/spec-10-06.data b/tests/data/spec-10-06.data
new file mode 100644
index 0000000..860ba25
--- /dev/null
+++ b/tests/data/spec-10-06.data
@@ -0,0 +1,2 @@
+- { inner : entry , also: inner , }
+- {inner: entry,last : entry}
diff --git a/tests/data/spec-10-07.canonical b/tests/data/spec-10-07.canonical
new file mode 100644
index 0000000..6372e34
--- /dev/null
+++ b/tests/data/spec-10-07.canonical
@@ -0,0 +1,16 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str ""
+ : !!str "value",
+ ? !!str "explicit key"
+ : !!str "value",
+ ? !!str "simple key"
+ : !!str "value",
+ ? !!seq [
+ !!str "collection",
+ !!str "simple",
+ !!str "key"
+ ]
+ : !!str "value"
+}
diff --git a/tests/data/spec-10-07.data b/tests/data/spec-10-07.data
new file mode 100644
index 0000000..c4539c7
--- /dev/null
+++ b/tests/data/spec-10-07.data
@@ -0,0 +1,7 @@
+{
+? : value # Empty key
+? explicit
+ key: value,
+simple key : value
+[ collection, simple, key ]: value
+}
diff --git a/tests/data/spec-10-08.canonical b/tests/data/spec-10-08.canonical
new file mode 100644
index 0000000..3979e1f
--- /dev/null
+++ b/tests/data/spec-10-08.canonical
@@ -0,0 +1,5 @@
+ERROR:
+- A simple key is restricted
+ to only one line.
+- A simple key must not be
+ longer than 1024 characters.
diff --git a/tests/data/spec-10-08.data b/tests/data/spec-10-08.data
new file mode 100644
index 0000000..55bd788
--- /dev/null
+++ b/tests/data/spec-10-08.data
@@ -0,0 +1,5 @@
+{
+multi-line
+ simple key : value,
+very long ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................(>1KB)................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... key: value
+}
diff --git a/tests/data/spec-10-09.canonical b/tests/data/spec-10-09.canonical
new file mode 100644
index 0000000..d94fea6
--- /dev/null
+++ b/tests/data/spec-10-09.canonical
@@ -0,0 +1,8 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "key"
+ : !!str "value",
+ ? !!str "empty"
+ : !!str "",
+}
diff --git a/tests/data/spec-10-09.data b/tests/data/spec-10-09.data
new file mode 100644
index 0000000..4d55e21
--- /dev/null
+++ b/tests/data/spec-10-09.data
@@ -0,0 +1,4 @@
+{
+key : value,
+empty: # empty value↓
+}
diff --git a/tests/data/spec-10-10.canonical b/tests/data/spec-10-10.canonical
new file mode 100644
index 0000000..0bcb8d1
--- /dev/null
+++ b/tests/data/spec-10-10.canonical
@@ -0,0 +1,16 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "explicit key1"
+ : !!str "explicit value",
+ ? !!str "explicit key2"
+ : !!str "",
+ ? !!str "explicit key3"
+ : !!str "",
+ ? !!str "simple key1"
+ : !!str "explicit value",
+ ? !!str "simple key2"
+ : !!str "",
+ ? !!str "simple key3"
+ : !!str "",
+}
diff --git a/tests/data/spec-10-10.data b/tests/data/spec-10-10.data
new file mode 100644
index 0000000..03abb4e
--- /dev/null
+++ b/tests/data/spec-10-10.data
@@ -0,0 +1,8 @@
+{
+? explicit key1 : Explicit value,
+? explicit key2 : , # Explicit empty
+? explicit key3, # Empty value
+simple key1 : explicit value,
+simple key2 : , # Explicit empty
+simple key3, # Empty value
+}
diff --git a/tests/data/spec-10-11.canonical b/tests/data/spec-10-11.canonical
new file mode 100644
index 0000000..08abe5e
--- /dev/null
+++ b/tests/data/spec-10-11.canonical
@@ -0,0 +1,24 @@
+%YAML 1.1
+---
+!!seq [
+ !!map {
+ ? !!str "explicit key1"
+ : !!str "explicit value",
+ },
+ !!map {
+ ? !!str "explicit key2"
+ : !!str "",
+ },
+ !!map {
+ ? !!str "explicit key3"
+ : !!str "",
+ },
+ !!map {
+ ? !!str "simple key1"
+ : !!str "explicit value",
+ },
+ !!map {
+ ? !!str "simple key2"
+ : !!str "",
+ },
+]
diff --git a/tests/data/spec-10-11.data b/tests/data/spec-10-11.data
new file mode 100644
index 0000000..9f05568
--- /dev/null
+++ b/tests/data/spec-10-11.data
@@ -0,0 +1,7 @@
+[
+? explicit key1 : explicit value,
+? explicit key2 : , # Explicit empty
+? explicit key3, # Implicit empty
+simple key1 : explicit value,
+simple key2 : , # Explicit empty
+]
diff --git a/tests/data/spec-10-12.canonical b/tests/data/spec-10-12.canonical
new file mode 100644
index 0000000..4197597
--- /dev/null
+++ b/tests/data/spec-10-12.canonical
@@ -0,0 +1,9 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "block"
+ : !!map {
+ ? !!str "key",
+ : !!str "value"
+ }
+}
diff --git a/tests/data/spec-10-12.data b/tests/data/spec-10-12.data
new file mode 100644
index 0000000..5521443
--- /dev/null
+++ b/tests/data/spec-10-12.data
@@ -0,0 +1,3 @@
+block: # Block
+ # mapping
+ key: value
diff --git a/tests/data/spec-10-13.canonical b/tests/data/spec-10-13.canonical
new file mode 100644
index 0000000..a8f64bd
--- /dev/null
+++ b/tests/data/spec-10-13.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "explicit key"
+ : !!str "",
+ ? !!str "block key\n"
+ : !!seq [
+ !!str "one",
+ !!str "two",
+ ]
+}
diff --git a/tests/data/spec-10-13.data b/tests/data/spec-10-13.data
new file mode 100644
index 0000000..b5b97db
--- /dev/null
+++ b/tests/data/spec-10-13.data
@@ -0,0 +1,5 @@
+? explicit key # implicit value
+? |
+ block key
+: - one # explicit in-line
+ - two # block value
diff --git a/tests/data/spec-10-14.canonical b/tests/data/spec-10-14.canonical
new file mode 100644
index 0000000..cfeec67
--- /dev/null
+++ b/tests/data/spec-10-14.canonical
@@ -0,0 +1,11 @@
+%YAML 1.1
+---
+!!map {
+ ? !!str "plain key"
+ : !!str "",
+ ? !!str "quoted key\n"
+ : !!seq [
+ !!str "one",
+ !!str "two",
+ ]
+}
diff --git a/tests/data/spec-10-14.data b/tests/data/spec-10-14.data
new file mode 100644
index 0000000..7f5995c
--- /dev/null
+++ b/tests/data/spec-10-14.data
@@ -0,0 +1,4 @@
+plain key: # empty value
+"quoted key":
+- one # explicit next-line
+- two # block value
diff --git a/tests/data/spec-10-15.canonical b/tests/data/spec-10-15.canonical
new file mode 100644
index 0000000..ffcffaf
--- /dev/null
+++ b/tests/data/spec-10-15.canonical
@@ -0,0 +1,18 @@
+%YAML 1.1
+---
+!!seq {
+ !!map {
+ ? !!str "sun"
+ : !!str "yellow",
+ },
+ !!map {
+ ? !!map {
+ ? !!str "earth"
+ : !!str "blue"
+ }
+ : !!map {
+ ? !!str "moon"
+ : !!str "white"
+ }
+ }
+}
diff --git a/tests/data/spec-10-15.data b/tests/data/spec-10-15.data
new file mode 100644
index 0000000..d675cfd
--- /dev/null
+++ b/tests/data/spec-10-15.data
@@ -0,0 +1,3 @@
+- sun: yellow
+- ? earth: blue
+ : moon: white