Skip to content

Commit

Permalink
Add tests and remove milliseconds from time
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Kolb committed Dec 7, 2024
1 parent 7528990 commit db62f6f
Show file tree
Hide file tree
Showing 7 changed files with 186 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/Time.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

final readonly class Time implements \Stringable, StringNormalizable
{
private const string TIME_FORMAT = 'H:i:s.u';
private const string TIME_FORMAT = 'H:i:s';
private const int MINUTES_IN_AN_HOUR = 60;

// -- Construction
Expand Down
35 changes: 35 additions & 0 deletions tests/Month/NormalizeDenormalizeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Month;

use DigitalCraftsman\DateTimePrecision\Month;
use PHPUnit\Framework\TestCase;

/**
* @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Month
*/
final class NormalizeDenormalizeTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_and_denormalize_works(): void
{
// -- Arrange
$month = Month::fromString('2022-10');
$data = '2022-10';

// -- Act
$normalized = $month->normalize();
$denormalized = Month::denormalize($data);

// -- Assert
self::assertSame($data, $normalized);
self::assertEquals($month, $denormalized);
}
}
35 changes: 35 additions & 0 deletions tests/Time/NormalizeDenormalizeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Time;

use DigitalCraftsman\DateTimePrecision\Time;
use PHPUnit\Framework\TestCase;

/**
* @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Time
*/
final class NormalizeDenormalizeTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_and_denormalize_works(): void
{
// -- Arrange
$time = Time::fromString('15:45:30');
$data = '15:45:30';

// -- Act
$normalized = $time->normalize();
$denormalized = Time::denormalize($data);

// -- Assert
self::assertSame($data, $normalized);
self::assertEquals($time, $denormalized);
}
}
2 changes: 1 addition & 1 deletion tests/Time/ToStringTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ public function to_string_works(): void
$time = Time::fromString('15:00:00');

// -- Assert
self::assertEquals('15:00:00.000000', (string) $time);
self::assertEquals('15:00:00', (string) $time);
}
}
35 changes: 35 additions & 0 deletions tests/Weekday/NormalizeDenormalizeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Weekday;

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

/**
* @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Weekday
*/
final class NormalizeDenormalizeTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_and_denormalize_works(): void
{
// -- Arrange
$weekday = Weekday::MONDAY;
$data = 'MONDAY';

// -- Act
$normalized = $weekday->normalize();
$denormalized = Weekday::denormalize($data);

// -- Assert
self::assertSame($data, $normalized);
self::assertEquals($weekday, $denormalized);
}
}
44 changes: 44 additions & 0 deletions tests/Weekdays/NormalizeDenormalizeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?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 NormalizeDenormalizeTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_and_denormalize_works(): void
{
// -- Arrange
$weekdays = new Weekdays([
Weekday::MONDAY,
Weekday::TUESDAY,
Weekday::WEDNESDAY,
]);
$data = [
'MONDAY',
'TUESDAY',
'WEDNESDAY',
];

// -- Act
$normalized = $weekdays->normalize();
$denormalized = Weekdays::denormalize($data);

// -- Assert
self::assertSame($data, $normalized);
self::assertEquals($weekdays, $denormalized);
}
}
35 changes: 35 additions & 0 deletions tests/Year/NormalizeDenormalizeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace DigitalCraftsman\DateTimePrecision\Year;

use DigitalCraftsman\DateTimePrecision\Year;
use PHPUnit\Framework\TestCase;

/**
* @coversDefaultClass \DigitalCraftsman\DateTimePrecision\Year
*/
final class NormalizeDenormalizeTest extends TestCase
{
/**
* @test
*
* @covers ::normalize
* @covers ::denormalize
*/
public function normalize_and_denormalize_works(): void
{
// -- Arrange
$year = Year::fromString('2022');
$data = 2022;

// -- Act
$normalized = $year->normalize();
$denormalized = Year::denormalize($data);

// -- Assert
self::assertSame($data, $normalized);
self::assertEquals($year, $denormalized);
}
}

0 comments on commit db62f6f

Please sign in to comment.