| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\DateTime; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Calculation\DateTime; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Calculation\Functions; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Shared\Date; | 
					
						
							|  |  |  | use PHPUnit\Framework\TestCase; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EoMonthTest extends TestCase | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-04-27 10:28:36 +00:00
										 |  |  |     protected function setUp(): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         Functions::setCompatibilityMode(Functions::COMPATIBILITY_EXCEL); | 
					
						
							|  |  |  |         Functions::setReturnDateType(Functions::RETURNDATE_EXCEL); | 
					
						
							|  |  |  |         Date::setExcelCalendar(Date::CALENDAR_WINDOWS_1900); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider providerEOMONTH | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param mixed $expectedResult | 
					
						
							| 
									
										
										
										
											2019-07-22 22:50:30 +00:00
										 |  |  |      * @param $dateValue | 
					
						
							|  |  |  |      * @param $adjustmentMonths | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testEOMONTH($expectedResult, $dateValue, $adjustmentMonths): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-07-22 22:50:30 +00:00
										 |  |  |         $result = DateTime::EOMONTH($dateValue, $adjustmentMonths); | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertEqualsWithDelta($expectedResult, $result, 1E-8); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function providerEOMONTH() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2020-05-17 09:35:55 +00:00
										 |  |  |         return require 'tests/data/Calculation/DateTime/EOMONTH.php'; | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testEOMONTHtoUnixTimestamp(): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         Functions::setReturnDateType(Functions::RETURNDATE_UNIX_TIMESTAMP); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $result = DateTime::EOMONTH('2012-1-26', -1); | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertEquals(1325289600, $result); | 
					
						
							|  |  |  |         self::assertEqualsWithDelta(1325289600, $result, 1E-8); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testEOMONTHtoDateTimeObject(): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         Functions::setReturnDateType(Functions::RETURNDATE_PHP_DATETIME_OBJECT); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $result = DateTime::EOMONTH('2012-1-26', -1); | 
					
						
							|  |  |  |         //    Must return an object...
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertIsObject($result); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |         //    ... of the correct type
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertTrue(is_a($result, 'DateTimeInterface')); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |         //    ... with the correct value
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertEquals($result->format('d-M-Y'), '31-Dec-2011'); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } |