ソースを参照

Making Time::__toString be locale aware. Adding tests for defaultLocale

Jose Lorenzo Rodriguez 12 年 前
コミット
7a9985dc86
2 ファイル変更33 行追加2 行削除
  1. 8 0
      src/Utility/Time.php
  2. 25 2
      tests/TestCase/Utility/TimeTest.php

+ 8 - 0
src/Utility/Time.php

@@ -498,6 +498,14 @@ class Time extends Carbon {
 	}
 
 /**
+ * {@inheritdoc}
+ *
+ */
+	public function __toString() {
+		return $this->i18nFormat();
+	}
+
+/**
  * Get list of timezone identifiers
  *
  * @param int|string $filter A regex to filter identifer

+ 25 - 2
tests/TestCase/Utility/TimeTest.php

@@ -42,6 +42,7 @@ class TimeTest extends TestCase {
 	public function setUp() {
 		parent::setUp();
 		$this->now = Time::getTestNow();
+		$this->locale = Time::$defaultLocale;
 	}
 
 /**
@@ -51,7 +52,8 @@ class TimeTest extends TestCase {
  */
 	public function tearDown() {
 		parent::tearDown();
-		 Time::setTestNow($this->now);
+		Time::setTestNow($this->now);
+		Time::$defaultLocale = $this->locale;
 	}
 
 /**
@@ -485,7 +487,6 @@ class TimeTest extends TestCase {
 	public function testI18nFormat() {
 		$time = new Time('Thu Jan 14 13:59:28 2010');
 		$result = $time->i18nFormat();
-
 		$expected = '1/14/10, 1:59 PM';
 		$this->assertEquals($expected, $result);
 
@@ -501,6 +502,15 @@ class TimeTest extends TestCase {
 		$result = $time->i18nFormat('HH:mm:ss', 'Australia/Sydney');
 		$expected = '00:59:28';
 		$this->assertEquals($expected, $result);
+
+		Time::$defaultLocale = 'fr-FR';
+		$result = $time->i18nFormat(\IntlDateFormatter::FULL);
+		$expected = 'jeudi 14 janvier 2010 13:59:28 UTC';
+		$this->assertEquals($expected, $result);
+
+		$result = $time->i18nFormat(\IntlDateFormatter::FULL, null, 'es-ES');
+		$expected = 'jueves, 14 de enero de 2010, 13:59:28 (GMT)';
+		$this->assertEquals($expected, $result, 'DEfault locale should not be used');
 	}
 
 /**
@@ -535,4 +545,17 @@ class TimeTest extends TestCase {
 		$this->assertFalse(isset($return['Asia/Bangkok']));
 	}
 
+/**
+ * Tests that __toString uses the i18n formatter
+ *
+ * @return void
+ */
+	public function testToString() {
+		$time = new Time('2014-04-20 22:10');
+		$this->assertEquals('4/20/14, 10:10 PM', (string)$time);
+
+		Time::$defaultLocale = 'fr-FR';
+		$this->assertEquals('20/04/2014 22:10', (string)$time);
+	}
+
 }