fscanf_variation33.phpt 11 KB

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