1# This set of tests exercises the serialization/deserialization and code copy 2# functions in the library. It does not use UTF or JIT. 3 4#forbid_utf 5 6# Compile several patterns, push them onto the stack, and then write them 7# all to a file. 8 9#pattern push 10 11/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) 12 (?(DEFINE) 13 (?<NAME_PAT>[a-z]+) 14 (?<ADDRESS_PAT>\d+) 15 )/x 16/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i 17 18#save testsaved1 19 20# Do it again for some more patterns. 21 22/(*MARK:A)(*SKIP:B)(C|X)/mark 23** Ignored when compiled pattern is stacked with 'push': mark 24/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames 25 26#save testsaved2 27#pattern -push 28 29# Reload the patterns, then pop them one by one and check them. 30 31#load testsaved1 32#load testsaved2 33 34#pop info 35Capturing subpattern count = 2 36Max back reference = 2 37Named capturing subpatterns: 38 n 1 39 n 2 40Options: dupnames 41Starting code units: b f 42Subject length lower bound = 6 43 foofoo 44 0: foofoo 45 1: foo 46 barbar 47 0: barbar 48 1: <unset> 49 2: bar 50 51#pop mark 52 C 53 0: C 54 1: C 55MK: A 56\= Expect no match 57 D 58No match, mark = A 59 60#pop 61 AmanaplanacanalPanama 62 0: AmanaplanacanalPanama 63 1: <unset> 64 2: <unset> 65 3: AmanaplanacanalPanama 66 4: A 67 68#pop info 69Capturing subpattern count = 4 70Named capturing subpatterns: 71 ADDR 2 72 ADDRESS_PAT 4 73 NAME 1 74 NAME_PAT 3 75Options: extended 76Subject length lower bound = 3 77 metcalfe 33 78 0: metcalfe 33 79 1: metcalfe 80 2: 33 81 82# Check for an error when different tables are used. 83 84/abc/push,tables=1 85/xyz/push,tables=2 86#save testsaved1 87Serialization failed: error -30: patterns do not all use the same character tables 88 89#pop 90 xyz 91 0: xyz 92 93#pop 94 abc 95 0: abc 96 97#pop should give an error 98** Can't pop off an empty stack 99 pqr 100 101/abcd/pushcopy 102 abcd 103 0: abcd 104 105#pop 106 abcd 107 0: abcd 108 109#pop should give an error 110** Can't pop off an empty stack 111 112/abcd/push 113#popcopy 114 abcd 115 0: abcd 116 117#pop 118 abcd 119 0: abcd 120 121/abcd/push 122#save testsaved1 123#pop should give an error 124** Can't pop off an empty stack 125 126#load testsaved1 127#popcopy 128 abcd 129 0: abcd 130 131#pop 132 abcd 133 0: abcd 134 135#pop should give an error 136** Can't pop off an empty stack 137 138/abcd/pushtablescopy 139 abcd 140 0: abcd 141 142#popcopy 143 abcd 144 0: abcd 145 146#pop 147 abcd 148 0: abcd 149 150# Must only specify one of these 151 152//push,pushcopy 153** Not allowed together: push pushcopy 154 155//push,pushtablescopy 156** Not allowed together: push pushtablescopy 157 158//pushcopy,pushtablescopy 159** Not allowed together: pushcopy pushtablescopy 160 161# End of testinput20 162