* @copyright Meritoo * * @internal * @covers \Meritoo\Common\Collection\DateTimeCollection */ class DateTimeCollectionTest extends BaseTestCase { public function provideDifferentTypesOfElements(): ?Generator { yield [ 'An empty array', [], [], ]; yield [ 'Valid elements only', [ new DateTime('2001-01-01'), new DateTime('2001-01-02'), ], [ new DateTime('2001-01-01'), new DateTime('2001-01-02'), ], ]; yield [ 'Mixed elements', [ 1, 'test', new DateTime('2001-01-01'), '', [], 234, new DateTime('2001-01-02'), ], [ 2 => new DateTime('2001-01-01'), 6 => new DateTime('2001-01-02'), ], ]; } public function testConstructor(): void { static::assertConstructorVisibilityAndArguments( DateTimeCollection::class, OopVisibilityType::IS_PUBLIC, 1 ); } /** * @param string $description * @param array $elements * @param array $expectedElements * * @dataProvider provideDifferentTypesOfElements */ public function testCreateWithDifferentTypesOfElements( string $description, array $elements, array $expectedElements ): void { $collection = new DateTimeCollection($elements); static::assertEquals($expectedElements, $collection->toArray(), $description); } }