ComparisonTest.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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\CarbonInterval;
  12. use Carbon\CarbonInterval;
  13. use DateInterval;
  14. use Tests\AbstractTestCase;
  15. class ComparisonTest extends AbstractTestCase
  16. {
  17. public function testEqualToTrue()
  18. {
  19. $oneDay = CarbonInterval::day();
  20. $this->assertTrue($oneDay->equalTo($oneDay));
  21. $this->assertTrue($oneDay->eq($oneDay));
  22. $this->assertTrue($oneDay->eq(CarbonInterval::day()));
  23. $this->assertTrue($oneDay->eq(new DateInterval('P1D')));
  24. $this->assertTrue($oneDay->eq(CarbonInterval::hours(24)));
  25. $this->assertTrue($oneDay->eq(CarbonInterval::hours(23)->minutes(60)));
  26. $this->assertTrue($oneDay->eq('24 hours'));
  27. $this->assertTrue($oneDay->eq('P1D'));
  28. }
  29. public function testEqualToFalse()
  30. {
  31. $oneDay = CarbonInterval::day();
  32. $this->assertFalse($oneDay->equalTo(CarbonInterval::hours(24)->microsecond(1)));
  33. $this->assertFalse($oneDay->eq(CarbonInterval::hours(24)->microsecond(1)));
  34. $this->assertFalse($oneDay->eq(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  35. }
  36. public function testNotEqualToTrue()
  37. {
  38. $oneDay = CarbonInterval::day();
  39. $this->assertTrue($oneDay->notEqualTo(CarbonInterval::hours(24)->microsecond(1)));
  40. $this->assertTrue($oneDay->ne(CarbonInterval::hours(24)->microsecond(1)));
  41. $this->assertTrue($oneDay->ne(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  42. }
  43. public function testNotEqualToFalse()
  44. {
  45. $oneDay = CarbonInterval::day();
  46. $this->assertFalse($oneDay->notEqualTo($oneDay));
  47. $this->assertFalse($oneDay->ne($oneDay));
  48. $this->assertFalse($oneDay->ne(CarbonInterval::day()));
  49. $this->assertFalse($oneDay->ne(new DateInterval('P1D')));
  50. $this->assertFalse($oneDay->ne(CarbonInterval::hours(24)));
  51. $this->assertFalse($oneDay->ne(CarbonInterval::hours(23)->minutes(60)));
  52. $this->assertFalse($oneDay->ne('24 hours'));
  53. $this->assertFalse($oneDay->ne('P1D'));
  54. }
  55. public function testGreaterThanToTrue()
  56. {
  57. $oneDay = CarbonInterval::day();
  58. $this->assertTrue($oneDay->greaterThan(CarbonInterval::day()->sub(1, 'microseconds')));
  59. $this->assertTrue($oneDay->gt(CarbonInterval::day()->sub(1, 'microseconds')));
  60. $this->assertTrue($oneDay->gt(new DateInterval('P0DT23H59M59S')));
  61. $this->assertTrue($oneDay->gt(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  62. $this->assertTrue($oneDay->gt('23 hours 59 minutes 59 seconds 999999 microseconds'));
  63. $this->assertTrue($oneDay->gt('P0DT23H59M59S'));
  64. $this->assertTrue($oneDay->gt('xxx'));
  65. }
  66. public function testGreaterThanToFalse()
  67. {
  68. $oneDay = CarbonInterval::day();
  69. $this->assertFalse($oneDay->greaterThan($oneDay));
  70. $this->assertFalse($oneDay->gt($oneDay));
  71. $this->assertFalse($oneDay->gt(CarbonInterval::day()));
  72. $this->assertFalse($oneDay->gt(CarbonInterval::hours(23)->minutes(60)));
  73. $this->assertFalse($oneDay->greaterThan(CarbonInterval::day()->add(1, 'microseconds')));
  74. $this->assertFalse($oneDay->gt(CarbonInterval::day()->add(1, 'microseconds')));
  75. $this->assertFalse($oneDay->gt(CarbonInterval::hours(23)->minutes(59)->seconds(59)->milliseconds(1001)));
  76. }
  77. public function testGreaterThanOrEqualToTrue()
  78. {
  79. $oneDay = CarbonInterval::day();
  80. $this->assertTrue($oneDay->greaterThanOrEqualTo($oneDay));
  81. $this->assertTrue($oneDay->gte($oneDay));
  82. $this->assertTrue($oneDay->gte(CarbonInterval::day()));
  83. $this->assertTrue($oneDay->gte(CarbonInterval::hours(23)->minutes(60)));
  84. $this->assertTrue($oneDay->greaterThanOrEqualTo(CarbonInterval::day()->sub(1, 'microseconds')));
  85. $this->assertTrue($oneDay->gte(CarbonInterval::day()->sub(1, 'microseconds')));
  86. $this->assertTrue($oneDay->gte(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  87. $this->assertTrue($oneDay->gte('xxx'));
  88. }
  89. public function testGreaterThanOrEqualToFalse()
  90. {
  91. $oneDay = CarbonInterval::day();
  92. $this->assertFalse($oneDay->greaterThanOrEqualTo(CarbonInterval::day()->add(1, 'microseconds')));
  93. $this->assertFalse($oneDay->gte(CarbonInterval::day()->add(1, 'microseconds')));
  94. $this->assertFalse($oneDay->gte(new DateInterval('P0DT23H59M61S')));
  95. $this->assertFalse($oneDay->gte(CarbonInterval::hours(23)->minutes(59)->seconds(59)->milliseconds(1001)));
  96. $this->assertFalse($oneDay->gte('23 hours 59 minutes 59 seconds 59 milliseconds 1001 milliseconds'));
  97. $this->assertFalse($oneDay->gte('P0DT23H59M61S'));
  98. }
  99. public function testLessThanToTrue()
  100. {
  101. $oneDay = CarbonInterval::day();
  102. $this->assertTrue($oneDay->lessThan(CarbonInterval::day()->add(1, 'microseconds')));
  103. $this->assertTrue($oneDay->lt(CarbonInterval::day()->add(1, 'microseconds')));
  104. $this->assertTrue($oneDay->lt(new DateInterval('P0DT23H59M61S')));
  105. $this->assertTrue($oneDay->lt(CarbonInterval::hours(23)->minutes(59)->seconds(59)->milliseconds(1001)));
  106. $this->assertTrue($oneDay->lt('23 hours 59 minutes 59 seconds 59 milliseconds 1001 milliseconds'));
  107. $this->assertTrue($oneDay->lt('P0DT23H59M61S'));
  108. }
  109. public function testLessThanToFalse()
  110. {
  111. $oneDay = CarbonInterval::day();
  112. $this->assertFalse($oneDay->lessThan($oneDay));
  113. $this->assertFalse($oneDay->lt($oneDay));
  114. $this->assertFalse($oneDay->lt(CarbonInterval::day()));
  115. $this->assertFalse($oneDay->lt(CarbonInterval::hours(23)->minutes(60)));
  116. $this->assertFalse($oneDay->lessThan(CarbonInterval::day()->sub(1, 'microseconds')));
  117. $this->assertFalse($oneDay->lt(CarbonInterval::day()->sub(1, 'microseconds')));
  118. $this->assertFalse($oneDay->lt(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  119. $this->assertFalse($oneDay->lt('xxx'));
  120. }
  121. public function testLessThanOrEqualToTrue()
  122. {
  123. $oneDay = CarbonInterval::day();
  124. $this->assertTrue($oneDay->lessThanOrEqualTo($oneDay));
  125. $this->assertTrue($oneDay->lte($oneDay));
  126. $this->assertTrue($oneDay->lte(CarbonInterval::day()));
  127. $this->assertTrue($oneDay->lte(CarbonInterval::hours(23)->minutes(60)));
  128. $this->assertTrue($oneDay->lessThanOrEqualTo(CarbonInterval::day()->add(1, 'microseconds')));
  129. $this->assertTrue($oneDay->lte(CarbonInterval::day()->add(1, 'microseconds')));
  130. $this->assertTrue($oneDay->lte(CarbonInterval::hours(23)->minutes(59)->seconds(59)->milliseconds(1001)));
  131. }
  132. public function testLessThanOrEqualToFalse()
  133. {
  134. $oneDay = CarbonInterval::day();
  135. $this->assertFalse($oneDay->lessThanOrEqualTo(CarbonInterval::day()->sub(1, 'microseconds')));
  136. $this->assertFalse($oneDay->lte(CarbonInterval::day()->sub(1, 'microseconds')));
  137. $this->assertFalse($oneDay->lte(new DateInterval('P0DT23H59M59S')));
  138. $this->assertFalse($oneDay->lte(CarbonInterval::hours(23)->minutes(59)->seconds(59)->microseconds(999999)));
  139. $this->assertFalse($oneDay->lte('23 hours 59 minutes 59 seconds 999999 microseconds'));
  140. $this->assertFalse($oneDay->lte('P0DT23H59M59S'));
  141. $this->assertFalse($oneDay->lte('xxx'));
  142. }
  143. public function testBetweenFalse()
  144. {
  145. $oneDay = CarbonInterval::day();
  146. $this->assertFalse($oneDay->between(CarbonInterval::days(2), CarbonInterval::days(3)));
  147. $twoDays = CarbonInterval::hours(48);
  148. $this->assertFalse($twoDays->between(CarbonInterval::day(), CarbonInterval::days(2), false));
  149. }
  150. public function testBetweenTrue()
  151. {
  152. $oneDay = CarbonInterval::day();
  153. $this->assertTrue($oneDay->between(CarbonInterval::hours(12), CarbonInterval::hours(36)));
  154. $twoDays = CarbonInterval::hours(48);
  155. $this->assertTrue($twoDays->between(CarbonInterval::day(), CarbonInterval::days(3), false));
  156. $this->assertTrue($twoDays->between(CarbonInterval::day(), CarbonInterval::days(3), true));
  157. $this->assertTrue($twoDays->between(CarbonInterval::day(), CarbonInterval::days(3)));
  158. $this->assertTrue($twoDays->between(CarbonInterval::day(), CarbonInterval::days(2)));
  159. }
  160. public function testBetweenIncludedFalse()
  161. {
  162. $oneDay = CarbonInterval::day();
  163. $this->assertFalse($oneDay->betweenIncluded(CarbonInterval::days(2), CarbonInterval::days(3)));
  164. }
  165. public function testBetweenIncludedTrue()
  166. {
  167. $oneDay = CarbonInterval::day();
  168. $this->assertTrue($oneDay->betweenIncluded(CarbonInterval::hours(12), CarbonInterval::hours(36)));
  169. $twoDays = CarbonInterval::hours(48);
  170. $this->assertTrue($twoDays->betweenIncluded(CarbonInterval::day(), CarbonInterval::days(2)));
  171. }
  172. public function testBetweenExcludedFalse()
  173. {
  174. $oneDay = CarbonInterval::day();
  175. $this->assertFalse($oneDay->betweenExcluded(CarbonInterval::days(2), CarbonInterval::days(3)));
  176. $twoDays = CarbonInterval::hours(48);
  177. $this->assertFalse($twoDays->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)));
  178. }
  179. public function testIsBetweenTrue()
  180. {
  181. $oneDay = CarbonInterval::day();
  182. $this->assertTrue($oneDay->isBetween(CarbonInterval::hours(12), CarbonInterval::hours(36)));
  183. $twoDays = CarbonInterval::hours(48);
  184. $this->assertTrue($twoDays->isBetween(CarbonInterval::day(), CarbonInterval::days(3), false));
  185. $this->assertTrue($twoDays->isBetween(CarbonInterval::day(), CarbonInterval::days(3), true));
  186. $this->assertTrue($twoDays->isBetween(CarbonInterval::day(), CarbonInterval::days(3)));
  187. $this->assertTrue($twoDays->isBetween(CarbonInterval::day(), CarbonInterval::days(2)));
  188. }
  189. }