Skip to content

Commit

Permalink
Add final tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Kolb committed Jun 9, 2024
1 parent 7969ee8 commit bb7c663
Show file tree
Hide file tree
Showing 3 changed files with 152 additions and 0 deletions.
58 changes: 58 additions & 0 deletions tests/Weekdays/ContainsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Weekdays;

use DigitalCraftsman\DateTimePrecision\Weekday;
use DigitalCraftsman\DateTimePrecision\Weekdays;
use PHPUnit\Framework\TestCase;

/** @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Weekdays */
final class ContainsTest extends TestCase
{
/**
* @test
*
* @dataProvider dataProvider
*
* @covers ::contains
*/
public function contain_works(
bool $expectedResult,
Weekdays $weekdays,
Weekday $comparator,
): void {
// -- Act & Assert
self::assertSame($expectedResult, $weekdays->contains($comparator));
}

/**
* @return array<string, array{
* 0: bool,
* 1: Weekdays,
* 2: Weekday,
* }>
*/
public static function dataProvider(): array
{
return [
'tuesday' => [
true,
new Weekdays([
Weekday::TUESDAY,
Weekday::WEDNESDAY,
]),
Weekday::TUESDAY,
],
'thursday' => [
false,
new Weekdays([
Weekday::MONDAY,
Weekday::WEDNESDAY,
]),
Weekday::THURSDAY,
],
];
}
}
35 changes: 35 additions & 0 deletions tests/Weekdays/NormalizationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Weekdays;

use DigitalCraftsman\DateTimePrecision\Weekday;
use DigitalCraftsman\DateTimePrecision\Weekdays;
use PHPUnit\Framework\TestCase;

/** @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Weekdays */
final class NormalizationTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_works(): void
{
// -- Arrange
$weekdays = new Weekdays([
Weekday::MONDAY,
Weekday::TUESDAY,
]);

// -- Act
$normalizedWeekdays = $weekdays->normalize();
$denormalizedWeekdays = Weekdays::denormalize($normalizedWeekdays);

// -- Assert
self::assertEquals($weekdays, $denormalizedWeekdays);
}
}
59 changes: 59 additions & 0 deletions tests/Weekdays/NotContainsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Weekdays;

use DigitalCraftsman\DateTimePrecision\Weekday;
use DigitalCraftsman\DateTimePrecision\Weekdays;
use PHPUnit\Framework\TestCase;

/** @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Weekdays */
final class NotContainsTest extends TestCase
{
/**
* @test
*
* @dataProvider dataProvider
*
* @covers ::notContains
*/
public function not_contain_works(
bool $expectedResult,
Weekdays $weekdays,
Weekday $comparator,
): void {
// -- Act & Assert
self::assertSame($expectedResult, $weekdays->notContains($comparator));
}

/**
* @return array<string, array{
* 0: bool,
* 1: Weekdays,
* 2: Weekday,
* }>
*/
public static function dataProvider(): array
{
return [
'tuesday' => [
true,
new Weekdays([
Weekday::MONDAY,
Weekday::WEDNESDAY,
]),
Weekday::TUESDAY,
],
'thursday' => [
false,
new Weekdays([
Weekday::MONDAY,
Weekday::WEDNESDAY,
Weekday::THURSDAY,
]),
Weekday::THURSDAY,
],
];
}
}

0 comments on commit bb7c663

Please sign in to comment.