--- /dev/null
+# This set of tests exercises the serialization/deserialization and code copy
+# functions in the library. It does not use UTF or JIT.
+
+#forbid_utf
+
+# Compile several patterns, push them onto the stack, and then write them
+# all to a file.
+
+#pattern push
+
+/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
+ (?(DEFINE)
+ (?<NAME_PAT>[a-z]+)
+ (?<ADDRESS_PAT>\d+)
+ )/x
+/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
+
+#save testsaved1
+
+# Do it again for some more patterns.
+
+/(*MARK:A)(*SKIP:B)(C|X)/mark
+/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
+
+#save testsaved2
+#pattern -push
+
+# Reload the patterns, then pop them one by one and check them.
+
+#load testsaved1
+#load testsaved2
+
+#pop info
+ foofoo
+ barbar
+
+#pop mark
+ C
+\= Expect no match
+ D
+
+#pop
+ AmanaplanacanalPanama
+
+#pop info
+ metcalfe 33
+
+# Check for an error when different tables are used.
+
+/abc/push,tables=1
+/xyz/push,tables=2
+#save testsaved1
+
+#pop
+ xyz
+
+#pop
+ abc
+
+#pop should give an error
+ pqr
+
+/abcd/pushcopy
+ abcd
+
+#pop
+ abcd
+
+#pop should give an error
+
+/abcd/push
+#popcopy
+ abcd
+
+#pop
+ abcd
+
+/abcd/push
+#save testsaved1
+#pop should give an error
+
+#load testsaved1
+#popcopy
+ abcd
+
+#pop
+ abcd
+
+#pop should give an error
+
+/abcd/pushtablescopy
+ abcd
+
+#popcopy
+ abcd
+
+#pop
+ abcd
+
+# Must only specify one of these
+
+//push,pushcopy
+
+//push,pushtablescopy
+
+//pushcopy,pushtablescopy
+
+# End of testinput20