Home | History | Annotate | Download | only in testdata
      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
     35 Capturing subpattern count = 2
     36 Max back reference = 2
     37 Named capturing subpatterns:
     38   n   1
     39   n   2
     40 Options: dupnames
     41 Starting code units: b f 
     42 Subject 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
     55 MK: A
     56 \= Expect no match
     57     D
     58 No 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
     69 Capturing subpattern count = 4
     70 Named capturing subpatterns:
     71   ADDR          2
     72   ADDRESS_PAT   4
     73   NAME          1
     74   NAME_PAT      3
     75 Options: extended
     76 Subject 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
     87 Serialization 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