FluidSettersTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * This file is part of the Carbon package.
  5. *
  6. * (c) Brian Nesbitt <brian@nesbot.com>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Tests\Carbon;
  12. use Carbon\Carbon;
  13. use Tests\AbstractTestCase;
  14. class FluidSettersTest extends AbstractTestCase
  15. {
  16. public function testFluidYearSetter()
  17. {
  18. $d = Carbon::now();
  19. $this->assertInstanceOfCarbon($d->year(1995));
  20. $this->assertSame(1995, $d->year);
  21. }
  22. public function testFluidMonthSetter()
  23. {
  24. $d = Carbon::now();
  25. $this->assertInstanceOfCarbon($d->month(3));
  26. $this->assertSame(3, $d->month);
  27. // Can go to september 1 to 30 (but if it's the 31, it will overflow)
  28. $this->assertInstanceOfCarbon($d->startOfMonth()->setMonth(9));
  29. $this->assertSame(9, $d->month);
  30. $this->assertInstanceOfCarbon($d->months(3));
  31. $this->assertSame(3, $d->month);
  32. $this->assertInstanceOfCarbon($d->setMonths(9));
  33. $this->assertSame(9, $d->month);
  34. }
  35. public function testFluidMonthSetterWithWrap()
  36. {
  37. $d = Carbon::createFromDate(2012, 8, 21);
  38. $this->assertInstanceOfCarbon($d->month(13));
  39. $this->assertSame(1, $d->month);
  40. }
  41. public function testFluidDaySetter()
  42. {
  43. $d = Carbon::now();
  44. $this->assertInstanceOfCarbon($d->day(2));
  45. $this->assertSame(2, $d->day);
  46. }
  47. public function testFluidDaySetterWithWrap()
  48. {
  49. $d = Carbon::createFromDate(2000, 1, 1);
  50. $this->assertInstanceOfCarbon($d->day(32));
  51. $this->assertSame(1, $d->day);
  52. }
  53. public function testFluidSetDate()
  54. {
  55. $d = Carbon::createFromDate(2000, 1, 1);
  56. $this->assertInstanceOfCarbon($d->setDate(1995, 13, 32));
  57. $this->assertCarbon($d, 1996, 2, 1);
  58. }
  59. public function testFluidHourSetter()
  60. {
  61. $d = Carbon::now();
  62. $this->assertInstanceOfCarbon($d->hour(2));
  63. $this->assertSame(2, $d->hour);
  64. }
  65. public function testFluidHourSetterWithWrap()
  66. {
  67. $d = Carbon::now();
  68. $this->assertInstanceOfCarbon($d->hour(25));
  69. $this->assertSame(1, $d->hour);
  70. }
  71. public function testFluidMinuteSetter()
  72. {
  73. $d = Carbon::now();
  74. $this->assertInstanceOfCarbon($d->minute(2));
  75. $this->assertSame(2, $d->minute);
  76. }
  77. public function testFluidMinuteSetterWithWrap()
  78. {
  79. $d = Carbon::now();
  80. $this->assertInstanceOfCarbon($d->minute(61));
  81. $this->assertSame(1, $d->minute);
  82. }
  83. public function testFluidSecondSetter()
  84. {
  85. $d = Carbon::now();
  86. $this->assertInstanceOfCarbon($d->second(2));
  87. $this->assertSame(2, $d->second);
  88. }
  89. public function testFluidSecondSetterWithWrap()
  90. {
  91. $d = Carbon::now();
  92. $this->assertInstanceOfCarbon($d->second(62));
  93. $this->assertSame(2, $d->second);
  94. }
  95. public function testFluidSetTime()
  96. {
  97. $d = Carbon::createFromDate(2000, 1, 1);
  98. $this->assertInstanceOfCarbon($d->setTime(25, 61, 61));
  99. $this->assertCarbon($d, 2000, 1, 2, 2, 2, 1);
  100. }
  101. public function testFluidTimestampSetter()
  102. {
  103. $d = Carbon::now();
  104. $this->assertInstanceOfCarbon($d->timestamp(10));
  105. $this->assertSame(10, $d->timestamp);
  106. $this->assertInstanceOfCarbon($d->timestamp(1600887164.88952298));
  107. $this->assertSame('2020-09-23 14:52:44.889523', $d->format('Y-m-d H:i:s.u'));
  108. $this->assertInstanceOfCarbon($d->timestamp('0.88951247 1600887164'));
  109. $this->assertSame('2020-09-23 14:52:44.889512', $d->format('Y-m-d H:i:s.u'));
  110. $this->assertInstanceOfCarbon($d->timestamp('0.88951247/1600887164/12.56'));
  111. $this->assertSame('2020-09-23 14:52:57.449512', $d->format('Y-m-d H:i:s.u'));
  112. }
  113. }