ObjectsTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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\CarbonImmutable;
  12. use Carbon\CarbonImmutable as Carbon;
  13. use DateTime;
  14. use DateTimeImmutable;
  15. use stdClass;
  16. use Tests\AbstractTestCase;
  17. class ObjectsTest extends AbstractTestCase
  18. {
  19. public function testToObject()
  20. {
  21. $dt = Carbon::now();
  22. $dtToObject = $dt->toObject();
  23. $this->assertInstanceOf(stdClass::class, $dtToObject);
  24. $this->assertObjectHasProperty('year', $dtToObject);
  25. $this->assertSame($dt->year, $dtToObject->year);
  26. $this->assertObjectHasProperty('month', $dtToObject);
  27. $this->assertSame($dt->month, $dtToObject->month);
  28. $this->assertObjectHasProperty('day', $dtToObject);
  29. $this->assertSame($dt->day, $dtToObject->day);
  30. $this->assertObjectHasProperty('dayOfWeek', $dtToObject);
  31. $this->assertSame($dt->dayOfWeek, $dtToObject->dayOfWeek);
  32. $this->assertObjectHasProperty('dayOfYear', $dtToObject);
  33. $this->assertSame($dt->dayOfYear, $dtToObject->dayOfYear);
  34. $this->assertObjectHasProperty('hour', $dtToObject);
  35. $this->assertSame($dt->hour, $dtToObject->hour);
  36. $this->assertObjectHasProperty('minute', $dtToObject);
  37. $this->assertSame($dt->minute, $dtToObject->minute);
  38. $this->assertObjectHasProperty('second', $dtToObject);
  39. $this->assertSame($dt->second, $dtToObject->second);
  40. $this->assertObjectHasProperty('micro', $dtToObject);
  41. $this->assertSame($dt->micro, $dtToObject->micro);
  42. $this->assertObjectHasProperty('timestamp', $dtToObject);
  43. $this->assertSame($dt->timestamp, $dtToObject->timestamp);
  44. $this->assertObjectHasProperty('timezone', $dtToObject);
  45. $this->assertEquals($dt->timezone, $dtToObject->timezone);
  46. $this->assertObjectHasProperty('formatted', $dtToObject);
  47. $this->assertSame($dt->format(Carbon::DEFAULT_TO_STRING_FORMAT), $dtToObject->formatted);
  48. }
  49. public function testToDateTime()
  50. {
  51. $dt = Carbon::create(2000, 3, 26);
  52. $date = $dt->toDateTime();
  53. $this->assertInstanceOf(DateTime::class, $date);
  54. $this->assertSame('2000-03-26', $date->format('Y-m-d'));
  55. $date = $dt->toDate();
  56. $this->assertInstanceOf(DateTime::class, $date);
  57. $this->assertSame('2000-03-26', $date->format('Y-m-d'));
  58. }
  59. public function testToDateTimeImmutable()
  60. {
  61. $dt = Carbon::create(2000, 3, 26);
  62. $date = $dt->toDateTimeImmutable();
  63. $this->assertInstanceOf(DateTimeImmutable::class, $date);
  64. $this->assertSame('2000-03-26', $date->format('Y-m-d'));
  65. }
  66. }