#
source:
trunk/sandbox/my-parser/parser2_test.py
@
37

Revision 37, 15.1 KB checked in by xi, 9 years ago (diff) |
---|

Line | |
---|---|

1 | |

2 | import unittest |

3 | import parser2 |

4 | |

5 | EX1 = r""" |

6 | - Mark McGwire |

7 | - Sammy Sosa |

8 | - Ken Griffey |

9 | """ |

10 | |

11 | TOKENS1 = """ |

12 | BLOCK_SEQ_START |

13 | ENTRY SCALAR |

14 | ENTRY SCALAR |

15 | ENTRY SCALAR |

16 | BLOCK_END |

17 | """ |

18 | |

19 | NODES1 = [True, True, True] |

20 | |

21 | EX2 = r""" |

22 | hr: 65 # Home runs |

23 | avg: 0.278 # Batting average |

24 | rbi: 147 # Runs Batted In |

25 | """ |

26 | |

27 | TOKENS2 = """ |

28 | BLOCK_MAP_START |

29 | KEY SCALAR VALUE SCALAR |

30 | KEY SCALAR VALUE SCALAR |

31 | KEY SCALAR VALUE SCALAR |

32 | BLOCK_END |

33 | """ |

34 | |

35 | NODES2 = [(True, True), (True, True), (True, True)] |

36 | |

37 | EX3 = r""" |

38 | american: |

39 | - Boston Red Sox |

40 | - Detroit Tigers |

41 | - New York Yankees |

42 | national: |

43 | - New York Mets |

44 | - Chicago Cubs |

45 | - Atlanta Braves |

46 | """ |

47 | |

48 | TOKENS3 = """ |

49 | BLOCK_MAP_START |

50 | KEY SCALAR VALUE |

51 | BLOCK_SEQ_START |

52 | ENTRY SCALAR |

53 | ENTRY SCALAR |

54 | ENTRY SCALAR |

55 | BLOCK_END |

56 | KEY SCALAR VALUE |

57 | BLOCK_SEQ_START |

58 | ENTRY SCALAR |

59 | ENTRY SCALAR |

60 | ENTRY SCALAR |

61 | BLOCK_END |

62 | BLOCK_END |

63 | """ |

64 | |

65 | NODES3 = [(True, [True, True, True]), (True, [True, True, True])] |

66 | |

67 | EX4 = r""" |

68 | - |

69 | name: Mark McGwire |

70 | hr: 65 |

71 | avg: 0.278 |

72 | - |

73 | name: Sammy Sosa |

74 | hr: 63 |

75 | avg: 0.288 |

76 | """ |

77 | |

78 | TOKENS4 = """ |

79 | BLOCK_SEQ_START |

80 | ENTRY |

81 | BLOCK_MAP_START |

82 | KEY SCALAR VALUE SCALAR |

83 | KEY SCALAR VALUE SCALAR |

84 | KEY SCALAR VALUE SCALAR |

85 | BLOCK_END |

86 | ENTRY |

87 | BLOCK_MAP_START |

88 | KEY SCALAR VALUE SCALAR |

89 | KEY SCALAR VALUE SCALAR |

90 | KEY SCALAR VALUE SCALAR |

91 | BLOCK_END |

92 | BLOCK_END |

93 | """ |

94 | |

95 | NODES4 = [[(True, True), (True, True), (True, True)], [(True, True), (True, True), (True, True)]] |

96 | |

97 | EX5 = r""" |

98 | - [name , hr, avg ] |

99 | - [Mark McGwire, 65, 0.278] |

100 | - [Sammy Sosa , 63, 0.288] |

101 | """ |

102 | |

103 | TOKENS5 = """ |

104 | BLOCK_SEQ_START |

105 | ENTRY FLOW_SEQ_START SCALAR ENTRY SCALAR ENTRY SCALAR FLOW_SEQ_END |

106 | ENTRY FLOW_SEQ_START SCALAR ENTRY SCALAR ENTRY SCALAR FLOW_SEQ_END |

107 | ENTRY FLOW_SEQ_START SCALAR ENTRY SCALAR ENTRY SCALAR FLOW_SEQ_END |

108 | BLOCK_END |

109 | """ |

110 | |

111 | NODES5 = [[True, True, True], [True, True, True], [True, True, True]] |

112 | |

113 | EX6 = r""" |

114 | Mark McGwire: {hr: 65, avg: 0.278} |

115 | Sammy Sosa: { |

116 | hr: 63, |

117 | avg: 0.288 |

118 | } |

119 | """ |

120 | |

121 | TOKENS6 = """ |

122 | BLOCK_MAP_START |

123 | KEY SCALAR VALUE |

124 | FLOW_MAP_START KEY SCALAR VALUE SCALAR ENTRY KEY SCALAR VALUE SCALAR FLOW_MAP_END |

125 | KEY SCALAR VALUE |

126 | FLOW_MAP_START KEY SCALAR VALUE SCALAR ENTRY KEY SCALAR VALUE SCALAR FLOW_MAP_END |

127 | BLOCK_END |

128 | """ |

129 | |

130 | NODES6 = [(True, [(True, True), (True, True)]), (True, [(True, True), (True, True)])] |

131 | |

132 | EX7 = r""" |

133 | # Ranking of 1998 home runs |

134 | --- |

135 | - Mark McGwire |

136 | - Sammy Sosa |

137 | - Ken Griffey |

138 | |

139 | # Team ranking |

140 | --- |

141 | - Chicago Cubs |

142 | - St Louis Cardinals |

143 | """ |

144 | |

145 | TOKENS7 = """ |

146 | DOCUMENT_START |

147 | BLOCK_SEQ_START |

148 | ENTRY SCALAR |

149 | ENTRY SCALAR |

150 | ENTRY SCALAR |

151 | BLOCK_END |

152 | |

153 | DOCUMENT_START |

154 | BLOCK_SEQ_START |

155 | ENTRY SCALAR |

156 | ENTRY SCALAR |

157 | BLOCK_END |

158 | """ |

159 | |

160 | NODES7 = ([True, True, True], [True, True]) |

161 | |

162 | EX8 = r""" |

163 | --- |

164 | time: 20:03:20 |

165 | player: Sammy Sosa |

166 | action: strike (miss) |

167 | ... |

168 | --- |

169 | time: 20:03:47 |

170 | player: Sammy Sosa |

171 | action: grand slam |

172 | ... |

173 | """ |

174 | |

175 | TOKENS8 = """ |

176 | DOCUMENT_START |

177 | BLOCK_MAP_START |

178 | KEY SCALAR VALUE SCALAR |

179 | KEY SCALAR VALUE SCALAR |

180 | KEY SCALAR VALUE SCALAR |

181 | BLOCK_END |

182 | DOCUMENT_END |

183 | |

184 | DOCUMENT_START |

185 | BLOCK_MAP_START |

186 | KEY SCALAR VALUE SCALAR |

187 | KEY SCALAR VALUE SCALAR |

188 | KEY SCALAR VALUE SCALAR |

189 | BLOCK_END |

190 | DOCUMENT_END |

191 | """ |

192 | |

193 | NODES8 = ([(True, True), (True, True), (True, True)], [(True, True), (True, True), (True, True)]) |

194 | |

195 | EX9 = r""" |

196 | --- |

197 | hr: # 1998 hr ranking |

198 | - Mark McGwire |

199 | - Sammy Sosa |

200 | rbi: |

201 | # 1998 rbi ranking |

202 | - Sammy Sosa |

203 | - Ken Griffey |

204 | """ |

205 | |

206 | TOKENS9 = """ |

207 | DOCUMENT_START |

208 | BLOCK_MAP_START |

209 | KEY SCALAR VALUE |

210 | BLOCK_SEQ_START |

211 | ENTRY SCALAR |

212 | ENTRY SCALAR |

213 | BLOCK_END |

214 | KEY SCALAR VALUE |

215 | BLOCK_SEQ_START |

216 | ENTRY SCALAR |

217 | ENTRY SCALAR |

218 | BLOCK_END |

219 | BLOCK_END |

220 | """ |

221 | |

222 | NODES9 = [(True, [True, True]), (True, [True, True])] |

223 | |

224 | EX10 = r""" |

225 | --- |

226 | hr: |

227 | - Mark McGwire |

228 | # Following node labeled SS |

229 | - &SS Sammy Sosa |

230 | rbi: |

231 | - *SS # Subsequent occurrence |

232 | - Ken Griffey |

233 | """ |

234 | |

235 | TOKENS10 = """ |

236 | DOCUMENT_START |

237 | BLOCK_MAP_START |

238 | KEY SCALAR VALUE |

239 | BLOCK_SEQ_START |

240 | ENTRY SCALAR |

241 | ENTRY ANCHOR SCALAR |

242 | BLOCK_END |

243 | KEY SCALAR VALUE |

244 | BLOCK_SEQ_START |

245 | ENTRY ALIAS |

246 | ENTRY SCALAR |

247 | BLOCK_END |

248 | BLOCK_END |

249 | """ |

250 | |

251 | NODES10 = [(True, [True, True]), (True, ['*', True])] |

252 | |

253 | EX11 = r""" |

254 | ? - Detroit Tigers |

255 | - Chicago cubs |

256 | : |

257 | - 2001-07-23 |

258 | |

259 | ? [ New York Yankees, |

260 | Atlanta Braves ] |

261 | : [ 2001-07-02, 2001-08-12, |

262 | 2001-08-14 ] |

263 | """ |

264 | |

265 | TOKENS11 = """ |

266 | BLOCK_MAP_START |

267 | KEY |

268 | BLOCK_SEQ_START |

269 | ENTRY SCALAR |

270 | ENTRY SCALAR |

271 | BLOCK_END |

272 | VALUE |

273 | BLOCK_SEQ_START |

274 | ENTRY SCALAR |

275 | BLOCK_END |

276 | KEY |

277 | FLOW_SEQ_START SCALAR ENTRY SCALAR FLOW_SEQ_END |

278 | VALUE |

279 | FLOW_SEQ_START SCALAR ENTRY SCALAR ENTRY SCALAR FLOW_SEQ_END |

280 | BLOCK_END |

281 | """ |

282 | |

283 | NODES11 = [([True, True], [True]), ([True, True], [True, True, True])] |

284 | |

285 | EX12 = r""" |

286 | --- |

287 | # products purchased |

288 | - item : Super Hoop |

289 | quantity: 1 |

290 | - item : Basketball |

291 | quantity: 4 |

292 | - item : Big Shoes |

293 | quantity: 1 |

294 | """ |

295 | |

296 | TOKENS12 = """ |

297 | DOCUMENT_START |

298 | BLOCK_SEQ_START |

299 | ENTRY |

300 | BLOCK_MAP_START |

301 | KEY SCALAR VALUE SCALAR |

302 | KEY SCALAR VALUE SCALAR |

303 | BLOCK_END |

304 | ENTRY |

305 | BLOCK_MAP_START |

306 | KEY SCALAR VALUE SCALAR |

307 | KEY SCALAR VALUE SCALAR |

308 | BLOCK_END |

309 | ENTRY |

310 | BLOCK_MAP_START |

311 | KEY SCALAR VALUE SCALAR |

312 | KEY SCALAR VALUE SCALAR |

313 | BLOCK_END |

314 | BLOCK_END |

315 | """ |

316 | |

317 | NODES12 = [[(True, True), (True, True)], [(True, True), (True, True)], [(True, True), (True, True)]] |

318 | |

319 | EX13 = r""" |

320 | # ASCII Art |

321 | --- | |

322 | \//||\/|| |

323 | // || ||__ |

324 | """ |

325 | |

326 | TOKENS13 = """ |

327 | DOCUMENT_START SCALAR |

328 | """ |

329 | |

330 | NODES13 = True |

331 | |

332 | EX14 = r""" |

333 | --- |

334 | Mark McGwire's |

335 | year was crippled |

336 | by a knee injury. |

337 | """ |

338 | |

339 | TOKENS14 = """ |

340 | DOCUMENT_START SCALAR |

341 | """ |

342 | |

343 | NODES14 = True |

344 | |

345 | EX15 = r""" |

346 | > |

347 | Sammy Sosa completed another |

348 | fine season with great stats. |

349 | |

350 | 63 Home Runs |

351 | 0.288 Batting Average |

352 | |

353 | What a year! |

354 | """ |

355 | |

356 | TOKENS15 = """ |

357 | SCALAR |

358 | """ |

359 | |

360 | NODES15 = True |

361 | |

362 | EX16 = r""" |

363 | name: Mark McGwire |

364 | accomplishment: > |

365 | Mark set a major league |

366 | home run record in 1998. |

367 | stats: | |

368 | 65 Home Runs |

369 | 0.278 Batting Average |

370 | """ |

371 | |

372 | TOKENS16 = """ |

373 | BLOCK_MAP_START |

374 | KEY SCALAR VALUE SCALAR |

375 | KEY SCALAR VALUE SCALAR |

376 | KEY SCALAR VALUE SCALAR |

377 | BLOCK_END |

378 | """ |

379 | |

380 | NODES16 = [(True, True), (True, True), (True, True)] |

381 | |

382 | EX17 = r""" |

383 | unicode: "Sosa did fine.\u263A" |

384 | control: "\b1998\t1999\t2000\n" |

385 | hexesc: "\x13\x10 is \r\n" |

386 | |

387 | single: '"Howdy!" he cried.' |

388 | quoted: ' # not a ''comment''.' |

389 | tie-fighter: '|\-*-/|' |

390 | """ |

391 | |

392 | TOKENS17 = """ |

393 | BLOCK_MAP_START |

394 | KEY SCALAR VALUE SCALAR |

395 | KEY SCALAR VALUE SCALAR |

396 | KEY SCALAR VALUE SCALAR |

397 | KEY SCALAR VALUE SCALAR |

398 | KEY SCALAR VALUE SCALAR |

399 | KEY SCALAR VALUE SCALAR |

400 | BLOCK_END |

401 | """ |

402 | |

403 | NODES17 = [(True, True), (True, True), (True, True), (True, True), (True, True), (True, True)] |

404 | |

405 | EX18 = r""" |

406 | plain: |

407 | This unquoted scalar |

408 | spans many lines. |

409 | |

410 | quoted: "So does this |

411 | quoted scalar.\n" |

412 | """ |

413 | |

414 | TOKENS18 = """ |

415 | BLOCK_MAP_START |

416 | KEY SCALAR VALUE SCALAR |

417 | KEY SCALAR VALUE SCALAR |

418 | BLOCK_END |

419 | """ |

420 | |

421 | NODES18 = [(True, True), (True, True)] |

422 | |

423 | EX19 = r""" |

424 | canonical: 12345 |

425 | decimal: +12,345 |

426 | sexagesimal: 3:25:45 |

427 | octal: 014 |

428 | hexadecimal: 0xC |

429 | """ |

430 | |

431 | TOKENS19 = """ |

432 | BLOCK_MAP_START |

433 | KEY SCALAR VALUE SCALAR |

434 | KEY SCALAR VALUE SCALAR |

435 | KEY SCALAR VALUE SCALAR |

436 | KEY SCALAR VALUE SCALAR |

437 | KEY SCALAR VALUE SCALAR |

438 | BLOCK_END |

439 | """ |

440 | |

441 | NODES19 = [(True, True), (True, True), (True, True), (True, True), (True, True)] |

442 | |

443 | EX20 = r""" |

444 | canonical: 1.23015e+3 |

445 | exponential: 12.3015e+02 |

446 | sexagesimal: 20:30.15 |

447 | fixed: 1,230.15 |

448 | negative infinity: -.inf |

449 | not a number: .NaN |

450 | """ |

451 | |

452 | TOKENS20 = """ |

453 | BLOCK_MAP_START |

454 | KEY SCALAR VALUE SCALAR |

455 | KEY SCALAR VALUE SCALAR |

456 | KEY SCALAR VALUE SCALAR |

457 | KEY SCALAR VALUE SCALAR |

458 | KEY SCALAR VALUE SCALAR |

459 | KEY SCALAR VALUE SCALAR |

460 | BLOCK_END |

461 | """ |

462 | |

463 | NODES20 = [(True, True), (True, True), (True, True), (True, True), (True, True), (True, True)] |

464 | |

465 | EX21 = r""" |

466 | null: ~ |

467 | true: y |

468 | false: n |

469 | string: '12345' |

470 | """ |

471 | |

472 | TOKENS21 = """ |

473 | BLOCK_MAP_START |

474 | KEY SCALAR VALUE SCALAR |

475 | KEY SCALAR VALUE SCALAR |

476 | KEY SCALAR VALUE SCALAR |

477 | KEY SCALAR VALUE SCALAR |

478 | BLOCK_END |

479 | """ |

480 | |

481 | NODES21 = [(True, True), (True, True), (True, True), (True, True)] |

482 | |

483 | EX22 = r""" |

484 | canonical: 2001-12-15T02:59:43.1Z |

485 | iso8601: 2001-12-14t21:59:43.10-05:00 |

486 | spaced: 2001-12-14 21:59:43.10 -5 |

487 | date: 2002-12-14 |

488 | """ |

489 | |

490 | TOKENS22 = """ |

491 | BLOCK_MAP_START |

492 | KEY SCALAR VALUE SCALAR |

493 | KEY SCALAR VALUE SCALAR |

494 | KEY SCALAR VALUE SCALAR |

495 | KEY SCALAR VALUE SCALAR |

496 | BLOCK_END |

497 | """ |

498 | |

499 | NODES22 = [(True, True), (True, True), (True, True), (True, True)] |

500 | |

501 | EX23 = r""" |

502 | --- |

503 | not-date: !!str 2002-04-28 |

504 | |

505 | picture: !!binary | |

506 | R0lGODlhDAAMAIQAAP//9/X |

507 | 17unp5WZmZgAAAOfn515eXv |

508 | Pz7Y6OjuDg4J+fn5OTk6enp |

509 | 56enmleECcgggoBADs= |

510 | |

511 | application specific tag: !something | |

512 | The semantics of the tag |

513 | above may be different for |

514 | different documents. |

515 | """ |

516 | |

517 | TOKENS23 = """ |

518 | DOCUMENT_START |

519 | BLOCK_MAP_START |

520 | KEY SCALAR VALUE TAG SCALAR |

521 | KEY SCALAR VALUE TAG SCALAR |

522 | KEY SCALAR VALUE TAG SCALAR |

523 | BLOCK_END |

524 | """ |

525 | |

526 | NODES23 = [(True, True), (True, True), (True, True)] |

527 | |

528 | EX24 = r""" |

529 | %TAG ! tag:clarkevans.com,2002: |

530 | --- !shape |

531 | # Use the ! handle for presenting |

532 | # tag:clarkevans.com,2002:circle |

533 | - !circle |

534 | center: &ORIGIN {x: 73, y: 129} |

535 | radius: 7 |

536 | - !line |

537 | start: *ORIGIN |

538 | finish: { x: 89, y: 102 } |

539 | - !label |

540 | start: *ORIGIN |

541 | color: 0xFFEEBB |

542 | text: Pretty vector drawing. |

543 | """ |

544 | |

545 | TOKENS24 = """ |

546 | DIRECTIVE |

547 | DOCUMENT_START TAG |

548 | BLOCK_SEQ_START |

549 | ENTRY TAG |

550 | BLOCK_MAP_START |

551 | KEY SCALAR VALUE ANCHOR |

552 | FLOW_MAP_START KEY SCALAR VALUE SCALAR ENTRY KEY SCALAR VALUE SCALAR FLOW_MAP_END |

553 | KEY SCALAR VALUE SCALAR |

554 | BLOCK_END |

555 | ENTRY TAG |

556 | BLOCK_MAP_START |

557 | KEY SCALAR VALUE ALIAS |

558 | KEY SCALAR VALUE |

559 | FLOW_MAP_START KEY SCALAR VALUE SCALAR ENTRY KEY SCALAR VALUE SCALAR FLOW_MAP_END |

560 | BLOCK_END |

561 | ENTRY TAG |

562 | BLOCK_MAP_START |

563 | KEY SCALAR VALUE ALIAS |

564 | KEY SCALAR VALUE SCALAR |

565 | KEY SCALAR VALUE SCALAR |

566 | BLOCK_END |

567 | BLOCK_END |

568 | """ |

569 | |

570 | NODES24 = [[(True, [(True, True), (True, True)]), (True, True)], |

571 | [(True, '*'), (True, [(True, True), (True, True)])], |

572 | [(True, '*'), (True, True), (True, True)]] |

573 | |

574 | EX25 = r""" |

575 | # sets are represented as a |

576 | # mapping where each key is |

577 | # associated with the empty string |

578 | --- !!set |

579 | ? Mark McGwire |

580 | ? Sammy Sosa |

581 | ? Ken Griff |

582 | """ |

583 | |

584 | TOKENS25 = """ |

585 | DOCUMENT_START TAG |

586 | BLOCK_MAP_START |

587 | KEY SCALAR |

588 | KEY SCALAR |

589 | KEY SCALAR |

590 | BLOCK_END |

591 | """ |

592 | |

593 | NODES25 = [(True, None), (True, None), (True, None)] |

594 | |

595 | EX26 = r""" |

596 | # ordered maps are represented as |

597 | # a sequence of mappings, with |

598 | # each mapping having one key |

599 | --- !!omap |

600 | - Mark McGwire: 65 |

601 | - Sammy Sosa: 63 |

602 | - Ken Griffy: 58 |

603 | """ |

604 | |

605 | TOKENS26 = """ |

606 | DOCUMENT_START TAG |

607 | BLOCK_SEQ_START |

608 | ENTRY |

609 | BLOCK_MAP_START |

610 | KEY SCALAR VALUE SCALAR |

611 | BLOCK_END |

612 | ENTRY |

613 | BLOCK_MAP_START |

614 | KEY SCALAR VALUE SCALAR |

615 | BLOCK_END |

616 | ENTRY |

617 | BLOCK_MAP_START |

618 | KEY SCALAR VALUE SCALAR |

619 | BLOCK_END |

620 | BLOCK_END |

621 | """ |

622 | |

623 | NODES26 = [[(True, True)], [(True, True)], [(True, True)]] |

624 | |

625 | EX27 = r""" |

626 | --- !<tag:clarkevans.com,2002:invoice> |

627 | invoice: 34843 |

628 | date : 2001-01-23 |

629 | bill-to: &id001 |

630 | given : Chris |

631 | family : Dumars |

632 | address: |

633 | lines: | |

634 | 458 Walkman Dr. |

635 | Suite #292 |

636 | city : Royal Oak |

637 | state : MI |

638 | postal : 48046 |

639 | ship-to: *id001 |

640 | product: |

641 | - sku : BL394D |

642 | quantity : 4 |

643 | description : Basketball |

644 | price : 450.00 |

645 | - sku : BL4438H |

646 | quantity : 1 |

647 | description : Super Hoop |

648 | price : 2392.00 |

649 | tax : 251.42 |

650 | total: 4443.52 |

651 | comments: |

652 | Late afternoon is best. |

653 | Backup contact is Nancy |

654 | Billsmer @ 338-4338. |

655 | """ |

656 | |

657 | TOKENS27 = """ |

658 | DOCUMENT_START TAG |

659 | BLOCK_MAP_START |

660 | KEY SCALAR VALUE SCALAR |

661 | KEY SCALAR VALUE SCALAR |

662 | KEY SCALAR VALUE ANCHOR |

663 | BLOCK_MAP_START |

664 | KEY SCALAR VALUE SCALAR |

665 | KEY SCALAR VALUE SCALAR |

666 | KEY SCALAR VALUE |

667 | BLOCK_MAP_START |

668 | KEY SCALAR VALUE SCALAR |

669 | KEY SCALAR VALUE SCALAR |

670 | KEY SCALAR VALUE SCALAR |

671 | KEY SCALAR VALUE SCALAR |

672 | BLOCK_END |

673 | BLOCK_END |

674 | KEY SCALAR VALUE ALIAS |

675 | KEY SCALAR VALUE |

676 | BLOCK_SEQ_START |

677 | ENTRY |

678 | BLOCK_MAP_START |

679 | KEY SCALAR VALUE SCALAR |

680 | KEY SCALAR VALUE SCALAR |

681 | KEY SCALAR VALUE SCALAR |

682 | KEY SCALAR VALUE SCALAR |

683 | BLOCK_END |

684 | ENTRY |

685 | BLOCK_MAP_START |

686 | KEY SCALAR VALUE SCALAR |

687 | KEY SCALAR VALUE SCALAR |

688 | KEY SCALAR VALUE SCALAR |

689 | KEY SCALAR VALUE SCALAR |

690 | BLOCK_END |

691 | BLOCK_END |

692 | KEY SCALAR VALUE SCALAR |

693 | KEY SCALAR VALUE SCALAR |

694 | KEY SCALAR VALUE SCALAR |

695 | BLOCK_END |

696 | """ |

697 | |

698 | NODES27 = [ |

699 | (True, True), (True, True), (True, [(True, True), (True, True), (True, [(True, True), (True, True), (True, True), (True, True)])]), (True, '*'), |

700 | (True, [[(True, True), (True, True), (True, True), (True, True)], [(True, True), (True, True), (True, True), (True, True)]]), (True, True), (True, True), (True, True), |

701 | ] |

702 | |

703 | EX28 = r""" |

704 | --- |

705 | Time: 2001-11-23 15:01:42 -5 |

706 | User: ed |

707 | Warning: |

708 | This is an error message |

709 | for the log file |

710 | --- |

711 | Time: 2001-11-23 15:02:31 -5 |

712 | User: ed |

713 | Warning: |

714 | A slightly different error |

715 | message. |

716 | --- |

717 | Date: 2001-11-23 15:03:17 -5 |

718 | User: ed |

719 | Fatal: |

720 | Unknown variable "bar" |

721 | Stack: |

722 | - file: TopClass.py |

723 | line: 23 |

724 | code: | |

725 | x = MoreObject("345\n") |

726 | - file: MoreClass.py |

727 | line: 58 |

728 | code: |- |

729 | foo = bar |

730 | """ |

731 | |

732 | TOKENS28 = """ |

733 | DOCUMENT_START |

734 | BLOCK_MAP_START |

735 | KEY SCALAR VALUE SCALAR |

736 | KEY SCALAR VALUE SCALAR |

737 | KEY SCALAR VALUE SCALAR |

738 | BLOCK_END |

739 | |

740 | DOCUMENT_START |

741 | BLOCK_MAP_START |

742 | KEY SCALAR VALUE SCALAR |

743 | KEY SCALAR VALUE SCALAR |

744 | KEY SCALAR VALUE SCALAR |

745 | BLOCK_END |

746 | |

747 | DOCUMENT_START |

748 | BLOCK_MAP_START |

749 | KEY SCALAR VALUE SCALAR |

750 | KEY SCALAR VALUE SCALAR |

751 | KEY SCALAR VALUE SCALAR |

752 | KEY SCALAR VALUE |

753 | BLOCK_SEQ_START |

754 | ENTRY |

755 | BLOCK_MAP_START |

756 | KEY SCALAR VALUE SCALAR |

757 | KEY SCALAR VALUE SCALAR |

758 | KEY SCALAR VALUE SCALAR |

759 | BLOCK_END |

760 | ENTRY |

761 | BLOCK_MAP_START |

762 | KEY SCALAR VALUE SCALAR |

763 | KEY SCALAR VALUE SCALAR |

764 | KEY SCALAR VALUE SCALAR |

765 | BLOCK_END |

766 | BLOCK_END |

767 | BLOCK_END |

768 | """ |

769 | |

770 | NODES28 = ( |

771 | [(True, True), (True, True), (True, True)], [(True, True), (True, True), (True, True)], |

772 | [(True, True), (True, True), (True, True), (True, [[(True, True), (True, True), (True, True)], [(True, True), (True, True), (True, True)]])], |

773 | ) |

774 | |

775 | MAX_TESTS = 100 |

776 | |

777 | class TestParser2(unittest.TestCase): |

778 | |

779 | def _testTokens(self, index, EX, TOKENS): |

780 | try: |

781 | tokens = None |

782 | scanner = parser2.Scanner() |

783 | tokens = scanner.scan('EX'+str(index), EX) |

784 | self.failUnlessEqual(tokens, TOKENS.split()) |

785 | except: |

786 | print "EXAMPLE #%s" % index |

787 | print "EX:" |

788 | print EX |

789 | print "TOKENS:" |

790 | print TOKENS |

791 | print "RESULT:", tokens |

792 | print "EXPECT:", TOKENS.split() |

793 | raise |

794 | |

795 | def _testNodes(self, index, EX, NODES): |

796 | try: |

797 | nodes = None |

798 | parser = parser2.Parser() |

799 | nodes = parser.parse('EX'+str(index), EX) |

800 | self.failUnlessEqual(nodes, NODES) |

801 | except: |

802 | print "EXAMPLE #%s" % index |

803 | print "EX:" |

804 | print EX |

805 | print "RESULT:", nodes |

806 | print "EXPECT:", NODES |

807 | raise |

808 | |

809 | @classmethod |

810 | def add_tests(cls, test_method_name, *tests): |

811 | for index in range(1, MAX_TESTS): |

812 | args = [] |

813 | for name in tests: |

814 | if name+str(index) in globals(): |

815 | args.append(globals()[name+str(index)]) |

816 | else: |

817 | break |

818 | else: |

819 | def test_method(self, index=index, args=args): |

820 | getattr(self, '_'+test_method_name)(index, *args) |

821 | test_method.__name__ = '%s%02d' % (test_method_name, index) |

822 | setattr(cls, test_method.__name__, test_method) |

823 | |

824 | TestParser2.add_tests('testTokens', 'EX', 'TOKENS') |

825 | TestParser2.add_tests('testNodes', 'EX', 'NODES') |

826 | |

827 | if __name__ == '__main__': |

828 | unittest.main() |

829 |

**Note:**See TracBrowser for help on using the repository browser.