Mercurial > hg > isophonics-drupal-site
diff core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
| author | Chris Cannam |
|---|---|
| date | Thu, 28 Feb 2019 13:21:36 +0000 |
| parents | 1fec387a4317 |
| children |
line wrap: on
line diff
--- a/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php Tue Jul 10 15:07:59 2018 +0100 +++ b/core/tests/Drupal/Tests/Component/Datetime/DateTimePlusTest.php Thu Feb 28 13:21:36 2019 +0000 @@ -330,7 +330,9 @@ // Create a date object in the distant past. // @see https://www.drupal.org/node/2795489#comment-12127088 if (version_compare(PHP_VERSION, '5.6.15', '>=')) { - $dates[] = ['1809-02-12 10:30', 'America/Chicago', '1809-02-12T10:30:00-06:00']; + // Note that this date is after the United States standardized its + // timezones. + $dates[] = ['1883-11-19 10:30', 'America/Chicago', '1883-11-19T10:30:00-06:00']; } // Create a date object in the far future. $dates[] = ['2345-01-02 02:04', 'UTC', '2345-01-02T02:04:00+00:00']; @@ -366,7 +368,9 @@ // Create a date object in the distant past. // @see https://www.drupal.org/node/2795489#comment-12127088 if (version_compare(PHP_VERSION, '5.6.15', '>=')) { - $dates[] = [['year' => 1809, 'month' => 2, 'day' => 12], 'America/Chicago', '1809-02-12T00:00:00-06:00']; + // Note that this date is after the United States standardized its + // timezones. + $dates[] = [['year' => 1883, 'month' => 11, 'day' => 19], 'America/Chicago', '1883-11-19T00:00:00-06:00']; } // Create a date object in the far future. $dates[] = [['year' => 2345, 'month' => 1, 'day' => 2], 'UTC', '2345-01-02T00:00:00+00:00']; @@ -807,7 +811,7 @@ public function testValidateFormat() { // Check that an input that does not strictly follow the input format will // produce the desired date. In this case the year string '11' doesn't - // precisely match the 'Y' formater parameter, but PHP will parse it + // precisely match the 'Y' formatter parameter, but PHP will parse it // regardless. However, when formatted with the same string, the year will // be output with four digits. With the ['validate_format' => FALSE] // $settings, this will not thrown an exception. @@ -891,4 +895,29 @@ $date->setTimezone(new \DateTimeZone('America/New_York'))->nonexistent(); } + /** + * @covers ::getPhpDateTime + */ + public function testGetPhpDateTime() { + $new_york = new \DateTimeZone('America/New_York'); + $berlin = new \DateTimeZone('Europe/Berlin'); + + // Test retrieving a cloned copy of the wrapped \DateTime object, and that + // altering it does not change the DateTimePlus object. + $datetimeplus = DateTimePlus::createFromFormat('Y-m-d H:i:s', '2017-07-13 22:40:00', $new_york, ['langcode' => 'en']); + $this->assertEquals(1500000000, $datetimeplus->getTimestamp()); + $this->assertEquals('America/New_York', $datetimeplus->getTimezone()->getName()); + + $datetime = $datetimeplus->getPhpDateTime(); + $this->assertInstanceOf('DateTime', $datetime); + $this->assertEquals(1500000000, $datetime->getTimestamp()); + $this->assertEquals('America/New_York', $datetime->getTimezone()->getName()); + + $datetime->setTimestamp(1400000000)->setTimezone($berlin); + $this->assertEquals(1400000000, $datetime->getTimestamp()); + $this->assertEquals('Europe/Berlin', $datetime->getTimezone()->getName()); + $this->assertEquals(1500000000, $datetimeplus->getTimestamp()); + $this->assertEquals('America/New_York', $datetimeplus->getTimezone()->getName()); + } + }
