| 
									
										
										
										
											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 TimeTest 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 providerTIME | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param mixed $expectedResult | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testTIME($expectedResult, ...$args): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         $result = DateTime::TIME(...$args); | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertEqualsWithDelta($expectedResult, $result, 1E-8); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function providerTIME() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2020-05-17 09:35:55 +00:00
										 |  |  |         return require 'tests/data/Calculation/DateTime/TIME.php'; | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testTIMEtoUnixTimestamp(): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         Functions::setReturnDateType(Functions::RETURNDATE_PHP_NUMERIC); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $result = DateTime::TIME(7, 30, 20); | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         self::assertEqualsWithDelta(27020, $result, 1E-8); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testTIMEtoDateTimeObject(): void | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         Functions::setReturnDateType(Functions::RETURNDATE_PHP_OBJECT); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $result = DateTime::TIME(7, 30, 20); | 
					
						
							|  |  |  |         //    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('H:i:s'), '07:30:20'); | 
					
						
							| 
									
										
										
										
											2019-07-21 18:55:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } |