TimeZoneTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * TimeZone's tests
  4. */
  5. require_once 'application/TimeZone.php';
  6. /**
  7. * Unitary tests for timezone utilities
  8. */
  9. class TimeZoneTest extends PHPUnit_Framework_TestCase
  10. {
  11. /**
  12. * @var array of timezones
  13. */
  14. protected $installedTimezones;
  15. public function setUp()
  16. {
  17. $this->installedTimezones = [
  18. 'Antarctica/Syowa',
  19. 'Europe/London',
  20. 'Europe/Paris',
  21. 'UTC'
  22. ];
  23. }
  24. /**
  25. * Generate a timezone selection form
  26. */
  27. public function testGenerateTimeZoneForm()
  28. {
  29. $expected = [
  30. 'continents' => [
  31. 'Antarctica',
  32. 'Europe',
  33. 'UTC',
  34. 'selected' => '',
  35. ],
  36. 'cities' => [
  37. ['continent' => 'Antarctica', 'city' => 'Syowa'],
  38. ['continent' => 'Europe', 'city' => 'London'],
  39. ['continent' => 'Europe', 'city' => 'Paris'],
  40. ['continent' => 'UTC', 'city' => 'UTC'],
  41. 'selected' => '',
  42. ]
  43. ];
  44. list($continents, $cities) = generateTimeZoneData($this->installedTimezones);
  45. $this->assertEquals($expected['continents'], $continents);
  46. $this->assertEquals($expected['cities'], $cities);
  47. }
  48. /**
  49. * Generate a timezone selection form, with a preselected timezone
  50. */
  51. public function testGenerateTimeZoneFormPreselected()
  52. {
  53. $expected = [
  54. 'continents' => [
  55. 'Antarctica',
  56. 'Europe',
  57. 'UTC',
  58. 'selected' => 'Antarctica',
  59. ],
  60. 'cities' => [
  61. ['continent' => 'Antarctica', 'city' => 'Syowa'],
  62. ['continent' => 'Europe', 'city' => 'London'],
  63. ['continent' => 'Europe', 'city' => 'Paris'],
  64. ['continent' => 'UTC', 'city' => 'UTC'],
  65. 'selected' => 'Syowa',
  66. ]
  67. ];
  68. list($continents, $cities) = generateTimeZoneData($this->installedTimezones, 'Antarctica/Syowa');
  69. $this->assertEquals($expected['continents'], $continents);
  70. $this->assertEquals($expected['cities'], $cities);
  71. }
  72. /**
  73. * Check valid timezones
  74. */
  75. public function testValidTimeZone()
  76. {
  77. $this->assertTrue(isTimeZoneValid('America', 'Argentina/Ushuaia'));
  78. $this->assertTrue(isTimeZoneValid('Europe', 'Oslo'));
  79. }
  80. /**
  81. * Check invalid timezones
  82. */
  83. public function testInvalidTimeZone()
  84. {
  85. $this->assertFalse(isTimeZoneValid('CEST', 'CEST'));
  86. $this->assertFalse(isTimeZoneValid('Europe', 'Atlantis'));
  87. $this->assertFalse(isTimeZoneValid('Middle_Earth', 'Moria'));
  88. $this->assertFalse(isTimeZoneValid('UTC', 'UTC'));
  89. }
  90. }