sprintf_star.phpt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. --TEST--
  2. Star width and precision in sprintf()
  3. --FILE--
  4. <?php
  5. $f = 1.23456789012345678;
  6. $fx = 1.23456789012345678e100;
  7. var_dump($f, $fx);
  8. printf("%.*f\n", 10, $f);
  9. printf("%.*G\n", 10, $f);
  10. printf("%.*g\n", -1, $fx);
  11. printf("%.*G\n", -1, $fx);
  12. printf("%.*h\n", -1, $fx);
  13. printf("%.*H\n", -1, $fx);
  14. printf("%.*s\n", 3, "foobar");
  15. echo "\n";
  16. printf("%*f\n", 10, $f);
  17. printf("%*G\n", 10, $f);
  18. printf("%*s\n", 10, "foobar");
  19. echo "\n";
  20. printf("%*.*f\n", 10, 3, $f);
  21. printf("%*.*G\n", 10, 3, $f);
  22. printf("%*.*s\n", 10, 3, "foobar");
  23. echo "\n";
  24. printf("%1$.*2\$f\n", $f, 10);
  25. printf("%.*2\$f\n", $f, 10);
  26. printf("%2$.*f\n", 10, $f);
  27. printf("%1$*2\$f\n", $f, 10);
  28. printf("%*2\$f\n", $f, 10);
  29. printf("%2$*f\n", 10, $f);
  30. printf("%1$*2$.*3\$f\n", $f, 10, 3);
  31. printf("%*2$.*3\$f\n", $f, 10, 3);
  32. printf("%3$*.*f\n", 10, 3, $f);
  33. echo "\n";
  34. try {
  35. printf("%.*G\n", "foo", 1.5);
  36. } catch (ValueError $e) {
  37. echo $e->getMessage(), "\n";
  38. }
  39. try {
  40. printf("%.*G\n", -100, 1.5);
  41. } catch (ValueError $e) {
  42. echo $e->getMessage(), "\n";
  43. }
  44. try {
  45. printf("%.*s\n", -1, "Foo");
  46. } catch (ValueError $e) {
  47. echo $e->getMessage(), "\n";
  48. }
  49. try {
  50. printf("%*G\n", -1, $f);
  51. } catch (ValueError $e) {
  52. echo $e->getMessage(), "\n";
  53. }
  54. ?>
  55. --EXPECT--
  56. float(1.2345678901234567)
  57. float(1.2345678901234569E+100)
  58. 1.2345678901
  59. 1.23456789
  60. 1.2345678901234569e+100
  61. 1.2345678901234569E+100
  62. 1.2345678901234569e+100
  63. 1.2345678901234569E+100
  64. foo
  65. 1.234568
  66. 1.23457
  67. foobar
  68. 1.235
  69. 1.23
  70. foo
  71. 1.2345678901
  72. 1.2345678901
  73. 1.2345678901
  74. 1.234568
  75. 1.234568
  76. 1.234568
  77. 1.235
  78. 1.235
  79. 1.235
  80. Precision must be an integer
  81. Precision must be between -1 and 2147483647
  82. Precision -1 is only supported for %g, %G, %h and %H
  83. Width must be greater than zero and less than 2147483647