Skip to content

Commit 6fb1593

Browse files
committed
Improve code coverage
1 parent 141cd50 commit 6fb1593

File tree

3 files changed

+101
-8
lines changed

3 files changed

+101
-8
lines changed

src/Respimgcss/Infrastructure/SourceSizeList.php

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
namespace Jkphl\Respimgcss\Infrastructure;
3838

3939
use Jkphl\Respimgcss\Application\Model\SourceSize;
40+
use Jkphl\Respimgcss\Ports\InvalidArgumentException;
4041

4142
/**
4243
* Sizes list
@@ -46,20 +47,25 @@
4647
*/
4748
class SourceSizeList extends \ArrayObject
4849
{
49-
/**
50-
* Source sizes
51-
*
52-
* @var SourceSize[]
53-
*/
54-
protected $sourceSizes;
55-
5650
/**
5751
* Source size list constructor
5852
*
5953
* @param SourceSize[] $sourceSizes Source sizes
54+
*
55+
* @throws InvalidArgumentException If the source size is invalid
6056
*/
6157
public function __construct(array $sourceSizes)
6258
{
63-
$this->sourceSizes = $sourceSizes;
59+
// Run through all source sizes
60+
foreach ($sourceSizes as $sourceSize) {
61+
// If the source size is invalid
62+
if (!($sourceSize instanceof SourceSize)) {
63+
throw new InvalidArgumentException(
64+
InvalidArgumentException::INVALID_SOURCE_SIZE_STR,
65+
InvalidArgumentException::INVALID_SOURCE_SIZE
66+
);
67+
}
68+
}
69+
parent::__construct($sourceSizes);
6470
}
6571
}

src/Respimgcss/Ports/InvalidArgumentException.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,16 @@ class InvalidArgumentException extends \Jkphl\Respimgcss\Application\Exceptions\
6868
* @var int
6969
*/
7070
const INVALID_WORD_TOKEN_IN_SOURCE_SIZE_VALUE = 1522701212;
71+
/**
72+
* Invalid source size
73+
*
74+
* @var string
75+
*/
76+
const INVALID_SOURCE_SIZE_STR = 'Invalid source size';
77+
/**
78+
* Invalid source size
79+
*
80+
* @var int
81+
*/
82+
const INVALID_SOURCE_SIZE = 1523047851;
7183
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
/**
4+
* responsive-images-css
5+
*
6+
* @category Jkphl
7+
* @package Jkphl\Respimgcss
8+
* @subpackage Jkphl\Respimgcss\Tests\Infrastructure
9+
* @author Joschi Kuphal <joschi@kuphal.net> / @jkphl
10+
* @copyright Copyright © 2018 Joschi Kuphal <joschi@kuphal.net> / @jkphl
11+
* @license http://opensource.org/licenses/MIT The MIT License (MIT)
12+
*/
13+
14+
/***********************************************************************************
15+
* The MIT License (MIT)
16+
*
17+
* Copyright © 2018 Joschi Kuphal <joschi@kuphal.net> / @jkphl
18+
*
19+
* Permission is hereby granted, free of charge, to any person obtaining a copy of
20+
* this software and associated documentation files (the "Software"), to deal in
21+
* the Software without restriction, including without limitation the rights to
22+
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
23+
* the Software, and to permit persons to whom the Software is furnished to do so,
24+
* subject to the following conditions:
25+
*
26+
* The above copyright notice and this permission notice shall be included in all
27+
* copies or substantial portions of the Software.
28+
*
29+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
31+
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
32+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
33+
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
34+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35+
***********************************************************************************/
36+
37+
namespace Jkphl\Respimgcss\Tests\Infrastructure;
38+
39+
use Jkphl\Respimgcss\Application\Factory\SourceSizeFactory;
40+
use Jkphl\Respimgcss\Infrastructure\SourceSizeList;
41+
use Jkphl\Respimgcss\Infrastructure\ViewportCalculatorServiceFactory;
42+
use Jkphl\Respimgcss\Tests\AbstractTestBase;
43+
44+
/**
45+
* Source size list test
46+
*
47+
* @package Jkphl\Respimgcss
48+
* @subpackage Jkphl\Respimgcss\Tests\Infrastructure
49+
*/
50+
class SourceSizeListTest extends AbstractTestBase
51+
{
52+
/**
53+
* Test the source size list
54+
*/
55+
public function testSourceSizeList()
56+
{
57+
$sourceSizeFactory = new SourceSizeFactory(new ViewportCalculatorServiceFactory(), 16);
58+
$sourceSize = $sourceSizeFactory->createFromSourceSizeStr('(min-width: 100px) 100vw');
59+
$sourceSizeList = new SourceSizeList([$sourceSize]);
60+
$this->assertInstanceOf(SourceSizeList::class, $sourceSizeList);
61+
$this->assertEquals(1, count($sourceSizeList));
62+
$this->assertEquals($sourceSize, $sourceSizeList[0]);
63+
}
64+
65+
/**
66+
* Test the source size list with invalid source size
67+
*
68+
* @expectedException \Jkphl\Respimgcss\Ports\InvalidArgumentException
69+
* @expectedExceptionCode 1523047851
70+
*/
71+
public function testSourceSizeListInvalid()
72+
{
73+
new SourceSizeList(['test']);
74+
}
75+
}

0 commit comments

Comments
 (0)