Skip to content

Commit 8a7d2bc

Browse files
committed
~
1 parent a048e2a commit 8a7d2bc

File tree

9 files changed

+72
-37
lines changed

9 files changed

+72
-37
lines changed

.tools/.report/.build/coverage.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
Code Coverage Report Summary:
44
Classes: 100.00% (207/207)
5-
Methods: 100.00% (737/737)
6-
Lines: 100.00% (3718/3718)
5+
Methods: 100.00% (736/736)
6+
Lines: 100.00% (3714/3714)
77

.tools/.report/.deptrac/.deptrac.report

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Violations 0
66
Skipped violations 0
77
Uncovered 177
8-
Allowed 2543
8+
Allowed 2545
99
Warnings 0
1010
Errors 0
1111
-------------------- ------

.tools/.report/.phploc/.src.phploc.report

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ Directories 77
44
Files 419
55

66
Size
7-
Lines of Code (LOC) 13578
8-
Comment Lines of Code (CLOC) 739 (5.44%)
9-
Non-Comment Lines of Code (NCLOC) 12839 (94.56%)
10-
Logical Lines of Code (LLOC) 1419 (10.45%)
11-
Classes 1318 (92.88%)
7+
Lines of Code (LOC) 13571
8+
Comment Lines of Code (CLOC) 737 (5.43%)
9+
Non-Comment Lines of Code (NCLOC) 12834 (94.57%)
10+
Logical Lines of Code (LLOC) 1418 (10.45%)
11+
Classes 1317 (92.88%)
1212
Average Class Length 3
1313
Minimum Class Length 0
1414
Maximum Class Length 27
@@ -24,7 +24,7 @@ Size
2424

2525
Cyclomatic Complexity
2626
Average Complexity per LLOC 0.33
27-
Average Complexity per Class 2.04
27+
Average Complexity per Class 2.03
2828
Minimum Class Complexity 1.00
2929
Maximum Class Complexity 21.00
3030
Average Complexity per Method 1.49
@@ -36,12 +36,12 @@ Dependencies
3636
Global Constants 0 (0.00%)
3737
Global Variables 0 (0.00%)
3838
Super-Global Variables 0 (0.00%)
39-
Attribute Accesses 604
40-
Non-Static 588 (97.35%)
39+
Attribute Accesses 603
40+
Non-Static 587 (97.35%)
4141
Static 16 (2.65%)
42-
Method Calls 758
43-
Non-Static 681 (89.84%)
44-
Static 77 (10.16%)
42+
Method Calls 755
43+
Non-Static 678 (89.80%)
44+
Static 77 (10.20%)
4545

4646
Structure
4747
Namespaces 77
@@ -52,14 +52,14 @@ Structure
5252
Concrete Classes 191 (93.17%)
5353
Final Classes 70 (36.65%)
5454
Non-Final Classes 121 (63.35%)
55-
Methods 968
55+
Methods 969
5656
Scope
57-
Non-Static Methods 903 (93.29%)
57+
Non-Static Methods 904 (93.29%)
5858
Static Methods 65 (6.71%)
5959
Visibility
60-
Public Methods 763 (78.82%)
61-
Protected Methods 64 (6.61%)
62-
Private Methods 141 (14.57%)
60+
Public Methods 764 (78.84%)
61+
Protected Methods 64 (6.60%)
62+
Private Methods 141 (14.55%)
6363
Functions 37
6464
Named Functions 7 (18.92%)
6565
Anonymous Functions 30 (81.08%)

.tools/.report/.phploc/.test.phploc.report

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ Directories 74
44
Files 273
55

66
Size
7-
Lines of Code (LOC) 30544
7+
Lines of Code (LOC) 30570
88
Comment Lines of Code (CLOC) 458 (1.50%)
9-
Non-Comment Lines of Code (NCLOC) 30086 (98.50%)
10-
Logical Lines of Code (LLOC) 6687 (21.89%)
11-
Classes 6679 (99.88%)
9+
Non-Comment Lines of Code (NCLOC) 30112 (98.50%)
10+
Logical Lines of Code (LLOC) 6698 (21.91%)
11+
Classes 6690 (99.88%)
1212
Average Class Length 24
1313
Minimum Class Length 0
1414
Maximum Class Length 871
@@ -24,7 +24,7 @@ Size
2424

2525
Cyclomatic Complexity
2626
Average Complexity per LLOC 0.07
27-
Average Complexity per Class 2.60
27+
Average Complexity per Class 2.59
2828
Minimum Class Complexity 1.00
2929
Maximum Class Complexity 16.00
3030
Average Complexity per Method 1.26
@@ -39,9 +39,9 @@ Dependencies
3939
Attribute Accesses 28
4040
Non-Static 23 (82.14%)
4141
Static 5 (17.86%)
42-
Method Calls 9132
43-
Non-Static 5989 (65.58%)
44-
Static 3143 (34.42%)
42+
Method Calls 9142
43+
Non-Static 5994 (65.57%)
44+
Static 3148 (34.43%)
4545

4646
Structure
4747
Namespaces 74
@@ -52,14 +52,14 @@ Structure
5252
Concrete Classes 266 (98.52%)
5353
Final Classes 248 (93.23%)
5454
Non-Final Classes 18 (6.77%)
55-
Methods 1724
55+
Methods 1725
5656
Scope
57-
Non-Static Methods 1616 (93.74%)
57+
Non-Static Methods 1617 (93.74%)
5858
Static Methods 108 (6.26%)
5959
Visibility
60-
Public Methods 1036 (60.09%)
61-
Protected Methods 313 (18.16%)
62-
Private Methods 375 (21.75%)
60+
Public Methods 1037 (60.12%)
61+
Protected Methods 313 (18.14%)
62+
Private Methods 375 (21.74%)
6363
Functions 90
6464
Named Functions 2 (2.22%)
6565
Anonymous Functions 88 (97.78%)

src/Spinner/Core/Palette/A/ACharPalette.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ abstract class ACharPalette extends APalette implements ICharPalette
1818
*/
1919
protected function getEntries(?IPaletteMode $mode = null): Traversable
2020
{
21-
/** @var string $element */
21+
/** @var string|ICharFrame $element */
2222
foreach ($this->sequence() as $element) {
23+
if ($element instanceof ICharFrame) {
24+
yield $element;
25+
continue;
26+
}
2327
yield $this->createFrame($element);
2428
}
2529
}
2630

2731
/**
28-
* @return Traversable<string>
32+
* @return Traversable<string|ICharFrame>
2933
*/
3034
abstract protected function sequence(): Traversable;
3135

src/Spinner/Core/Palette/A/APalette.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public function __construct(
2020
) {
2121
}
2222

23+
// FIXME (2023-12-04 16:9) [Alec Rabbit]: extract functionality to PaletteTemplateFactory->create($palette)
2324
public function getTemplate(?IPaletteMode $mode = null): IPaletteTemplate
2425
{
2526
return new PaletteTemplate(

src/Spinner/Core/Palette/PaletteTemplate.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ public function getOptions(): IPaletteOptions
4040
return $this->options;
4141
}
4242

43+
/**
44+
* @param Traversable<IFrame> $entries
45+
* @return Traversable<IFrame>
46+
*/
4347
private function reversed(Traversable $entries): Traversable
4448
{
4549
$sequence = [];

tests/Spinner/Unit/Core/Palette/A/ACharPaletteTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace AlecRabbit\Tests\Spinner\Unit\Core\Palette\A;
66

7+
use AlecRabbit\Spinner\Core\CharFrame;
78
use AlecRabbit\Spinner\Core\Palette\Contract\ICharPalette;
89
use AlecRabbit\Spinner\Core\Palette\Contract\IPaletteOptions;
910
use AlecRabbit\Spinner\Core\Palette\PaletteTemplate;
@@ -85,4 +86,31 @@ public function canGetTemplateTwo(): void
8586

8687
self::assertSame(100, $template->getOptions()->getInterval());
8788
}
89+
90+
#[Test]
91+
public function canGetTemplateThree(): void
92+
{
93+
$charFrame = new CharFrame('22', 2);
94+
95+
$entries = new \ArrayObject(['a', $charFrame, 'b']);
96+
97+
$options = $this->getPaletteOptionsMock();
98+
99+
$palette = $this->getTesteeInstance(
100+
options: $options,
101+
entries: $entries,
102+
);
103+
104+
$template = $palette->getTemplate();
105+
106+
self::assertInstanceOf(PaletteTemplate::class, $template);
107+
108+
self::assertSame(100, $template->getOptions()->getInterval());
109+
110+
$templateEntries = iterator_to_array($template->getEntries());
111+
112+
self::assertEquals(new CharFrame('a', 1), $templateEntries[0]);
113+
self::assertEquals(new CharFrame('b', 1), $templateEntries[2]);
114+
self::assertSame($charFrame, $templateEntries[1]);
115+
}
88116
}

tests/Spinner/Unit/Core/Palette/A/Override/ACharPaletteOverride.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ public function __construct(
2121

2222
protected function sequence(): Traversable
2323
{
24-
foreach ($this->entries as $element) {
25-
yield $this->createFrame($element);
26-
}
24+
yield from $this->entries;
2725
}
2826

2927
protected function createFrame(string $element): ICharFrame

0 commit comments

Comments
 (0)