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