fscanf_variation27.phpt 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975
  1. --TEST--
  2. Test fscanf() function: usage variations - octal formats with integer values
  3. --FILE--
  4. <?php
  5. /* Test fscanf() to scan different integer values using different octal format types */
  6. $file_path = __DIR__;
  7. echo "*** Test fscanf(): different octal format types with different integer values ***\n";
  8. // create a file
  9. $filename = "$file_path/fscanf_variation27.tmp";
  10. $file_handle = fopen($filename, "w");
  11. if($file_handle == false)
  12. exit("Error:failed to open file $filename");
  13. // different valid integer values
  14. $valid_ints = array(
  15. 0,
  16. 1,
  17. -1,
  18. -2147483648, // max negative integer value
  19. -2147483647,
  20. 2147483647, // max positive integer value
  21. 2147483640,
  22. 0x123B, // integer as hexadecimal
  23. 0x12ab,
  24. 0Xfff,
  25. 0XFA,
  26. -0x80000000, // max negative integer as hexadecimal
  27. 0x7fffffff, // max positive integer as hexadecimal
  28. 0x7FFFFFFF, // max positive integer as hexadecimal
  29. 0123, // integer as octal
  30. 01, // should be quivalent to octal 1
  31. -020000000000, // max negative integer as octal
  32. 017777777777 // max positive integer as octal
  33. );
  34. // various octal formats
  35. $octal_formats = array( "%o",
  36. "%ho", "%lo", "%Lo",
  37. " %o", "%o ", "% o",
  38. "\t%o", "\n%o", "%4o",
  39. "%30o", "%[0-7]", "%*o"
  40. );
  41. $counter = 1;
  42. // writing to the file
  43. foreach($valid_ints as $int_value) {
  44. @fprintf($file_handle, $int_value);
  45. @fprintf($file_handle, "\n");
  46. }
  47. // closing the file
  48. fclose($file_handle);
  49. // opening the file for reading
  50. $file_handle = fopen($filename, "r");
  51. if($file_handle == false) {
  52. exit("Error:failed to open file $filename");
  53. }
  54. $counter = 1;
  55. // reading the values from file using different octal formats
  56. foreach($octal_formats as $octal_format) {
  57. // rewind the file so that for every foreach iteration the file pointer starts from bof
  58. rewind($file_handle);
  59. echo "\n-- iteration $counter --\n";
  60. while( !feof($file_handle) ) {
  61. try {
  62. var_dump(fscanf($file_handle,$octal_format));
  63. } catch (ValueError $exception) {
  64. echo $exception->getMessage() . "\n";
  65. }
  66. }
  67. $counter++;
  68. }
  69. echo "\n*** Done ***";
  70. ?>
  71. --CLEAN--
  72. <?php
  73. $file_path = __DIR__;
  74. $filename = "$file_path/fscanf_variation27.tmp";
  75. unlink($filename);
  76. ?>
  77. --EXPECT--
  78. *** Test fscanf(): different octal format types with different integer values ***
  79. -- iteration 1 --
  80. array(1) {
  81. [0]=>
  82. int(0)
  83. }
  84. array(1) {
  85. [0]=>
  86. int(1)
  87. }
  88. array(1) {
  89. [0]=>
  90. int(-1)
  91. }
  92. array(1) {
  93. [0]=>
  94. int(-9020)
  95. }
  96. array(1) {
  97. [0]=>
  98. int(-9020)
  99. }
  100. array(1) {
  101. [0]=>
  102. int(9020)
  103. }
  104. array(1) {
  105. [0]=>
  106. int(9020)
  107. }
  108. array(1) {
  109. [0]=>
  110. int(2487)
  111. }
  112. array(1) {
  113. [0]=>
  114. int(319)
  115. }
  116. array(1) {
  117. [0]=>
  118. int(32)
  119. }
  120. array(1) {
  121. [0]=>
  122. int(168)
  123. }
  124. array(1) {
  125. [0]=>
  126. int(-9020)
  127. }
  128. array(1) {
  129. [0]=>
  130. int(9020)
  131. }
  132. array(1) {
  133. [0]=>
  134. int(9020)
  135. }
  136. array(1) {
  137. [0]=>
  138. NULL
  139. }
  140. array(1) {
  141. [0]=>
  142. int(1)
  143. }
  144. array(1) {
  145. [0]=>
  146. int(-9020)
  147. }
  148. array(1) {
  149. [0]=>
  150. int(9020)
  151. }
  152. bool(false)
  153. -- iteration 2 --
  154. array(1) {
  155. [0]=>
  156. int(0)
  157. }
  158. array(1) {
  159. [0]=>
  160. int(1)
  161. }
  162. array(1) {
  163. [0]=>
  164. int(-1)
  165. }
  166. array(1) {
  167. [0]=>
  168. int(-9020)
  169. }
  170. array(1) {
  171. [0]=>
  172. int(-9020)
  173. }
  174. array(1) {
  175. [0]=>
  176. int(9020)
  177. }
  178. array(1) {
  179. [0]=>
  180. int(9020)
  181. }
  182. array(1) {
  183. [0]=>
  184. int(2487)
  185. }
  186. array(1) {
  187. [0]=>
  188. int(319)
  189. }
  190. array(1) {
  191. [0]=>
  192. int(32)
  193. }
  194. array(1) {
  195. [0]=>
  196. int(168)
  197. }
  198. array(1) {
  199. [0]=>
  200. int(-9020)
  201. }
  202. array(1) {
  203. [0]=>
  204. int(9020)
  205. }
  206. array(1) {
  207. [0]=>
  208. int(9020)
  209. }
  210. array(1) {
  211. [0]=>
  212. NULL
  213. }
  214. array(1) {
  215. [0]=>
  216. int(1)
  217. }
  218. array(1) {
  219. [0]=>
  220. int(-9020)
  221. }
  222. array(1) {
  223. [0]=>
  224. int(9020)
  225. }
  226. bool(false)
  227. -- iteration 3 --
  228. array(1) {
  229. [0]=>
  230. int(0)
  231. }
  232. array(1) {
  233. [0]=>
  234. int(1)
  235. }
  236. array(1) {
  237. [0]=>
  238. int(-1)
  239. }
  240. array(1) {
  241. [0]=>
  242. int(-9020)
  243. }
  244. array(1) {
  245. [0]=>
  246. int(-9020)
  247. }
  248. array(1) {
  249. [0]=>
  250. int(9020)
  251. }
  252. array(1) {
  253. [0]=>
  254. int(9020)
  255. }
  256. array(1) {
  257. [0]=>
  258. int(2487)
  259. }
  260. array(1) {
  261. [0]=>
  262. int(319)
  263. }
  264. array(1) {
  265. [0]=>
  266. int(32)
  267. }
  268. array(1) {
  269. [0]=>
  270. int(168)
  271. }
  272. array(1) {
  273. [0]=>
  274. int(-9020)
  275. }
  276. array(1) {
  277. [0]=>
  278. int(9020)
  279. }
  280. array(1) {
  281. [0]=>
  282. int(9020)
  283. }
  284. array(1) {
  285. [0]=>
  286. NULL
  287. }
  288. array(1) {
  289. [0]=>
  290. int(1)
  291. }
  292. array(1) {
  293. [0]=>
  294. int(-9020)
  295. }
  296. array(1) {
  297. [0]=>
  298. int(9020)
  299. }
  300. bool(false)
  301. -- iteration 4 --
  302. array(1) {
  303. [0]=>
  304. int(0)
  305. }
  306. array(1) {
  307. [0]=>
  308. int(1)
  309. }
  310. array(1) {
  311. [0]=>
  312. int(-1)
  313. }
  314. array(1) {
  315. [0]=>
  316. int(-9020)
  317. }
  318. array(1) {
  319. [0]=>
  320. int(-9020)
  321. }
  322. array(1) {
  323. [0]=>
  324. int(9020)
  325. }
  326. array(1) {
  327. [0]=>
  328. int(9020)
  329. }
  330. array(1) {
  331. [0]=>
  332. int(2487)
  333. }
  334. array(1) {
  335. [0]=>
  336. int(319)
  337. }
  338. array(1) {
  339. [0]=>
  340. int(32)
  341. }
  342. array(1) {
  343. [0]=>
  344. int(168)
  345. }
  346. array(1) {
  347. [0]=>
  348. int(-9020)
  349. }
  350. array(1) {
  351. [0]=>
  352. int(9020)
  353. }
  354. array(1) {
  355. [0]=>
  356. int(9020)
  357. }
  358. array(1) {
  359. [0]=>
  360. NULL
  361. }
  362. array(1) {
  363. [0]=>
  364. int(1)
  365. }
  366. array(1) {
  367. [0]=>
  368. int(-9020)
  369. }
  370. array(1) {
  371. [0]=>
  372. int(9020)
  373. }
  374. bool(false)
  375. -- iteration 5 --
  376. array(1) {
  377. [0]=>
  378. int(0)
  379. }
  380. array(1) {
  381. [0]=>
  382. int(1)
  383. }
  384. array(1) {
  385. [0]=>
  386. int(-1)
  387. }
  388. array(1) {
  389. [0]=>
  390. int(-9020)
  391. }
  392. array(1) {
  393. [0]=>
  394. int(-9020)
  395. }
  396. array(1) {
  397. [0]=>
  398. int(9020)
  399. }
  400. array(1) {
  401. [0]=>
  402. int(9020)
  403. }
  404. array(1) {
  405. [0]=>
  406. int(2487)
  407. }
  408. array(1) {
  409. [0]=>
  410. int(319)
  411. }
  412. array(1) {
  413. [0]=>
  414. int(32)
  415. }
  416. array(1) {
  417. [0]=>
  418. int(168)
  419. }
  420. array(1) {
  421. [0]=>
  422. int(-9020)
  423. }
  424. array(1) {
  425. [0]=>
  426. int(9020)
  427. }
  428. array(1) {
  429. [0]=>
  430. int(9020)
  431. }
  432. array(1) {
  433. [0]=>
  434. NULL
  435. }
  436. array(1) {
  437. [0]=>
  438. int(1)
  439. }
  440. array(1) {
  441. [0]=>
  442. int(-9020)
  443. }
  444. array(1) {
  445. [0]=>
  446. int(9020)
  447. }
  448. bool(false)
  449. -- iteration 6 --
  450. array(1) {
  451. [0]=>
  452. int(0)
  453. }
  454. array(1) {
  455. [0]=>
  456. int(1)
  457. }
  458. array(1) {
  459. [0]=>
  460. int(-1)
  461. }
  462. array(1) {
  463. [0]=>
  464. int(-9020)
  465. }
  466. array(1) {
  467. [0]=>
  468. int(-9020)
  469. }
  470. array(1) {
  471. [0]=>
  472. int(9020)
  473. }
  474. array(1) {
  475. [0]=>
  476. int(9020)
  477. }
  478. array(1) {
  479. [0]=>
  480. int(2487)
  481. }
  482. array(1) {
  483. [0]=>
  484. int(319)
  485. }
  486. array(1) {
  487. [0]=>
  488. int(32)
  489. }
  490. array(1) {
  491. [0]=>
  492. int(168)
  493. }
  494. array(1) {
  495. [0]=>
  496. int(-9020)
  497. }
  498. array(1) {
  499. [0]=>
  500. int(9020)
  501. }
  502. array(1) {
  503. [0]=>
  504. int(9020)
  505. }
  506. array(1) {
  507. [0]=>
  508. NULL
  509. }
  510. array(1) {
  511. [0]=>
  512. int(1)
  513. }
  514. array(1) {
  515. [0]=>
  516. int(-9020)
  517. }
  518. array(1) {
  519. [0]=>
  520. int(9020)
  521. }
  522. bool(false)
  523. -- iteration 7 --
  524. Bad scan conversion character " "
  525. Bad scan conversion character " "
  526. Bad scan conversion character " "
  527. Bad scan conversion character " "
  528. Bad scan conversion character " "
  529. Bad scan conversion character " "
  530. Bad scan conversion character " "
  531. Bad scan conversion character " "
  532. Bad scan conversion character " "
  533. Bad scan conversion character " "
  534. Bad scan conversion character " "
  535. Bad scan conversion character " "
  536. Bad scan conversion character " "
  537. Bad scan conversion character " "
  538. Bad scan conversion character " "
  539. Bad scan conversion character " "
  540. Bad scan conversion character " "
  541. Bad scan conversion character " "
  542. bool(false)
  543. -- iteration 8 --
  544. array(1) {
  545. [0]=>
  546. int(0)
  547. }
  548. array(1) {
  549. [0]=>
  550. int(1)
  551. }
  552. array(1) {
  553. [0]=>
  554. int(-1)
  555. }
  556. array(1) {
  557. [0]=>
  558. int(-9020)
  559. }
  560. array(1) {
  561. [0]=>
  562. int(-9020)
  563. }
  564. array(1) {
  565. [0]=>
  566. int(9020)
  567. }
  568. array(1) {
  569. [0]=>
  570. int(9020)
  571. }
  572. array(1) {
  573. [0]=>
  574. int(2487)
  575. }
  576. array(1) {
  577. [0]=>
  578. int(319)
  579. }
  580. array(1) {
  581. [0]=>
  582. int(32)
  583. }
  584. array(1) {
  585. [0]=>
  586. int(168)
  587. }
  588. array(1) {
  589. [0]=>
  590. int(-9020)
  591. }
  592. array(1) {
  593. [0]=>
  594. int(9020)
  595. }
  596. array(1) {
  597. [0]=>
  598. int(9020)
  599. }
  600. array(1) {
  601. [0]=>
  602. NULL
  603. }
  604. array(1) {
  605. [0]=>
  606. int(1)
  607. }
  608. array(1) {
  609. [0]=>
  610. int(-9020)
  611. }
  612. array(1) {
  613. [0]=>
  614. int(9020)
  615. }
  616. bool(false)
  617. -- iteration 9 --
  618. array(1) {
  619. [0]=>
  620. int(0)
  621. }
  622. array(1) {
  623. [0]=>
  624. int(1)
  625. }
  626. array(1) {
  627. [0]=>
  628. int(-1)
  629. }
  630. array(1) {
  631. [0]=>
  632. int(-9020)
  633. }
  634. array(1) {
  635. [0]=>
  636. int(-9020)
  637. }
  638. array(1) {
  639. [0]=>
  640. int(9020)
  641. }
  642. array(1) {
  643. [0]=>
  644. int(9020)
  645. }
  646. array(1) {
  647. [0]=>
  648. int(2487)
  649. }
  650. array(1) {
  651. [0]=>
  652. int(319)
  653. }
  654. array(1) {
  655. [0]=>
  656. int(32)
  657. }
  658. array(1) {
  659. [0]=>
  660. int(168)
  661. }
  662. array(1) {
  663. [0]=>
  664. int(-9020)
  665. }
  666. array(1) {
  667. [0]=>
  668. int(9020)
  669. }
  670. array(1) {
  671. [0]=>
  672. int(9020)
  673. }
  674. array(1) {
  675. [0]=>
  676. NULL
  677. }
  678. array(1) {
  679. [0]=>
  680. int(1)
  681. }
  682. array(1) {
  683. [0]=>
  684. int(-9020)
  685. }
  686. array(1) {
  687. [0]=>
  688. int(9020)
  689. }
  690. bool(false)
  691. -- iteration 10 --
  692. array(1) {
  693. [0]=>
  694. int(0)
  695. }
  696. array(1) {
  697. [0]=>
  698. int(1)
  699. }
  700. array(1) {
  701. [0]=>
  702. int(-1)
  703. }
  704. array(1) {
  705. [0]=>
  706. int(-140)
  707. }
  708. array(1) {
  709. [0]=>
  710. int(-140)
  711. }
  712. array(1) {
  713. [0]=>
  714. int(1127)
  715. }
  716. array(1) {
  717. [0]=>
  718. int(1127)
  719. }
  720. array(1) {
  721. [0]=>
  722. int(2487)
  723. }
  724. array(1) {
  725. [0]=>
  726. int(319)
  727. }
  728. array(1) {
  729. [0]=>
  730. int(32)
  731. }
  732. array(1) {
  733. [0]=>
  734. int(168)
  735. }
  736. array(1) {
  737. [0]=>
  738. int(-140)
  739. }
  740. array(1) {
  741. [0]=>
  742. int(1127)
  743. }
  744. array(1) {
  745. [0]=>
  746. int(1127)
  747. }
  748. array(1) {
  749. [0]=>
  750. NULL
  751. }
  752. array(1) {
  753. [0]=>
  754. int(1)
  755. }
  756. array(1) {
  757. [0]=>
  758. int(-140)
  759. }
  760. array(1) {
  761. [0]=>
  762. int(1127)
  763. }
  764. bool(false)
  765. -- iteration 11 --
  766. array(1) {
  767. [0]=>
  768. int(0)
  769. }
  770. array(1) {
  771. [0]=>
  772. int(1)
  773. }
  774. array(1) {
  775. [0]=>
  776. int(-1)
  777. }
  778. array(1) {
  779. [0]=>
  780. int(-9020)
  781. }
  782. array(1) {
  783. [0]=>
  784. int(-9020)
  785. }
  786. array(1) {
  787. [0]=>
  788. int(9020)
  789. }
  790. array(1) {
  791. [0]=>
  792. int(9020)
  793. }
  794. array(1) {
  795. [0]=>
  796. int(2487)
  797. }
  798. array(1) {
  799. [0]=>
  800. int(319)
  801. }
  802. array(1) {
  803. [0]=>
  804. int(32)
  805. }
  806. array(1) {
  807. [0]=>
  808. int(168)
  809. }
  810. array(1) {
  811. [0]=>
  812. int(-9020)
  813. }
  814. array(1) {
  815. [0]=>
  816. int(9020)
  817. }
  818. array(1) {
  819. [0]=>
  820. int(9020)
  821. }
  822. array(1) {
  823. [0]=>
  824. NULL
  825. }
  826. array(1) {
  827. [0]=>
  828. int(1)
  829. }
  830. array(1) {
  831. [0]=>
  832. int(-9020)
  833. }
  834. array(1) {
  835. [0]=>
  836. int(9020)
  837. }
  838. bool(false)
  839. -- iteration 12 --
  840. array(1) {
  841. [0]=>
  842. string(1) "0"
  843. }
  844. array(1) {
  845. [0]=>
  846. string(1) "1"
  847. }
  848. array(1) {
  849. [0]=>
  850. NULL
  851. }
  852. array(1) {
  853. [0]=>
  854. NULL
  855. }
  856. array(1) {
  857. [0]=>
  858. NULL
  859. }
  860. array(1) {
  861. [0]=>
  862. string(5) "21474"
  863. }
  864. array(1) {
  865. [0]=>
  866. string(5) "21474"
  867. }
  868. array(1) {
  869. [0]=>
  870. string(4) "4667"
  871. }
  872. array(1) {
  873. [0]=>
  874. string(3) "477"
  875. }
  876. array(1) {
  877. [0]=>
  878. string(2) "40"
  879. }
  880. array(1) {
  881. [0]=>
  882. string(3) "250"
  883. }
  884. array(1) {
  885. [0]=>
  886. NULL
  887. }
  888. array(1) {
  889. [0]=>
  890. string(5) "21474"
  891. }
  892. array(1) {
  893. [0]=>
  894. string(5) "21474"
  895. }
  896. array(1) {
  897. [0]=>
  898. NULL
  899. }
  900. array(1) {
  901. [0]=>
  902. string(1) "1"
  903. }
  904. array(1) {
  905. [0]=>
  906. NULL
  907. }
  908. array(1) {
  909. [0]=>
  910. string(5) "21474"
  911. }
  912. bool(false)
  913. -- iteration 13 --
  914. array(0) {
  915. }
  916. array(0) {
  917. }
  918. array(0) {
  919. }
  920. array(0) {
  921. }
  922. array(0) {
  923. }
  924. array(0) {
  925. }
  926. array(0) {
  927. }
  928. array(0) {
  929. }
  930. array(0) {
  931. }
  932. array(0) {
  933. }
  934. array(0) {
  935. }
  936. array(0) {
  937. }
  938. array(0) {
  939. }
  940. array(0) {
  941. }
  942. array(0) {
  943. }
  944. array(0) {
  945. }
  946. array(0) {
  947. }
  948. array(0) {
  949. }
  950. bool(false)
  951. *** Done ***