| 266 | |
| 267 | |
| 268 | def test_basic_pattern_matching(): |
| 269 | # ( -a N [ -x Z ] ) |
| 270 | pattern = Required(Option('-a'), Argument('N'), |
| 271 | Optional(Option('-x'), Argument('Z'))) |
| 272 | # -a N |
| 273 | assert pattern.match([Option('-a'), Argument(None, 9)]) == \ |
| 274 | (True, [], [Option('-a'), Argument('N', 9)]) |
| 275 | # -a -x N Z |
| 276 | assert pattern.match([Option('-a'), Option('-x'), |
| 277 | Argument(None, 9), Argument(None, 5)]) == \ |
| 278 | (True, [], [Option('-a'), Argument('N', 9), |
| 279 | Option('-x'), Argument('Z', 5)]) |
| 280 | # -x N Z # BZZ! |
| 281 | assert pattern.match([Option('-x'), |
| 282 | Argument(None, 9), |
| 283 | Argument(None, 5)]) == \ |
| 284 | (False, [Option('-x'), Argument(None, 9), Argument(None, 5)], []) |
| 285 | |
| 286 | |
| 287 | def test_pattern_either(): |