Skip to content

Commit

Permalink
Improve Set naming
Browse files Browse the repository at this point in the history
  • Loading branch information
JeroenDeDauw committed Feb 9, 2021
1 parent 6dd78fc commit 5df0f90
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 42 deletions.
32 changes: 18 additions & 14 deletions src/Set.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@

class Set implements EdtfValue
{
private array $lists;

/**
* @var array<int, EdtfValue>
*/
private array $dates;
private bool $allMembers;
private bool $earlier;
private bool $later;

/**
* @param EdtfValue[] $lists
* @param array<int, EdtfValue> $lists
* @param bool $allMembers
* @param bool $earlier
* @param bool $later
Expand All @@ -24,18 +28,18 @@ public function __construct(
bool $later = false
)
{
$this->lists = $lists;
$this->dates = $lists;
$this->allMembers = $allMembers;
$this->earlier = $earlier;
$this->later = $later;
}

/**
* @TODO: add a way to covers with earlier or later
* @TODO: (low priority) add a way to covers with earlier or later
*/
public function covers(EdtfValue $edtf): bool
{
foreach($this->lists as $list){
foreach( $this->dates as $list){
if ($list->covers($edtf)) {
return true;
}
Expand All @@ -46,42 +50,42 @@ public function covers(EdtfValue $edtf): bool

public function getMax(): int
{
return $this->isLater() ? 0 : $this->endElementInSet()->getMax();
return $this->hasOpenEnd() ? 0 : $this->endElementInSet()->getMax();
}

public function getMin(): int
{
return $this->isEarlier() ? 0 : $this->startElementInSet()->getMin();
return $this->hasOpenStart() ? 0 : $this->startElementInSet()->getMin();
}

public function isAllMembers(): bool
{
return $this->allMembers;
}

public function isEarlier(): bool
public function hasOpenStart(): bool
{
return $this->earlier;
}

public function isLater(): bool
public function hasOpenEnd(): bool
{
return $this->later;
}

public function getLists(): array
public function getDates(): array
{
return $this->lists;
return $this->dates;
}

private function startElementInSet(): EdtfValue
{
return $this->lists[0];
return $this->dates[0];
}

private function endElementInSet(): EdtfValue
{
$listsCount = count($this->lists);
return $listsCount === 1 ? $this->lists[0] : $this->lists[$listsCount - 1];
$listsCount = count($this->dates);
return $listsCount === 1 ? $this->dates[0] : $this->dates[$listsCount - 1];
}
}
50 changes: 25 additions & 25 deletions tests/Functional/Level2/SetRepresentationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public function testOneOfTheYears(): void
{
$set = $this->createSet('[1667,1668,1670..1672]');

$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertSame(1667, $lists[0]->getYear());
Expand All @@ -40,11 +40,11 @@ public function testOneOfTheYears(): void
public function testOneOfWithEarlierDate(): void
{
$set = $this->createSet('[..1760-12-03]');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertTrue($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertTrue($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertSame(1760, $lists[0]->getYear());
$this->assertSame(12, $lists[0]->getMonth());
Expand All @@ -59,11 +59,11 @@ public function testOneOfWithEarlierDate(): void
public function testOneOfWithLaterMonth(): void
{
$set = $this->createSet('[1760-12..]');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertFalse($set->isEarlier());
$this->assertTrue($set->isLater());
$this->assertFalse($set->hasOpenStart());
$this->assertTrue($set->hasOpenEnd());

$this->assertSame(1760, $lists[0]->getYear());
$this->assertSame(12, $lists[0]->getMonth());
Expand All @@ -78,11 +78,11 @@ public function testOneOfWithLaterMonth(): void
public function testOneOfWithLaterMonthAndPrecision(): void
{
$set = $this->createSet('[1760-01,1760-02,1760-12..]');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertFalse($set->isEarlier());
$this->assertTrue($set->isLater());
$this->assertFalse($set->hasOpenStart());
$this->assertTrue($set->hasOpenEnd());

$this->assertCount(3, $lists);
$this->assertSame(1, $lists[0]->getMonth());
Expand All @@ -98,11 +98,11 @@ public function testOneOfWithLaterMonthAndPrecision(): void
public function testOneOfWithYearPrecisionOrYearMonthPrecision(): void
{
$set = $this->createSet('[1667,1760-12]');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertFalse($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertFalse($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertCount(2, $lists);
$this->assertSame(1667, $lists[0]->getYear());
Expand All @@ -119,11 +119,11 @@ public function testOneOfWithYearPrecisionOrYearMonthPrecision(): void
public function testOneOfWithYearOnlyPrecisionAndEarlier(): void
{
$set = $this->createSet('[..1984]');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertFalse($set->isAllMembers());
$this->assertTrue($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertTrue($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertCount(1, $lists);
$this->assertSame(1984, $lists[0]->getYear());
Expand All @@ -137,11 +137,11 @@ public function testOneOfWithYearOnlyPrecisionAndEarlier(): void
public function testAllMembersWithAllOfTheYears(): void
{
$set = $this->createSet('{1667,1668,1670..1672}');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertTrue($set->isAllMembers());
$this->assertFalse($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertFalse($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertCount(5, $lists);

Expand All @@ -155,11 +155,11 @@ public function testAllMembersWithAllOfTheYears(): void
public function testAllMembersWithYearAndYearMonthPrecision(): void
{
$set = $this->createSet('{1960,1961-12}');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertTrue($set->isAllMembers());
$this->assertFalse($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertFalse($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertCount(2, $lists);

Expand All @@ -173,11 +173,11 @@ public function testAllMembersWithYearAndYearMonthPrecision(): void
public function testAllMembersWithYearOnlyPrecisionAndEarlier(): void
{
$set = $this->createSet('{..1984}');
$lists = $set->getLists();
$lists = $set->getDates();

$this->assertTrue($set->isAllMembers());
$this->assertTrue($set->isEarlier());
$this->assertFalse($set->isLater());
$this->assertTrue($set->hasOpenStart());
$this->assertFalse($set->hasOpenEnd());

$this->assertCount(1, $lists);

Expand Down
6 changes: 3 additions & 3 deletions tests/Unit/SetTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ public function testCreateOneOfASet(): void
$set = new Set([$date1, $date2, $date3, $date4]);

$this->assertFalse($set->isAllMembers());
$this->assertFalse($set->isLater());
$this->assertFalse($set->isEarlier());
$this->assertCount(4, $set->getLists());
$this->assertFalse($set->hasOpenEnd());
$this->assertFalse($set->hasOpenStart());
$this->assertCount(4, $set->getDates());

$expectedMin = Carbon::create(1960)->getTimestamp();
$this->assertSame($expectedMin, $set->getMin());
Expand Down

0 comments on commit 5df0f90

Please sign in to comment.