mirror of
https://github.com/wiosna-dev/common-library.git
synced 2026-03-12 09:31:51 +01:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5022efb9a3 | ||
|
|
56b058ca1d | ||
|
|
eade6a25ad | ||
|
|
9f6af6b6a4 | ||
|
|
a021870ebd | ||
|
|
d88ead92fe | ||
|
|
5ebde80646 | ||
|
|
fe40d9caee | ||
|
|
ba6c185ed9 | ||
|
|
c175fcd126 | ||
|
|
2247000a8a | ||
|
|
924e492e11 | ||
|
|
ede9a182b4 | ||
|
|
fad0aa607a | ||
|
|
3a38c09ce2 | ||
|
|
07a04d86f0 | ||
|
|
0c7e27b884 | ||
|
|
421d336498 | ||
|
|
292c5e6d4f | ||
|
|
79c09a26a6 | ||
|
|
d46548d102 | ||
|
|
651c4f2259 | ||
|
|
8c3c85608a | ||
|
|
22c96f0a18 | ||
|
|
aa93cd8e25 | ||
|
|
4391baed3d | ||
|
|
b879dbd803 | ||
|
|
7233fdac52 | ||
|
|
ec5129ad6b |
48
.gitignore
vendored
48
.gitignore
vendored
@@ -1,5 +1,5 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# Environment-related parameters
|
||||
### Environment-related parameters
|
||||
# ------------------------------------------------------------------------------
|
||||
.env
|
||||
|
||||
@@ -51,42 +51,15 @@
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### Compiled source
|
||||
# ------------------------------------------------------------------------------
|
||||
*.com
|
||||
*.class
|
||||
*.dll
|
||||
*.exe
|
||||
*.o
|
||||
*.so
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### Shell scripts
|
||||
# ------------------------------------------------------------------------------
|
||||
/*.sh
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### JetBrains
|
||||
### JetBrains template
|
||||
# ------------------------------------------------------------------------------
|
||||
/.idea
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### NetBeans template
|
||||
# ------------------------------------------------------------------------------
|
||||
nbproject/private/
|
||||
nbbuild/
|
||||
dist/
|
||||
nbdist/
|
||||
nbactions.xml
|
||||
.nb-gradle/
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### OSX template
|
||||
### macOS template
|
||||
# ------------------------------------------------------------------------------
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
@@ -104,6 +77,7 @@ Icon
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
@@ -127,16 +101,23 @@ Temporary Items
|
||||
# Linux trash folder which might appear on any partition or disk
|
||||
.Trash-*
|
||||
|
||||
# .nfs files are created when an open file is removed but is still being accessed
|
||||
.nfs*
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
### Windows template
|
||||
# ------------------------------------------------------------------------------
|
||||
# Windows image file caches
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
@@ -144,6 +125,7 @@ $RECYCLE.BIN/
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
|
||||
27
CHANGELOG.md
27
CHANGELOG.md
@@ -2,6 +2,33 @@
|
||||
|
||||
Common and useful classes, methods, exceptions etc.
|
||||
|
||||
# 0.1.8
|
||||
|
||||
1. Size, e.g. of image
|
||||
|
||||
# 0.1.7
|
||||
|
||||
1. Collection > create trait (to make it more flexible)
|
||||
|
||||
# 0.1.6
|
||||
|
||||
1. Arrays > refactoring & more tests
|
||||
2. ValueObject > Human > represents a human
|
||||
3. Tests > use `Meritoo\Test\Common` namespace (instead of `Meritoo\Common\Test`)
|
||||
4. Tests > use @dataProvider
|
||||
|
||||
# 0.1.5
|
||||
|
||||
1. Tests > Date > one more test case
|
||||
2. Phing > update configuration
|
||||
3. Miscellaneous > variableDump() method > remove, because unnecessary
|
||||
4. Regex > createSlug() method > returns slug for given value
|
||||
5. Arrays > getNonEmptyValues() method > returns non-empty values, e.g. without "" (empty string), null or []
|
||||
6. Arrays > getNonEmptyValuesAsString() method > returns non-empty values concatenated by given separator
|
||||
7. ValueObject > Company > represents a company
|
||||
8. ValueObject > BankAccount > represents bank account
|
||||
9. ValueObject > Address > represents address of company, institution, user etc.
|
||||
|
||||
# 0.1.4
|
||||
|
||||
1. Phing > update configuration
|
||||
|
||||
@@ -20,6 +20,8 @@ composer require meritoo/common-library
|
||||
2. [Collection of elements](docs/Collection-of-elements.md)
|
||||
3. [Exceptions](docs/Static-methods.md)
|
||||
4. [Static methods](docs/Static-methods.md)
|
||||
1. [Arrays](docs/Static-methods/Arrays.md)
|
||||
2. [Regex](docs/Static-methods/Regex.md)
|
||||
5. [Value Objects](docs/Value-Objects.md)
|
||||
|
||||
# Development
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-json": "*",
|
||||
"ext-simplexml": "*",
|
||||
"php": ">=5.6",
|
||||
"ext-intl": "*",
|
||||
"ext-pcre": "*",
|
||||
@@ -32,7 +36,7 @@
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Meritoo\\Common\\Test\\": "tests/"
|
||||
"Meritoo\\Test\\Common\\": "tests/"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
|
||||
@@ -48,6 +48,8 @@ class MimeTypesTest extends BaseTestCase
|
||||
2. [Collection of elements](Collection-of-elements.md)
|
||||
3. [Exceptions](Exceptions.md)
|
||||
4. [Static methods](Static-methods.md)
|
||||
1. [Arrays](Static-methods/Arrays.md)
|
||||
2. [Regex](Static-methods/Regex.md)
|
||||
5. [Value Objects](Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../README.md)
|
||||
|
||||
@@ -46,6 +46,8 @@ var_dump($simpleCollection->has('dolor')); // bool(true)
|
||||
2. [**Collection of elements**](Collection-of-elements.md)
|
||||
3. [Exceptions](Exceptions.md)
|
||||
4. [Static methods](Static-methods.md)
|
||||
1. [Arrays](Static-methods/Arrays.md)
|
||||
2. [Regex](Static-methods/Regex.md)
|
||||
5. [Value Objects](Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../README.md)
|
||||
|
||||
@@ -57,6 +57,8 @@ class UnknownSimpleTypeException extends UnknownTypeException
|
||||
2. [Collection of elements](Collection-of-elements.md)
|
||||
3. [**Exceptions**](Exceptions.md)
|
||||
4. [Static methods](Static-methods.md)
|
||||
1. [Arrays](Static-methods/Arrays.md)
|
||||
2. [Regex](Static-methods/Regex.md)
|
||||
5. [Value Objects](Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../README.md)
|
||||
|
||||
@@ -19,6 +19,8 @@ var_dump($firstElement); // string(5) "lorem"
|
||||
2. [Collection of elements](Collection-of-elements.md)
|
||||
3. [Exceptions](Exceptions.md)
|
||||
4. [**Static methods**](Static-methods.md)
|
||||
1. [Arrays](Static-methods/Arrays.md)
|
||||
2. [Regex](Static-methods/Regex.md)
|
||||
5. [Value Objects](Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../README.md)
|
||||
|
||||
78
docs/Static-methods/Arrays.md
Normal file
78
docs/Static-methods/Arrays.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Meritoo Common Library
|
||||
|
||||
Common and useful classes, methods, exceptions etc.
|
||||
|
||||
# Arrays
|
||||
|
||||
> Useful methods related to arrays
|
||||
|
||||
Class: `Meritoo\Common\Utilities\Arrays`
|
||||
File: `src/Utilities/Arrays.php`
|
||||
|
||||
### getNonEmptyValues(array $values)
|
||||
|
||||
> Returns non-empty values, e.g. without "" (empty string), null or []
|
||||
|
||||
##### Arguments
|
||||
|
||||
- `array $values` - The values to filter
|
||||
|
||||
##### Example 1
|
||||
|
||||
- values: `[]` (no values)
|
||||
- result: `[]` (an empty array)
|
||||
|
||||
##### Example 2
|
||||
|
||||
- values: `[null, ""]` (all empty values)
|
||||
- result: `[]` (an empty array)
|
||||
|
||||
##### Example 3
|
||||
|
||||
- values: `["test 1", "", 123, null, 0]`
|
||||
- result: `["test 1", 123, 0]`
|
||||
|
||||
### getNonEmptyValuesAsString(array $values, $separator = ', ')
|
||||
|
||||
> Returns non-empty values concatenated by given separator
|
||||
|
||||
##### Arguments
|
||||
|
||||
- `array $values` - The values to filter
|
||||
- `[string $separator]` - (optional) Separator used to implode the values. Default: ", ".
|
||||
|
||||
##### Example 1
|
||||
|
||||
- values: `[]` (no values)
|
||||
- separator: default or any other string
|
||||
- result: `""` (an empty string)
|
||||
|
||||
##### Example 2
|
||||
|
||||
- values: `[null, ""]` (all empty values)
|
||||
- separator: default or any other string
|
||||
- result: `""` (an empty string)
|
||||
|
||||
##### Example 3
|
||||
|
||||
- values: `["test 1", "", 123, null, 0]`
|
||||
- separator: `", "` (default)
|
||||
- result: `"test 1, 123, 0"`
|
||||
|
||||
##### Example 4
|
||||
|
||||
- values: `["test 1", "", 123, null, 0]`
|
||||
- separator: `" | "`
|
||||
- result: `"test 1 | 123 | 0"`
|
||||
|
||||
# More
|
||||
|
||||
1. [Base test case (with common methods and data providers)](../Base-test-case.md)
|
||||
2. [Collection of elements](../Collection-of-elements.md)
|
||||
3. [Exceptions](../Exceptions.md)
|
||||
4. [Static methods](../Static-methods.md)
|
||||
1. [**Arrays**](Arrays.md)
|
||||
2. [Regex](Regex.md)
|
||||
5. [Value Objects](../Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../../README.md)
|
||||
45
docs/Static-methods/Regex.md
Normal file
45
docs/Static-methods/Regex.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Meritoo Common Library
|
||||
|
||||
Common and useful classes, methods, exceptions etc.
|
||||
|
||||
# Regex
|
||||
|
||||
> Useful methods related to regular expressions
|
||||
|
||||
Class: `Meritoo\Common\Utilities\Regex`
|
||||
File: `src/Utilities/Regex.php`
|
||||
|
||||
### createSlug($value)
|
||||
|
||||
> Returns slug for given value
|
||||
|
||||
##### Arguments
|
||||
|
||||
- `string $value` - Value that should be transformed to slug
|
||||
|
||||
##### Example 1
|
||||
|
||||
- value: non-scalar or `null`
|
||||
- result: `false`
|
||||
|
||||
##### Example 2
|
||||
|
||||
- value: `""` (an empty string)
|
||||
- result: `""` (an empty string)
|
||||
|
||||
##### Example 3
|
||||
|
||||
- value: `"Lorem ipsum. Dolor sit 12.34 amet."`
|
||||
- result: `"lorem-ipsum-dolor-sit-1234-amet"`
|
||||
|
||||
# More
|
||||
|
||||
1. [Base test case (with common methods and data providers)](../Base-test-case.md)
|
||||
2. [Collection of elements](../Collection-of-elements.md)
|
||||
3. [Exceptions](../Exceptions.md)
|
||||
4. [Static methods](../Static-methods.md)
|
||||
1. [Arrays](../Static-methods/Arrays.md)
|
||||
2. [**Regex**](Regex.md)
|
||||
5. [Value Objects](../Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../../README.md)
|
||||
@@ -4,7 +4,240 @@ Common and useful classes, methods, exceptions etc.
|
||||
|
||||
# Value Objects
|
||||
|
||||
Located in `Meritoo\Common\ValueObject` namespace.
|
||||
Located in `Meritoo\Common\ValueObject` namespace and in `src/ValueObject/` directory.
|
||||
|
||||
### Address
|
||||
|
||||
##### Namespace
|
||||
|
||||
`Meritoo\Common\ValueObject\Address`
|
||||
|
||||
##### Info
|
||||
|
||||
Represents address of company, institution, user etc. Contains properties:
|
||||
1. `$street` - the street
|
||||
2. `$buildingNumber` - the number of building
|
||||
3. `$flatNumber` - the number of flat
|
||||
4. `$zipCode` - the zip code
|
||||
5. `$city` - the city, location
|
||||
|
||||
##### New instance
|
||||
|
||||
New instance can be created using constructor
|
||||
|
||||
```php
|
||||
new Address('New York', '00123', '4th Avenue', '10', '200');
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has getters for each property, e.g. `getFlatNumber()` or `getZipCode()`, and 1 extra method:
|
||||
|
||||
```php
|
||||
getFullStreet()
|
||||
```
|
||||
|
||||
that returns name of street with related numbers (building & flat number).
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$address = new Address('New York', '00123', '4th Avenue', '10', '200');
|
||||
$fullStreet = $address->getFullStreet(); // "4th Avenue 10/200"
|
||||
```
|
||||
|
||||
##### Conversion to string (the `__toString()` method)
|
||||
|
||||
Instance of `Address` may be represented as string that contains all non-empty properties separated by `, `.
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$address = new Address('New York', '00123', '4th Avenue', '10', '200');
|
||||
$asString = (string)$address; // "4th Avenue 10/200, 00123, New York"
|
||||
```
|
||||
|
||||
### BankAccount
|
||||
|
||||
##### Namespace
|
||||
|
||||
`Meritoo\Common\ValueObject\BankAccount`
|
||||
|
||||
##### Info
|
||||
|
||||
Represents bank account. Contains properties:
|
||||
1. `$bankName` - name of bank
|
||||
2. `$accountNumber` - number of bank's account
|
||||
|
||||
##### New instance
|
||||
|
||||
New instance can be created using constructor
|
||||
|
||||
```php
|
||||
new BankAccount('Bank of America', '1234567890')
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has getters for each property `getBankName()` and `getAccountNumber()`.
|
||||
|
||||
##### Conversion to string (the `__toString()` method)
|
||||
|
||||
Instance of `BankAccount` may be represented as string that contains all non-empty properties separated by `, `.
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$bank = new BankAccount('Bank of America', '1234567890');
|
||||
$asString = (string)$bank; // "Bank of America, 1234567890"
|
||||
```
|
||||
|
||||
### Company
|
||||
|
||||
##### Namespace
|
||||
|
||||
`Meritoo\Common\ValueObject\Company`
|
||||
|
||||
##### Info
|
||||
|
||||
Represents a company. Contains properties:
|
||||
1. `$name` - name of company
|
||||
2. `$address` - address of company
|
||||
3. `$bankAccount` - bank account of company
|
||||
|
||||
##### New instance
|
||||
|
||||
New instance can be created using constructor:
|
||||
|
||||
```php
|
||||
new Company(
|
||||
'Test 1',
|
||||
new Address('New York', '00123', '4th Avenue', '10', '200'),
|
||||
new BankAccount('Bank 1', '12345')
|
||||
);
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has getters for each property `getName()`, `getAddress()` and `getBankAccount()`.
|
||||
|
||||
##### Conversion to string (the `__toString()` method)
|
||||
|
||||
Instance of `Company` may be represented as string that contains all non-empty properties separated by `, `.
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$company = new Company(
|
||||
'Test 1',
|
||||
new Address('New York', '00123', '4th Avenue', '10', '200'),
|
||||
new BankAccount('Bank 1', '12345')
|
||||
);
|
||||
|
||||
$asString = (string)$company; // "Test 1, 4th Avenue 10/200, 00123, New York, Bank 1, 12345"
|
||||
```
|
||||
|
||||
### Human
|
||||
|
||||
##### Namespace
|
||||
|
||||
`Meritoo\Common\ValueObject\Human`
|
||||
|
||||
##### Info
|
||||
|
||||
Represents human. Based on `\Meritoo\Common\Traits\ValueObject\HumanTrait` trait. Contains properties same as `HumanTrait` trait:
|
||||
1. `$firstName` - first name
|
||||
2. `$lastName` - last name
|
||||
3. `$email` - email address
|
||||
4. `$birthDate` - birth date
|
||||
|
||||
##### New instance
|
||||
|
||||
New instance can be created using constructor:
|
||||
|
||||
```php
|
||||
new Human('John', 'Scott', 'john@scott.com', new \DateTime('2001-01-01'));
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has getters for each property, e.g. `getFirstName()`, `getEmail()` etc.
|
||||
|
||||
##### Conversion to string (the `__toString()` method)
|
||||
|
||||
Instance of `Human` may be represented as string that contains first name, last name and email address (if provided).
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$human1 = new Human('John', 'Scott');
|
||||
$asString1 = (string)$human1; // "John Scott"
|
||||
|
||||
$human2 = new Human('John', 'Scott', 'john@scott.com', new \DateTime('2001-01-01'));
|
||||
$asString2 = (string)$human2; // "John Scott <john@scott.com>"
|
||||
```
|
||||
|
||||
### Size
|
||||
|
||||
##### Namespace
|
||||
|
||||
`Meritoo\Common\ValueObject\Size`
|
||||
|
||||
##### Info
|
||||
|
||||
Size, e.g. of image. Contains properties:
|
||||
1. `width` - the width
|
||||
2. `height` - the height
|
||||
3. `unit` - unit used when width or height should be returned with unit, default: `"px"`
|
||||
4. `separator` - separator used when converting to string, default: `" x "`
|
||||
|
||||
##### New instance
|
||||
|
||||
New instance can be created using static methods:
|
||||
|
||||
1. `fromArray()` - creates new instance from given array
|
||||
|
||||
```php
|
||||
// Using default "px" unit
|
||||
Size::fromArray([200, 100]);
|
||||
|
||||
// With custom "mm" unit
|
||||
Size::fromArray([200, 100], 'mm');
|
||||
```
|
||||
|
||||
2. `fromString()` - creates new instance from given string
|
||||
|
||||
```php
|
||||
// Using default "px" unit and default " x " separator
|
||||
Size::fromString('200 x 100');
|
||||
|
||||
// With custom "mm" unit and " X " separator
|
||||
Size::fromString('200 X 100', 'mm', ' X ');
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has:
|
||||
- getters and setters for `width` and `height` properties.
|
||||
- setter for `separator` property
|
||||
- `toString()` and `toArray()` methods that returns size represented as string and array
|
||||
|
||||
##### Conversion to string (using `__toString()` method)
|
||||
|
||||
Instance of `Size` may be represented as string that contains width and height separated by separator (default: `" x "`).
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$size = Size::fromArray([200, 100]);
|
||||
|
||||
// With default separator
|
||||
$asString1 = (string)$size; // "200 x 100"
|
||||
|
||||
// With custom separator
|
||||
$size->setSeparator('X');
|
||||
$asString2 = (string)$size; // "200X100"
|
||||
```
|
||||
|
||||
### Version
|
||||
|
||||
@@ -14,7 +247,7 @@ Located in `Meritoo\Common\ValueObject` namespace.
|
||||
|
||||
##### Info
|
||||
|
||||
Represents version of software. Contains 3 properties:
|
||||
Represents version of software. Contains properties:
|
||||
1. `$majorPart` - the "major" part of version
|
||||
2. `$minorPart` - the "minor" part of version
|
||||
3. `$patchPart` - the "patch" part of version
|
||||
@@ -42,12 +275,29 @@ New instance can be created using:
|
||||
Version::fromString('1.0.2');
|
||||
```
|
||||
|
||||
##### Methods
|
||||
|
||||
Has getters for each property: `getMajorPart()`, `getMinorPart()`, `getPatchPart()`.
|
||||
|
||||
##### Conversion to string (using `__toString()` method)
|
||||
|
||||
Instance of `Version` may be represented as string that contains all properties separated by `.` (`$majorPart`.`$minorPart`.`$patchPart`).
|
||||
|
||||
Example:
|
||||
|
||||
```php
|
||||
$version = new Version(1, 0, 2);
|
||||
$asString = (string)$version; // "1.0.2"
|
||||
```
|
||||
|
||||
# More
|
||||
|
||||
1. [Base test case (with common methods and data providers)](Base-test-case.md)
|
||||
2. [Collection of elements](Collection-of-elements.md)
|
||||
3. [Exceptions](Exceptions.md)
|
||||
4. [Static methods](Static-methods.md)
|
||||
1. [Arrays](Static-methods/Arrays.md)
|
||||
2. [Regex](Static-methods/Regex.md)
|
||||
5. [**Value Objects**](Value-Objects.md)
|
||||
|
||||
[‹ Back to `Readme`](../README.md)
|
||||
|
||||
@@ -7,7 +7,7 @@ EXPECTED_SIGNATURE="$(curl -L https://composer.github.io/installer.sig)"
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")"
|
||||
|
||||
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
|
||||
if [[ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]]
|
||||
then
|
||||
>&2 echo 'ERROR: Invalid installer signature'
|
||||
rm composer-setup.php
|
||||
@@ -17,4 +17,4 @@ fi
|
||||
php composer-setup.php --quiet
|
||||
RESULT=$?
|
||||
rm composer-setup.php
|
||||
exit $RESULT
|
||||
exit ${RESULT}
|
||||
|
||||
@@ -9,10 +9,9 @@
|
||||
namespace Meritoo\Common\Collection;
|
||||
|
||||
use ArrayAccess;
|
||||
use ArrayIterator;
|
||||
use Countable;
|
||||
use IteratorAggregate;
|
||||
use Meritoo\Common\Utilities\Arrays;
|
||||
use Meritoo\Common\Traits\CollectionTrait;
|
||||
|
||||
/**
|
||||
* Collection of elements.
|
||||
@@ -23,12 +22,7 @@ use Meritoo\Common\Utilities\Arrays;
|
||||
*/
|
||||
class Collection implements Countable, ArrayAccess, IteratorAggregate
|
||||
{
|
||||
/**
|
||||
* The elements of collection
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $elements;
|
||||
use CollectionTrait;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
@@ -39,246 +33,4 @@ class Collection implements Countable, ArrayAccess, IteratorAggregate
|
||||
{
|
||||
$this->elements = $elements;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface Countable
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
return count($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface ArrayAccess
|
||||
*/
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
return $this->exists($offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface ArrayAccess
|
||||
*/
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
if ($this->exists($offset)) {
|
||||
return $this->elements[$offset];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface ArrayAccess
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$this->elements[$offset] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface ArrayAccess
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
if ($this->exists($offset)) {
|
||||
unset($this->elements[$offset]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
* Required by interface IteratorAggregate
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
return new ArrayIterator($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds given element (at the end of collection)
|
||||
*
|
||||
* @param mixed $element The element to add
|
||||
* @param mixed $index (optional) Index / key of the element
|
||||
* @return $this
|
||||
*/
|
||||
public function add($element, $index = null)
|
||||
{
|
||||
if (null === $index || '' === $index) {
|
||||
$this->elements[] = $element;
|
||||
} else {
|
||||
$this->elements[$index] = $element;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds given elements (at the end of collection)
|
||||
*
|
||||
* @param array|Collection $elements The elements to add
|
||||
* @param bool|false $useIndexes (optional) If is set to true, indexes of given elements will be used in
|
||||
* this collection. Otherwise - not.
|
||||
* @return $this
|
||||
*/
|
||||
public function addMultiple($elements, $useIndexes = false)
|
||||
{
|
||||
if (!empty($elements)) {
|
||||
foreach ($elements as $index => $element) {
|
||||
if (!$useIndexes) {
|
||||
$index = null;
|
||||
}
|
||||
|
||||
$this->add($element, $index);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepends given element (adds given element at the beginning of collection)
|
||||
*
|
||||
* @param mixed $element The element to prepend
|
||||
* @return $this
|
||||
*/
|
||||
public function prepend($element)
|
||||
{
|
||||
array_unshift($this->elements, $element);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes given element
|
||||
*
|
||||
* @param mixed $element The element to remove
|
||||
* @return $this
|
||||
*/
|
||||
public function remove($element)
|
||||
{
|
||||
if ($this->count() > 0) {
|
||||
foreach ($this->elements as $index => $existing) {
|
||||
if ($element === $existing) {
|
||||
unset($this->elements[$index]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if collection is empty
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return empty($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given element is first in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function isFirst($element)
|
||||
{
|
||||
return reset($this->elements) === $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given element is last in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function isLast($element)
|
||||
{
|
||||
return end($this->elements) === $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if the collection has given element, iow. if given element exists in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function has($element)
|
||||
{
|
||||
$index = Arrays::getIndexOf($this->elements, $element);
|
||||
|
||||
return null !== $index && false !== $index;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns previous element for given element
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getPrevious($element)
|
||||
{
|
||||
return Arrays::getPreviousElement($this->elements, $element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns next element for given element
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getNext($element)
|
||||
{
|
||||
return Arrays::getNextElement($this->elements, $element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element in the collection
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return Arrays::getFirstElement($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element in the collection
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getLast()
|
||||
{
|
||||
return Arrays::getLastElement($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array representation of the collection
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
return $this->elements;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if element with given index/key exists
|
||||
*
|
||||
* @param string|int $index The index/key of element
|
||||
* @return bool
|
||||
*/
|
||||
private function exists($index)
|
||||
{
|
||||
return isset($this->elements[$index]) || array_key_exists($index, $this->elements);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,13 +28,13 @@ class DisabledMethodException extends Exception
|
||||
public static function create($disabledMethod, $alternativeMethod = '')
|
||||
{
|
||||
$template = 'Method %s() cannot be called, because is disabled.';
|
||||
$message = sprintf($template, $disabledMethod);
|
||||
|
||||
if (!empty($alternativeMethod)) {
|
||||
$template .= ' Use %s() instead.';
|
||||
$template = '%s Use %s() instead.';
|
||||
$message = sprintf($template, $message, $alternativeMethod);
|
||||
}
|
||||
|
||||
$message = sprintf($template, $disabledMethod, $alternativeMethod);
|
||||
|
||||
return new static($message);
|
||||
}
|
||||
}
|
||||
|
||||
33
src/Exception/ValueObject/InvalidSizeDimensionsException.php
Normal file
33
src/Exception/ValueObject/InvalidSizeDimensionsException.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Exception\ValueObject;
|
||||
|
||||
/**
|
||||
* An exception used while dimensions of size, passed to the instance of Size class, are invalid
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class InvalidSizeDimensionsException extends \Exception
|
||||
{
|
||||
/**
|
||||
* Creates exception
|
||||
*
|
||||
* @param int $width The width
|
||||
* @param int $height The height
|
||||
* @return InvalidSizeDimensionsException
|
||||
*/
|
||||
public static function create($width, $height)
|
||||
{
|
||||
$template = 'Dimensions of size should be positive, but they are not: %d, %d. Is there everything ok?';
|
||||
$message = sprintf($template, $width, $height);
|
||||
|
||||
return new static($message);
|
||||
}
|
||||
}
|
||||
67
src/Traits/Collection/ArrayAccessTrait.php
Normal file
67
src/Traits/Collection/ArrayAccessTrait.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits\Collection;
|
||||
|
||||
/**
|
||||
* Trait for the Collection required by ArrayAccess interface
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait ArrayAccessTrait
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
return $this->exists($offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
if ($this->exists($offset)) {
|
||||
return $this->elements[$offset];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$this->elements[$offset] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
if ($this->exists($offset)) {
|
||||
unset($this->elements[$offset]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if element with given index/key exists
|
||||
*
|
||||
* @param string|int $index The index/key of element
|
||||
* @return bool
|
||||
*/
|
||||
private function exists($index)
|
||||
{
|
||||
return isset($this->elements[$index]) || array_key_exists($index, $this->elements);
|
||||
}
|
||||
}
|
||||
26
src/Traits/Collection/CountableTrait.php
Normal file
26
src/Traits/Collection/CountableTrait.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits\Collection;
|
||||
|
||||
/**
|
||||
* Trait for the Collection required by Countable interface
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait CountableTrait
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
return count($this->elements);
|
||||
}
|
||||
}
|
||||
28
src/Traits/Collection/IteratorAggregateTrait.php
Normal file
28
src/Traits/Collection/IteratorAggregateTrait.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits\Collection;
|
||||
|
||||
use ArrayIterator;
|
||||
|
||||
/**
|
||||
* Trait for the Collection required by IteratorAggregate interface
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait IteratorAggregateTrait
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
return new ArrayIterator($this->elements);
|
||||
}
|
||||
}
|
||||
215
src/Traits/Collection/MainTrait.php
Normal file
215
src/Traits/Collection/MainTrait.php
Normal file
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits\Collection;
|
||||
|
||||
use Meritoo\Common\Collection\Collection;
|
||||
use Meritoo\Common\Utilities\Arrays;
|
||||
|
||||
/**
|
||||
* Main trait for the Collection
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait MainTrait
|
||||
{
|
||||
/**
|
||||
* The elements of collection
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $elements;
|
||||
|
||||
/**
|
||||
* Adds given element (at the end of collection)
|
||||
*
|
||||
* @param mixed $element The element to add
|
||||
* @param mixed $index (optional) Index / key of the element
|
||||
* @return $this
|
||||
*/
|
||||
public function add($element, $index = null)
|
||||
{
|
||||
if (null === $index || '' === $index) {
|
||||
$this->elements[] = $element;
|
||||
} else {
|
||||
$this->elements[$index] = $element;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds given elements (at the end of collection)
|
||||
*
|
||||
* @param array|Collection $elements The elements to add
|
||||
* @param bool|false $useIndexes (optional) If is set to true, indexes of given elements will be used in
|
||||
* this collection. Otherwise - not.
|
||||
* @return $this
|
||||
*/
|
||||
public function addMultiple($elements, $useIndexes = false)
|
||||
{
|
||||
if (!empty($elements)) {
|
||||
foreach ($elements as $index => $element) {
|
||||
if ($useIndexes) {
|
||||
$this->add($element, $index);
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->add($element);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepends given element (adds given element at the beginning of collection)
|
||||
*
|
||||
* @param mixed $element The element to prepend
|
||||
* @return $this
|
||||
*/
|
||||
public function prepend($element)
|
||||
{
|
||||
array_unshift($this->elements, $element);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes given element
|
||||
*
|
||||
* @param mixed $element The element to remove
|
||||
* @return $this
|
||||
*/
|
||||
public function remove($element)
|
||||
{
|
||||
if ($this->count() > 0) {
|
||||
foreach ($this->elements as $index => $existing) {
|
||||
if ($element === $existing) {
|
||||
unset($this->elements[$index]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if collection is empty
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isEmpty()
|
||||
{
|
||||
return empty($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given element is first in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function isFirst($element)
|
||||
{
|
||||
return reset($this->elements) === $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given element is last in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function isLast($element)
|
||||
{
|
||||
return end($this->elements) === $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if the collection has given element, iow. if given element exists in the collection
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return bool
|
||||
*/
|
||||
public function has($element)
|
||||
{
|
||||
$index = Arrays::getIndexOf($this->elements, $element);
|
||||
|
||||
return null !== $index && false !== $index;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns previous element for given element
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getPrevious($element)
|
||||
{
|
||||
return Arrays::getPreviousElement($this->elements, $element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns next element for given element
|
||||
*
|
||||
* @param mixed $element The element to verify
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getNext($element)
|
||||
{
|
||||
return Arrays::getNextElement($this->elements, $element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element in the collection
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFirst()
|
||||
{
|
||||
return Arrays::getFirstElement($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element in the collection
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getLast()
|
||||
{
|
||||
return Arrays::getLastElement($this->elements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns element with given index
|
||||
*
|
||||
* @param mixed $index Index / key of the element
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getByIndex($index)
|
||||
{
|
||||
if (isset($this->elements[$index])) {
|
||||
return $this->elements[$index];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
return $this->elements;
|
||||
}
|
||||
}
|
||||
28
src/Traits/CollectionTrait.php
Normal file
28
src/Traits/CollectionTrait.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits;
|
||||
|
||||
use Meritoo\Common\Traits\Collection\ArrayAccessTrait;
|
||||
use Meritoo\Common\Traits\Collection\CountableTrait;
|
||||
use Meritoo\Common\Traits\Collection\IteratorAggregateTrait;
|
||||
use Meritoo\Common\Traits\Collection\MainTrait;
|
||||
|
||||
/**
|
||||
* Trait for the Collection
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait CollectionTrait
|
||||
{
|
||||
use MainTrait;
|
||||
use CountableTrait;
|
||||
use ArrayAccessTrait;
|
||||
use IteratorAggregateTrait;
|
||||
}
|
||||
137
src/Traits/ValueObject/HumanTrait.php
Normal file
137
src/Traits/ValueObject/HumanTrait.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Traits\ValueObject;
|
||||
|
||||
/**
|
||||
* Methods and properties related to human
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
trait HumanTrait
|
||||
{
|
||||
/**
|
||||
* First name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $firstName;
|
||||
|
||||
/**
|
||||
* Last name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $lastName;
|
||||
|
||||
/**
|
||||
* Email address
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $email;
|
||||
|
||||
/**
|
||||
* Birth date
|
||||
*
|
||||
* @var \DateTime
|
||||
*/
|
||||
protected $birthDate;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param string $firstName First name
|
||||
* @param string $lastName Last name
|
||||
* @param string $email (optional) Email address
|
||||
* @param \DateTime $birthDate (optional) Birth date
|
||||
*/
|
||||
public function __construct($firstName, $lastName, $email = null, \DateTime $birthDate = null)
|
||||
{
|
||||
$this->firstName = $firstName;
|
||||
$this->lastName = $lastName;
|
||||
$this->email = $email;
|
||||
$this->birthDate = $birthDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$template = '%s';
|
||||
|
||||
if ('' !== $this->email && null !== $this->email) {
|
||||
$template .= ' <%s>';
|
||||
}
|
||||
|
||||
return sprintf($template, $this->getFullName(), $this->email);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFirstName()
|
||||
{
|
||||
return $this->firstName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns last name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getLastName()
|
||||
{
|
||||
return $this->lastName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns email address
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getEmail()
|
||||
{
|
||||
return $this->email;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns birth date
|
||||
*
|
||||
* @return \DateTime|null
|
||||
*/
|
||||
public function getBirthDate()
|
||||
{
|
||||
return $this->birthDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full name
|
||||
*
|
||||
* @param bool $firstNameFirst (optional) If is set to true, first name is the first part. Otherwise - last name.
|
||||
* @return string
|
||||
*/
|
||||
public function getFullName($firstNameFirst = true)
|
||||
{
|
||||
$beginning = $this->lastName;
|
||||
$finish = $this->firstName;
|
||||
|
||||
if ($firstNameFirst) {
|
||||
$beginning = $this->firstName;
|
||||
$finish = $this->lastName;
|
||||
}
|
||||
|
||||
return trim(sprintf('%s %s', $beginning, $finish));
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -140,7 +140,12 @@ class Date
|
||||
$dateStart = new DateTime();
|
||||
$dateEnd = new DateTime();
|
||||
|
||||
if (DatePeriod::LAST_YEAR === $period || DatePeriod::NEXT_YEAR === $period) {
|
||||
$yearPeriod = [
|
||||
DatePeriod::LAST_YEAR,
|
||||
DatePeriod::NEXT_YEAR,
|
||||
];
|
||||
|
||||
if (in_array($period, $yearPeriod, true)) {
|
||||
$yearDifference = 1;
|
||||
|
||||
if (DatePeriod::LAST_YEAR === $period) {
|
||||
@@ -167,7 +172,7 @@ class Date
|
||||
return null;
|
||||
}
|
||||
|
||||
$dateStart->setTime(0, 0, 0);
|
||||
$dateStart->setTime(0, 0);
|
||||
$dateEnd->setTime(23, 59, 59);
|
||||
|
||||
return new DatePeriod($dateStart, $dateEnd);
|
||||
@@ -217,7 +222,8 @@ class Date
|
||||
|
||||
return $dateTime
|
||||
->setTime($hour, $minute, $second)
|
||||
->format($format);
|
||||
->format($format)
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -349,7 +355,7 @@ class Date
|
||||
*
|
||||
* @param string|DateTime $dateStart The start date
|
||||
* @param string|DateTime $dateEnd The end date
|
||||
* @param int $differenceUnit (optional) Unit of date difference. One of this class
|
||||
* @param string $differenceUnit (optional) Unit of date difference. One of this class
|
||||
* DATE_DIFFERENCE_UNIT_* constants. If is set to null all units are
|
||||
* returned in the array.
|
||||
* @return array|int
|
||||
|
||||
@@ -52,7 +52,7 @@ class Locale
|
||||
LC_MESSAGES,
|
||||
];
|
||||
|
||||
if (empty($languageCode) || !in_array($category, $availableCategories)) {
|
||||
if (empty($languageCode) || !in_array($category, $availableCategories, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -733,7 +733,7 @@ class MimeTypes
|
||||
*/
|
||||
public static function getExtension($mimeType)
|
||||
{
|
||||
if (is_string($mimeType) && in_array($mimeType, self::$mimeTypes)) {
|
||||
if (is_string($mimeType) && in_array($mimeType, self::$mimeTypes, true)) {
|
||||
$data = Arrays::setKeysAsValues(self::$mimeTypes, false);
|
||||
|
||||
return $data[$mimeType];
|
||||
@@ -806,7 +806,7 @@ class MimeTypes
|
||||
*/
|
||||
public static function isImage($mimeType)
|
||||
{
|
||||
if (in_array($mimeType, self::$mimeTypes)) {
|
||||
if (in_array($mimeType, self::$mimeTypes, true)) {
|
||||
return (bool)preg_match('|^image/.+$|', $mimeType);
|
||||
}
|
||||
|
||||
|
||||
@@ -296,34 +296,6 @@ class Miscellaneous
|
||||
return $effect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays variable content as preformatted text (fixed-width font and preserves both spaces and line breaks)
|
||||
*
|
||||
* If xdebug php module is loaded, displays variable using var_dump(), otherwise <pre>var_dump()</pre>.
|
||||
* You can pass as many variables as you wish.
|
||||
*
|
||||
* Pass each variable as argument of this function. Amount unlimited. Variables are loaded using the
|
||||
* func_get_args() function (@see http://pl1.php.net/manual/en/function.func-get-args.php).
|
||||
*/
|
||||
public static function variableDump()
|
||||
{
|
||||
$xdebugLoaded = self::isPhpModuleLoaded('xdebug');
|
||||
|
||||
if (!$xdebugLoaded) {
|
||||
echo '<pre>';
|
||||
}
|
||||
|
||||
$arguments = func_get_args();
|
||||
|
||||
foreach ($arguments as $argument) {
|
||||
var_dump($argument);
|
||||
}
|
||||
|
||||
if (!$xdebugLoaded) {
|
||||
echo '</pre>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given PHP module is compiled and loaded
|
||||
*
|
||||
@@ -453,6 +425,14 @@ class Miscellaneous
|
||||
*/
|
||||
public static function replace($subject, $search, $replacement, $quoteStrings = false)
|
||||
{
|
||||
/*
|
||||
* Unknown source or item to find or replacement is an empty array?
|
||||
* Nothing to do
|
||||
*/
|
||||
if (empty($subject) || empty($search) || [] === $replacement) {
|
||||
return $subject;
|
||||
}
|
||||
|
||||
$effect = $subject;
|
||||
|
||||
$searchIsString = is_string($search);
|
||||
@@ -472,37 +452,47 @@ class Miscellaneous
|
||||
$bothAreStrings = $searchIsString && $replacementIsString;
|
||||
$bothAreArrays = $searchIsArray && $replacementIsArray;
|
||||
|
||||
/*
|
||||
* First step: replace strings, simple operation with strings
|
||||
*/
|
||||
if ($searchIsString && $replacementIsString) {
|
||||
if ($quoteStrings) {
|
||||
if ($quoteStrings) {
|
||||
if ($replacementIsString) {
|
||||
$replacement = '\'' . $replacement . '\'';
|
||||
}
|
||||
} elseif ($replacementIsArray) {
|
||||
foreach ($replacement as &$item) {
|
||||
if (is_string($item)) {
|
||||
$item = '\'' . $item . '\'';
|
||||
}
|
||||
}
|
||||
|
||||
unset($item);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 1st step: replace strings, simple operation with strings
|
||||
*/
|
||||
if ($bothAreStrings) {
|
||||
$effect = str_replace($search, $replacement, $subject);
|
||||
}
|
||||
|
||||
/*
|
||||
* Second step: replace with regular expressions.
|
||||
* 2nd step: replace with regular expressions.
|
||||
* Attention. Searched and replacement value should be the same type: strings or arrays.
|
||||
*/
|
||||
if ($effect === $subject && ($bothAreStrings || $bothAreArrays)) {
|
||||
if ($quoteStrings && $replacementIsString) {
|
||||
$replacement = '\'' . $replacement . '\'';
|
||||
}
|
||||
|
||||
/*
|
||||
* I have to avoid string that contains spaces only, e.g. " ".
|
||||
* It's required to avoid bug: preg_replace(): Empty regular expression.
|
||||
*/
|
||||
if ($searchIsArray || ($searchIsString && !empty(trim($search)))) {
|
||||
$effect = preg_replace($search, $replacement, $subject);
|
||||
$replaced = @preg_replace($search, $replacement, $subject);
|
||||
|
||||
if (null !== $replaced && [] !== $replaced) {
|
||||
$effect = $replaced;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Third step: complex replace of the replacement defined as an array.
|
||||
* 3rd step: complex replace of the replacement defined as an array.
|
||||
* It may be useful when you want to search for a one string and replace the string with multiple values.
|
||||
*/
|
||||
if ($effect === $subject && $searchIsString && $replacementIsArray) {
|
||||
@@ -528,16 +518,6 @@ class Miscellaneous
|
||||
$exploded = explode($search, $subSubject);
|
||||
$explodedCount = count($exploded);
|
||||
|
||||
if ($quoteStrings) {
|
||||
foreach ($replacement as &$item) {
|
||||
if (is_string($item)) {
|
||||
$item = '\'' . $item . '\'';
|
||||
}
|
||||
}
|
||||
|
||||
unset($item);
|
||||
}
|
||||
|
||||
foreach ($exploded as $key => $item) {
|
||||
$subEffect .= $item;
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace Meritoo\Common\Utilities;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Doctrine\ORM\OptimisticLockException;
|
||||
use Doctrine\ORM\Query\Expr\Join;
|
||||
use Doctrine\ORM\Query\Parameter;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
@@ -91,7 +90,7 @@ class QueryBuilderUtility
|
||||
* @param array $criteria (optional) The criteria used in WHERE clause. It may simple array with pairs
|
||||
* key-value or an array of arrays where second element of sub-array is the
|
||||
* comparison operator. Example below.
|
||||
* @param string $alias (optional) Alias used in the query
|
||||
* @param string|null $alias (optional) Alias used in the query
|
||||
* @return QueryBuilder
|
||||
*
|
||||
* Example of the $criteria argument:
|
||||
@@ -107,7 +106,7 @@ class QueryBuilderUtility
|
||||
* 'position' => 5,
|
||||
* ]
|
||||
*/
|
||||
public static function setCriteria(QueryBuilder $queryBuilder, array $criteria = [], $alias = '')
|
||||
public static function setCriteria(QueryBuilder $queryBuilder, array $criteria = [], $alias = null)
|
||||
{
|
||||
/*
|
||||
* No criteria used in WHERE clause?
|
||||
@@ -121,7 +120,7 @@ class QueryBuilderUtility
|
||||
* No alias provided?
|
||||
* Let's use root alias
|
||||
*/
|
||||
if (empty($alias)) {
|
||||
if (null === $alias || '' === $alias) {
|
||||
$alias = self::getRootAlias($queryBuilder);
|
||||
}
|
||||
|
||||
@@ -129,7 +128,7 @@ class QueryBuilderUtility
|
||||
$compareOperator = '=';
|
||||
|
||||
if (is_array($value) && !empty($value)) {
|
||||
if (2 == count($value)) {
|
||||
if (2 === count($value)) {
|
||||
$compareOperator = $value[1];
|
||||
}
|
||||
|
||||
@@ -158,7 +157,6 @@ class QueryBuilderUtility
|
||||
* @param array|ArrayCollection $entities The entities to delete
|
||||
* @param bool $flushDeleted (optional) If is set to true, flushes the deleted objects (default
|
||||
* behaviour). Otherwise - not.
|
||||
* @throws OptimisticLockException
|
||||
* @return bool
|
||||
*/
|
||||
public static function deleteEntities(EntityManager $entityManager, $entities, $flushDeleted = true)
|
||||
|
||||
@@ -12,7 +12,7 @@ use Meritoo\Common\Exception\Regex\IncorrectColorHexLengthException;
|
||||
use Meritoo\Common\Exception\Regex\InvalidColorHexValueException;
|
||||
|
||||
/**
|
||||
* Useful regular expressions methods
|
||||
* Useful methods related to regular expressions
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
@@ -40,6 +40,18 @@ class Regex
|
||||
'color' => '/^[a-f0-9]{6}$/i',
|
||||
'bundleName' => '/^(([A-Z]{1}[a-z0-9]+)((?2))*)(Bundle)$/',
|
||||
'binaryValue' => '/[^\x20-\x7E\t\r\n]/',
|
||||
|
||||
/*
|
||||
* Matches:
|
||||
* - "200x125"
|
||||
* - "200 x 125"
|
||||
* - "200 x 125"
|
||||
* - " 200 x 125"
|
||||
* - " 200 x 125 "
|
||||
*
|
||||
* Contains "%s" that should be replaced with separator used to split width and height.
|
||||
*/
|
||||
'size' => '/^[\ ]*(\d+)[\ ]*%s[\ ]*(\d+)[\ ]*$/',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -102,7 +114,7 @@ class Regex
|
||||
* Tax ID is not 10 characters length OR is not numeric?
|
||||
* Nothing to do
|
||||
*/
|
||||
if (10 !== strlen($taxId) || !is_numeric($taxId)) {
|
||||
if (!is_numeric($taxId) || 10 !== strlen($taxId)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -125,14 +137,11 @@ class Regex
|
||||
}
|
||||
|
||||
/*
|
||||
* Last number it's not a remainder from dividing per 11?
|
||||
* Nothing to do
|
||||
* Last number it's a remainder from dividing per 11?
|
||||
* Tax ID is valid
|
||||
*/
|
||||
if ($sum % 11 == $taxId[9]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return $sum % 11 === (int)$taxId[9];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -248,7 +257,7 @@ class Regex
|
||||
|
||||
if ($itsRegularExpression) {
|
||||
$matchesCount = preg_match($filterExpression, $value);
|
||||
$remove = 0 == $matchesCount;
|
||||
$remove = 0 === $matchesCount;
|
||||
} else {
|
||||
if (is_string($value)) {
|
||||
$value = sprintf('\'%s\'', $value);
|
||||
@@ -306,11 +315,9 @@ class Regex
|
||||
|
||||
if ($mustAllMatch) {
|
||||
$effect = $effect && $matched;
|
||||
} else {
|
||||
if ($matched) {
|
||||
$effect = $matched;
|
||||
break;
|
||||
}
|
||||
} elseif ($matched) {
|
||||
$effect = $matched;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,7 +508,7 @@ class Regex
|
||||
public static function startsWith($string, $beginning)
|
||||
{
|
||||
if (!empty($string) && !empty($beginning)) {
|
||||
if (1 == strlen($beginning) && !self::isLetterOrDigit($beginning)) {
|
||||
if (1 === strlen($beginning) && !self::isLetterOrDigit($beginning)) {
|
||||
$beginning = '\\' . $beginning;
|
||||
}
|
||||
|
||||
@@ -522,7 +529,7 @@ class Regex
|
||||
*/
|
||||
public static function endsWith($string, $ending)
|
||||
{
|
||||
if (1 == strlen($ending) && !self::isLetterOrDigit($ending)) {
|
||||
if (1 === strlen($ending) && !self::isLetterOrDigit($ending)) {
|
||||
$ending = '\\' . $ending;
|
||||
}
|
||||
|
||||
@@ -607,7 +614,7 @@ class Regex
|
||||
*/
|
||||
public static function contains($haystack, $needle)
|
||||
{
|
||||
if (1 == strlen($needle) && !self::isLetterOrDigit($needle)) {
|
||||
if (1 === strlen($needle) && !self::isLetterOrDigit($needle)) {
|
||||
$needle = '\\' . $needle;
|
||||
}
|
||||
|
||||
@@ -694,14 +701,14 @@ class Regex
|
||||
*/
|
||||
public static function isValidNip($nip)
|
||||
{
|
||||
$nip = preg_replace('/[^0-9]/', '', $nip);
|
||||
$nip = preg_replace('/[\D]/', '', $nip);
|
||||
|
||||
$invalidNips = [
|
||||
'1234567890',
|
||||
'0000000000',
|
||||
];
|
||||
|
||||
if (!preg_match('/^[0-9]{10}$/', $nip) || in_array($nip, $invalidNips)) {
|
||||
if (!preg_match('/^[\d]{10}$/', $nip) || in_array($nip, $invalidNips, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -723,9 +730,9 @@ class Regex
|
||||
}
|
||||
|
||||
$modulo = $sum % 11;
|
||||
$numberControl = (10 == $modulo) ? 0 : $modulo;
|
||||
$numberControl = (10 === $modulo) ? 0 : $modulo;
|
||||
|
||||
return $numberControl == $nip[9];
|
||||
return $numberControl === (int)$nip[9];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -924,4 +931,87 @@ class Regex
|
||||
|
||||
return (bool)preg_match($pattern, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns pattern used to validate / verify size
|
||||
*
|
||||
* @param string $separator (optional) Separator used to split width and height. Default: " x ".
|
||||
* @return string
|
||||
*/
|
||||
public static function getSizePattern($separator = ' x ')
|
||||
{
|
||||
$escapeMe = [
|
||||
'/',
|
||||
'|',
|
||||
'.',
|
||||
'(',
|
||||
')',
|
||||
'[',
|
||||
']',
|
||||
];
|
||||
|
||||
$cleanSeparator = trim($separator);
|
||||
|
||||
if (in_array($cleanSeparator, $escapeMe, true)) {
|
||||
// I have to escape special character of regular expression that may be used as separator
|
||||
$separator = str_replace($cleanSeparator, '\\' . $cleanSeparator, $separator);
|
||||
}
|
||||
|
||||
return sprintf(self::$patterns['size'], $separator);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information if given value is a size value
|
||||
*
|
||||
* @param string $value Value to verify
|
||||
* @param string $separator (optional) Separator used to split width and height. Default: " x ".
|
||||
* @return bool
|
||||
*/
|
||||
public static function isSizeValue($value, $separator = ' x ')
|
||||
{
|
||||
/*
|
||||
* Not a string?
|
||||
* Nothing to do
|
||||
*/
|
||||
if (!is_string($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$pattern = self::getSizePattern($separator);
|
||||
|
||||
return (bool)preg_match($pattern, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns slug for given value
|
||||
*
|
||||
* @param string $value Value that should be transformed to slug
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function createSlug($value)
|
||||
{
|
||||
/*
|
||||
* Not a scalar value?
|
||||
* Nothing to do
|
||||
*/
|
||||
if (!is_scalar($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* It's an empty string?
|
||||
* Nothing to do
|
||||
*/
|
||||
if ('' === $value) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$id = 'Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower();';
|
||||
$transliterator = \Transliterator::create($id);
|
||||
|
||||
$cleanValue = trim($value);
|
||||
$result = $transliterator->transliterate($cleanValue);
|
||||
|
||||
return preg_replace('/[-\s]+/', '-', $result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ class Uri
|
||||
/*
|
||||
* Oops, cannot match protocol
|
||||
*/
|
||||
if (0 == $matchCount) {
|
||||
if (0 === $matchCount) {
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class Xml
|
||||
$query = $path->query('/*/*');
|
||||
$nodesCount = $query->length;
|
||||
|
||||
if (0 == $nodesCount) {
|
||||
if (0 === $nodesCount) {
|
||||
return $element1;
|
||||
}
|
||||
|
||||
|
||||
159
src/ValueObject/Address.php
Normal file
159
src/ValueObject/Address.php
Normal file
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Utilities\Arrays;
|
||||
|
||||
/**
|
||||
* Address
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class Address
|
||||
{
|
||||
/**
|
||||
* The street
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $street;
|
||||
|
||||
/**
|
||||
* The number of building
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $buildingNumber;
|
||||
|
||||
/**
|
||||
* The number of flat
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $flatNumber;
|
||||
|
||||
/**
|
||||
* The zip code
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $zipCode;
|
||||
|
||||
/**
|
||||
* The city, location
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $city;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param string $city City, location
|
||||
* @param string $zipCode The zip code
|
||||
* @param string $street The street
|
||||
* @param string $buildingNumber The number of building
|
||||
* @param string $flatNumber (optional) The number of flat. Default: "".
|
||||
*/
|
||||
public function __construct($city, $zipCode, $street, $buildingNumber, $flatNumber = '')
|
||||
{
|
||||
$this->city = $city;
|
||||
$this->zipCode = $zipCode;
|
||||
$this->street = $street;
|
||||
$this->buildingNumber = $buildingNumber;
|
||||
$this->flatNumber = $flatNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$values = [
|
||||
$this->getFullStreet(),
|
||||
$this->zipCode,
|
||||
$this->city,
|
||||
];
|
||||
|
||||
return Arrays::getNonEmptyValuesAsString($values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns street
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getStreet()
|
||||
{
|
||||
return $this->street;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns full street (name + building & flat number)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFullStreet()
|
||||
{
|
||||
if (empty($this->street)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$numbers = $this->buildingNumber;
|
||||
|
||||
if (!empty($numbers) && !empty($this->flatNumber)) {
|
||||
$numbers = sprintf('%s/%s', $numbers, $this->flatNumber);
|
||||
}
|
||||
|
||||
return sprintf('%s %s', $this->street, $numbers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns number of building
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBuildingNumber()
|
||||
{
|
||||
return $this->buildingNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns number of flat
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFlatNumber()
|
||||
{
|
||||
return $this->flatNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns zip code
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getZipCode()
|
||||
{
|
||||
return $this->zipCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns city, location
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getCity()
|
||||
{
|
||||
return $this->city;
|
||||
}
|
||||
}
|
||||
81
src/ValueObject/BankAccount.php
Normal file
81
src/ValueObject/BankAccount.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Utilities\Arrays;
|
||||
|
||||
/**
|
||||
* Bank account
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class BankAccount
|
||||
{
|
||||
/**
|
||||
* Name of bank
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $bankName;
|
||||
|
||||
/**
|
||||
* Number of bank's account
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $accountNumber;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param string $bankName Name of bank
|
||||
* @param string $accountNumber Number of bank's account
|
||||
*/
|
||||
public function __construct($bankName, $accountNumber)
|
||||
{
|
||||
$this->bankName = $bankName;
|
||||
$this->accountNumber = $accountNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$values = [
|
||||
$this->bankName,
|
||||
$this->accountNumber,
|
||||
];
|
||||
|
||||
return Arrays::getNonEmptyValuesAsString($values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns name of bank
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBankName()
|
||||
{
|
||||
return $this->bankName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns number of bank's account
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getAccountNumber()
|
||||
{
|
||||
return $this->accountNumber;
|
||||
}
|
||||
}
|
||||
101
src/ValueObject/Company.php
Normal file
101
src/ValueObject/Company.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Utilities\Arrays;
|
||||
|
||||
/**
|
||||
* Company
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class Company
|
||||
{
|
||||
/**
|
||||
* Name of company
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* Address of company
|
||||
*
|
||||
* @var Address
|
||||
*/
|
||||
protected $address;
|
||||
|
||||
/**
|
||||
* Bank account of company
|
||||
*
|
||||
* @var BankAccount
|
||||
*/
|
||||
protected $bankAccount;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param string $name Name of company
|
||||
* @param Address $address Address of company
|
||||
* @param BankAccount|null $bankAccount (optional) Bank account of company
|
||||
*/
|
||||
public function __construct($name, Address $address, BankAccount $bankAccount = null)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->address = $address;
|
||||
$this->bankAccount = $bankAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$values = [
|
||||
$this->name,
|
||||
$this->address,
|
||||
$this->bankAccount,
|
||||
];
|
||||
|
||||
return Arrays::getNonEmptyValuesAsString($values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns name of company
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns address of company
|
||||
*
|
||||
* @return Address
|
||||
*/
|
||||
public function getAddress()
|
||||
{
|
||||
return $this->address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns bank account of company
|
||||
*
|
||||
* @return BankAccount|null
|
||||
*/
|
||||
public function getBankAccount()
|
||||
{
|
||||
return $this->bankAccount;
|
||||
}
|
||||
}
|
||||
22
src/ValueObject/Human.php
Normal file
22
src/ValueObject/Human.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Traits\ValueObject\HumanTrait;
|
||||
|
||||
/**
|
||||
* Human
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class Human
|
||||
{
|
||||
use HumanTrait;
|
||||
}
|
||||
245
src/ValueObject/Size.php
Normal file
245
src/ValueObject/Size.php
Normal file
@@ -0,0 +1,245 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Exception\ValueObject\InvalidSizeDimensionsException;
|
||||
use Meritoo\Common\Utilities\Regex;
|
||||
|
||||
/**
|
||||
* Size, e.g. of image
|
||||
*
|
||||
* Instance of this class may be created using static methods:
|
||||
* - fromString()
|
||||
* - fromArray()
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class Size
|
||||
{
|
||||
/**
|
||||
* The width
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $width;
|
||||
|
||||
/**
|
||||
* The height
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $height;
|
||||
|
||||
/**
|
||||
* Unit used when width or height should be returned with unit
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $unit;
|
||||
|
||||
/**
|
||||
* Separator used when converting to string
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $separator = ' x ';
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param int $width (optional) The width
|
||||
* @param int $height (optional) The height
|
||||
* @param string $unit (optional) Unit used when width or height should be returned with unit. Default: "px".
|
||||
*
|
||||
* @throws InvalidSizeDimensionsException
|
||||
*/
|
||||
private function __construct($width = null, $height = null, $unit = 'px')
|
||||
{
|
||||
$width = (int)$width;
|
||||
$height = (int)$height;
|
||||
|
||||
if ($width < 0 || $height < 0) {
|
||||
throw new InvalidSizeDimensionsException($width, $height);
|
||||
}
|
||||
|
||||
$this
|
||||
->setWidth($width)
|
||||
->setHeight($height)
|
||||
;
|
||||
|
||||
$this->unit = $unit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns string representation of instance of this class in human readable format, e.g. '200 x 100'
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets separator used when converting to string
|
||||
*
|
||||
* @param string $separator The separator
|
||||
* @return Size
|
||||
*/
|
||||
public function setSeparator($separator)
|
||||
{
|
||||
$this->separator = $separator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width
|
||||
*
|
||||
* @param bool $withUnit (optional) If is set to true, width is returned with unit ("px"). Otherwise - without
|
||||
* (default behaviour).
|
||||
* @return int|string
|
||||
*/
|
||||
public function getWidth($withUnit = false)
|
||||
{
|
||||
if ($withUnit) {
|
||||
return sprintf('%d %s', $this->width, $this->unit);
|
||||
}
|
||||
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the width
|
||||
*
|
||||
* @param int|string $width The width
|
||||
* @return Size
|
||||
*/
|
||||
public function setWidth($width)
|
||||
{
|
||||
$this->width = (int)$width;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the height
|
||||
*
|
||||
* @param bool $withUnit (optional) If is set to true, height is returned with unit ("px"). Otherwise - without
|
||||
* (default behaviour).
|
||||
* @return int|string
|
||||
*/
|
||||
public function getHeight($withUnit = false)
|
||||
{
|
||||
if ($withUnit) {
|
||||
return sprintf('%d %s', $this->height, $this->unit);
|
||||
}
|
||||
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the height
|
||||
*
|
||||
* @param int $height The height
|
||||
* @return Size
|
||||
*/
|
||||
public function setHeight($height)
|
||||
{
|
||||
$this->height = (int)$height;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns string representation of instance of this class, e.g. '200 x 100' or '200x100'
|
||||
*
|
||||
* @param bool $withUnit (optional) If is set to true, width and height are returned with unit ("px"). Otherwise
|
||||
* - without (default behaviour).
|
||||
* @return string
|
||||
*/
|
||||
public function toString($withUnit = false)
|
||||
{
|
||||
$width = $this->getWidth($withUnit);
|
||||
$height = $this->getHeight($withUnit);
|
||||
|
||||
return sprintf('%s%s%s', $width, $this->separator, $height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns instance of this class as an array.
|
||||
* Values of the array are width and height, eg. [800, 600] or ['800px', '600px'].
|
||||
*
|
||||
* @param bool $withUnits (optional) If is set to true, width and height are returned with unit ("px"). Otherwise
|
||||
* - without (default behaviour).
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($withUnits = false)
|
||||
{
|
||||
return [
|
||||
$this->getWidth($withUnits),
|
||||
$this->getHeight($withUnits),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new instance from given string
|
||||
*
|
||||
* @param string $size The size represented as string (width and height separated by given separator)
|
||||
* @param string $unit (optional) Unit used when width or height should be returned with unit. Default: "px".
|
||||
* @param string $separator (optional) Separator used to split width and height. Default: " x ".
|
||||
* @return Size|null
|
||||
*/
|
||||
public static function fromString($size, $unit = 'px', $separator = ' x ')
|
||||
{
|
||||
if (is_string($size)) {
|
||||
$matches = [];
|
||||
$pattern = Regex::getSizePattern($separator);
|
||||
|
||||
if ((bool)preg_match($pattern, $size, $matches)) {
|
||||
$width = (int)$matches[1];
|
||||
$height = (int)$matches[2];
|
||||
$sizeObject = new self($width, $height, $unit);
|
||||
|
||||
return $sizeObject->setSeparator($separator);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new instance from given array
|
||||
*
|
||||
* The array should contain 2 elements: width and height.
|
||||
* Examples: ['800', '600'], [800, 600].
|
||||
*
|
||||
* @param array $array The size represented as array
|
||||
* @param string $unit (optional) Unit used when width or height should be returned with unit. Default: "px".
|
||||
* @return Size|null
|
||||
*/
|
||||
public static function fromArray(array $array, $unit = 'px')
|
||||
{
|
||||
// Requirements for given array:
|
||||
// - indexes "0" and "1"
|
||||
// - should contains exactly 2 elements
|
||||
if (
|
||||
array_key_exists(0, $array)
|
||||
&& array_key_exists(1, $array)
|
||||
&& 2 === count($array)
|
||||
) {
|
||||
list($width, $height) = $array;
|
||||
|
||||
return new self($width, $height, $unit);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ class Version
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $majorPart;
|
||||
protected $majorPart;
|
||||
|
||||
/**
|
||||
* The "minor" part.
|
||||
@@ -30,7 +30,7 @@ class Version
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $minorPart;
|
||||
protected $minorPart;
|
||||
|
||||
/**
|
||||
* The "patch" part.
|
||||
@@ -38,7 +38,7 @@ class Version
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $patchPart;
|
||||
protected $patchPart;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
@@ -88,7 +88,7 @@ class Version
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns string representation of instance of this class
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Collection;
|
||||
namespace Meritoo\Test\Common\Collection;
|
||||
|
||||
use ArrayIterator;
|
||||
use Generator;
|
||||
@@ -45,12 +45,12 @@ class CollectionTest extends BaseTestCase
|
||||
|
||||
public function testEmptyCollection()
|
||||
{
|
||||
static::assertEquals(0, $this->emptyCollection->count());
|
||||
static::assertSame(0, $this->emptyCollection->count());
|
||||
static::assertCount(0, $this->emptyCollection);
|
||||
static::assertEmpty($this->emptyCollection);
|
||||
|
||||
static::assertTrue($this->emptyCollection->isEmpty());
|
||||
static::assertEquals([], $this->emptyCollection->toArray());
|
||||
static::assertSame([], $this->emptyCollection->toArray());
|
||||
static::assertEmpty($this->emptyCollection->toArray());
|
||||
|
||||
static::assertNull($this->emptyCollection->getFirst());
|
||||
@@ -61,23 +61,23 @@ class CollectionTest extends BaseTestCase
|
||||
|
||||
public function testNotEmptyCollection()
|
||||
{
|
||||
static::assertEquals(4, $this->simpleCollection->count());
|
||||
static::assertSame(4, $this->simpleCollection->count());
|
||||
static::assertCount(4, $this->simpleCollection);
|
||||
static::assertNotEmpty($this->simpleCollection);
|
||||
|
||||
static::assertFalse($this->simpleCollection->isEmpty());
|
||||
static::assertEquals($this->simpleElements, $this->simpleCollection->toArray());
|
||||
static::assertSame($this->simpleElements, $this->simpleCollection->toArray());
|
||||
static::assertNotEmpty($this->simpleCollection->toArray());
|
||||
|
||||
static::assertEquals('lorem', $this->simpleCollection->getFirst());
|
||||
static::assertEquals('sit', $this->simpleCollection->getLast());
|
||||
static::assertEquals('dolor', $this->simpleCollection[123]);
|
||||
static::assertSame('lorem', $this->simpleCollection->getFirst());
|
||||
static::assertSame('sit', $this->simpleCollection->getLast());
|
||||
static::assertSame('dolor', $this->simpleCollection[123]);
|
||||
}
|
||||
|
||||
public function testCount()
|
||||
{
|
||||
static::assertEquals(0, $this->emptyCollection->count());
|
||||
static::assertEquals(4, $this->simpleCollection->count());
|
||||
static::assertSame(0, $this->emptyCollection->count());
|
||||
static::assertSame(4, $this->simpleCollection->count());
|
||||
}
|
||||
|
||||
public function testOffsetExists()
|
||||
@@ -94,8 +94,8 @@ class CollectionTest extends BaseTestCase
|
||||
static::assertNull($this->emptyCollection['abc']);
|
||||
static::assertNull($this->simpleCollection['abc']);
|
||||
|
||||
static::assertEquals('lorem', $this->simpleCollection[0]);
|
||||
static::assertEquals('sit', $this->simpleCollection[345]);
|
||||
static::assertSame('lorem', $this->simpleCollection[0]);
|
||||
static::assertSame('sit', $this->simpleCollection[345]);
|
||||
}
|
||||
|
||||
public function testOffsetSet()
|
||||
@@ -104,10 +104,10 @@ class CollectionTest extends BaseTestCase
|
||||
$this->simpleCollection['test2'] = 5678;
|
||||
|
||||
static::assertTrue($this->emptyCollection->has(1234));
|
||||
static::assertEquals(1234, $this->emptyCollection['test1']);
|
||||
static::assertSame(1234, $this->emptyCollection['test1']);
|
||||
|
||||
static::assertTrue($this->simpleCollection->has(5678));
|
||||
static::assertEquals(5678, $this->simpleCollection['test2']);
|
||||
static::assertSame(5678, $this->simpleCollection['test2']);
|
||||
}
|
||||
|
||||
public function testOffsetUnset()
|
||||
@@ -115,14 +115,14 @@ class CollectionTest extends BaseTestCase
|
||||
unset($this->simpleCollection[0]);
|
||||
|
||||
static::assertFalse($this->simpleCollection->has('lorem'));
|
||||
static::assertEquals('ipsum', $this->simpleCollection[1]);
|
||||
static::assertEquals(3, $this->simpleCollection->count());
|
||||
static::assertSame('ipsum', $this->simpleCollection[1]);
|
||||
static::assertSame(3, $this->simpleCollection->count());
|
||||
|
||||
unset($this->simpleCollection[123]);
|
||||
|
||||
static::assertFalse($this->simpleCollection->has('dolor'));
|
||||
static::assertEquals('ipsum', $this->simpleCollection[1]);
|
||||
static::assertEquals(2, $this->simpleCollection->count());
|
||||
static::assertSame('ipsum', $this->simpleCollection[1]);
|
||||
static::assertSame(2, $this->simpleCollection->count());
|
||||
}
|
||||
|
||||
public function testGetIterator()
|
||||
@@ -143,8 +143,8 @@ class CollectionTest extends BaseTestCase
|
||||
$collection->add($element);
|
||||
|
||||
static::assertTrue($collection->has($element));
|
||||
static::assertEquals($expectedCount, $collection->count());
|
||||
static::assertEquals($element, $collection[$expectedIndex]);
|
||||
static::assertSame($expectedCount, $collection->count());
|
||||
static::assertSame($element, $collection[$expectedIndex]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,15 +161,15 @@ class CollectionTest extends BaseTestCase
|
||||
$collection->add($element, $index);
|
||||
|
||||
static::assertTrue($collection->has($element));
|
||||
static::assertEquals($expectedCount, $collection->count());
|
||||
static::assertEquals($element, $collection[$expectedIndex]);
|
||||
static::assertSame($expectedCount, $collection->count());
|
||||
static::assertSame($element, $collection[$expectedIndex]);
|
||||
}
|
||||
|
||||
public function testAddMultipleUsingEmptyArray()
|
||||
{
|
||||
$this->emptyCollection->addMultiple([]);
|
||||
|
||||
static::assertEquals(0, $this->emptyCollection->count());
|
||||
static::assertSame(0, $this->emptyCollection->count());
|
||||
static::assertTrue($this->emptyCollection->isEmpty());
|
||||
}
|
||||
|
||||
@@ -185,12 +185,12 @@ class CollectionTest extends BaseTestCase
|
||||
$this->emptyCollection->addMultiple($elements);
|
||||
|
||||
static::assertFalse($this->emptyCollection->isEmpty());
|
||||
static::assertEquals(4, $this->emptyCollection->count());
|
||||
static::assertSame(4, $this->emptyCollection->count());
|
||||
|
||||
static::assertEquals('test1', $this->emptyCollection[0]);
|
||||
static::assertEquals('test2', $this->emptyCollection[1]);
|
||||
static::assertEquals('test3', $this->emptyCollection[2]);
|
||||
static::assertEquals('test4', $this->emptyCollection[3]);
|
||||
static::assertSame('test1', $this->emptyCollection[0]);
|
||||
static::assertSame('test2', $this->emptyCollection[1]);
|
||||
static::assertSame('test3', $this->emptyCollection[2]);
|
||||
static::assertSame('test4', $this->emptyCollection[3]);
|
||||
}
|
||||
|
||||
public function testAddMultipleUsingIndexes()
|
||||
@@ -205,12 +205,12 @@ class CollectionTest extends BaseTestCase
|
||||
$this->emptyCollection->addMultiple($elements, true);
|
||||
|
||||
static::assertFalse($this->emptyCollection->isEmpty());
|
||||
static::assertEquals(4, $this->emptyCollection->count());
|
||||
static::assertSame(4, $this->emptyCollection->count());
|
||||
|
||||
static::assertEquals('test1', $this->emptyCollection[0]);
|
||||
static::assertEquals('test2', $this->emptyCollection[1]);
|
||||
static::assertEquals('test3', $this->emptyCollection[1234]);
|
||||
static::assertEquals('test4', $this->emptyCollection[5678]);
|
||||
static::assertSame('test1', $this->emptyCollection[0]);
|
||||
static::assertSame('test2', $this->emptyCollection[1]);
|
||||
static::assertSame('test3', $this->emptyCollection[1234]);
|
||||
static::assertSame('test4', $this->emptyCollection[5678]);
|
||||
}
|
||||
|
||||
public function testPrepend()
|
||||
@@ -218,14 +218,14 @@ class CollectionTest extends BaseTestCase
|
||||
$this->emptyCollection->prepend('lorem-ipsum');
|
||||
|
||||
static::assertFalse($this->emptyCollection->isEmpty());
|
||||
static::assertEquals(1, $this->emptyCollection->count());
|
||||
static::assertEquals('lorem-ipsum', $this->emptyCollection[0]);
|
||||
static::assertSame(1, $this->emptyCollection->count());
|
||||
static::assertSame('lorem-ipsum', $this->emptyCollection[0]);
|
||||
|
||||
$this->simpleCollection->prepend('lorem-ipsum');
|
||||
|
||||
static::assertFalse($this->simpleCollection->isEmpty());
|
||||
static::assertEquals(5, $this->simpleCollection->count());
|
||||
static::assertEquals('lorem-ipsum', $this->simpleCollection[0]);
|
||||
static::assertSame(5, $this->simpleCollection->count());
|
||||
static::assertSame('lorem-ipsum', $this->simpleCollection[0]);
|
||||
}
|
||||
|
||||
public function testRemoveNotExistingElement()
|
||||
@@ -233,24 +233,24 @@ class CollectionTest extends BaseTestCase
|
||||
$this->emptyCollection->remove('abc');
|
||||
|
||||
static::assertTrue($this->emptyCollection->isEmpty());
|
||||
static::assertEquals(0, $this->emptyCollection->count());
|
||||
static::assertSame(0, $this->emptyCollection->count());
|
||||
|
||||
$this->simpleCollection->remove('abc');
|
||||
|
||||
static::assertFalse($this->simpleCollection->isEmpty());
|
||||
static::assertEquals(4, $this->simpleCollection->count());
|
||||
static::assertSame(4, $this->simpleCollection->count());
|
||||
}
|
||||
|
||||
public function testRemove()
|
||||
{
|
||||
static::assertFalse($this->simpleCollection->isEmpty());
|
||||
static::assertEquals(4, $this->simpleCollection->count());
|
||||
static::assertEquals('ipsum', $this->simpleCollection[1]);
|
||||
static::assertSame(4, $this->simpleCollection->count());
|
||||
static::assertSame('ipsum', $this->simpleCollection[1]);
|
||||
|
||||
$this->simpleCollection->remove('ipsum');
|
||||
|
||||
static::assertFalse($this->simpleCollection->isEmpty());
|
||||
static::assertEquals(3, $this->simpleCollection->count());
|
||||
static::assertSame(3, $this->simpleCollection->count());
|
||||
static::assertNull($this->simpleCollection[1]);
|
||||
}
|
||||
|
||||
@@ -290,8 +290,8 @@ class CollectionTest extends BaseTestCase
|
||||
static::assertNull($this->simpleCollection->getPrevious('abc'));
|
||||
static::assertNull($this->simpleCollection->getPrevious('lorem'));
|
||||
|
||||
static::assertEquals('lorem', $this->simpleCollection->getPrevious('ipsum'));
|
||||
static::assertEquals('dolor', $this->simpleCollection->getPrevious('sit'));
|
||||
static::assertSame('lorem', $this->simpleCollection->getPrevious('ipsum'));
|
||||
static::assertSame('dolor', $this->simpleCollection->getPrevious('sit'));
|
||||
}
|
||||
|
||||
public function testGetNext()
|
||||
@@ -300,26 +300,26 @@ class CollectionTest extends BaseTestCase
|
||||
static::assertNull($this->simpleCollection->getNext('abc'));
|
||||
static::assertNull($this->simpleCollection->getNext('sit'));
|
||||
|
||||
static::assertEquals('dolor', $this->simpleCollection->getNext('ipsum'));
|
||||
static::assertEquals('sit', $this->simpleCollection->getNext('dolor'));
|
||||
static::assertSame('dolor', $this->simpleCollection->getNext('ipsum'));
|
||||
static::assertSame('sit', $this->simpleCollection->getNext('dolor'));
|
||||
}
|
||||
|
||||
public function testGetFirst()
|
||||
{
|
||||
static::assertNull($this->emptyCollection->getFirst());
|
||||
static::assertEquals('lorem', $this->simpleCollection->getFirst());
|
||||
static::assertSame('lorem', $this->simpleCollection->getFirst());
|
||||
}
|
||||
|
||||
public function testGetLast()
|
||||
{
|
||||
static::assertNull($this->emptyCollection->getLast());
|
||||
static::assertEquals('sit', $this->simpleCollection->getLast());
|
||||
static::assertSame('sit', $this->simpleCollection->getLast());
|
||||
}
|
||||
|
||||
public function testToArray()
|
||||
{
|
||||
static::assertEquals([], $this->emptyCollection->toArray());
|
||||
static::assertEquals($this->simpleElements, $this->simpleCollection->toArray());
|
||||
static::assertSame([], $this->emptyCollection->toArray());
|
||||
static::assertSame($this->simpleElements, $this->simpleCollection->toArray());
|
||||
}
|
||||
|
||||
public function testExistsVisibilityAndArguments()
|
||||
@@ -327,6 +327,19 @@ class CollectionTest extends BaseTestCase
|
||||
static::assertMethodVisibilityAndArguments(Collection::class, 'exists', OopVisibilityType::IS_PRIVATE, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param Collection $collection Collection to search for element with given index
|
||||
* @param mixed $index Index / key of the element
|
||||
* @param mixed $expected Expected element with given index
|
||||
*
|
||||
* @dataProvider provideElementGetByIndex
|
||||
*/
|
||||
public function testGetByIndex($description, Collection $collection, $index, $expected)
|
||||
{
|
||||
static::assertEquals($expected, $collection->getByIndex($index), $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides element to add to collection
|
||||
*
|
||||
@@ -408,6 +421,73 @@ class CollectionTest extends BaseTestCase
|
||||
];
|
||||
}
|
||||
|
||||
public function provideElementGetByIndex()
|
||||
{
|
||||
yield[
|
||||
'An empty collection and empty index',
|
||||
new Collection(),
|
||||
'',
|
||||
null,
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty collection and non-empty index',
|
||||
new Collection(),
|
||||
'test',
|
||||
null,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Non-empty collection and not existing index',
|
||||
new Collection([
|
||||
'lorem' => 'ipsum',
|
||||
'dolor' => 'sit',
|
||||
]),
|
||||
'test',
|
||||
null,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Collection with existing index',
|
||||
new Collection([
|
||||
'lorem' => 'ipsum',
|
||||
'dolor' => 'sit',
|
||||
]),
|
||||
'lorem',
|
||||
'ipsum',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Collection with existing index (collection of arrays)',
|
||||
new Collection([
|
||||
[
|
||||
'lorem',
|
||||
'ipsum',
|
||||
],
|
||||
[
|
||||
'dolor',
|
||||
'sit',
|
||||
],
|
||||
]),
|
||||
0,
|
||||
[
|
||||
'lorem',
|
||||
'ipsum',
|
||||
],
|
||||
];
|
||||
|
||||
yield[
|
||||
'Collection with existing index (collection of objects)',
|
||||
new Collection([
|
||||
'x' => new \DateTime(),
|
||||
'y' => new \DateTime('2001-01-01'),
|
||||
'z' => new \DateTime('yesterday'),
|
||||
]),
|
||||
'y',
|
||||
new \DateTime('2001-01-01'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Base;
|
||||
namespace Meritoo\Test\Common\Exception\Base;
|
||||
|
||||
use Meritoo\Common\Exception\Base\UnknownTypeException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
|
||||
74
tests/Exception/Bundle/IncorrectBundleNameExceptionTest.php
Normal file
74
tests/Exception/Bundle/IncorrectBundleNameExceptionTest.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\Exception\Bundle;
|
||||
|
||||
use Meritoo\Common\Exception\Bundle\IncorrectBundleNameException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
|
||||
/**
|
||||
* Test case of an exception used while name of bundle is incorrect
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class IncorrectBundleNameExceptionTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
IncorrectBundleNameException::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
3
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string $bundleName Incorrect name of bundle
|
||||
* @param string $expectedMessage Expected exception's message
|
||||
*
|
||||
* @dataProvider provideBundleNameAndMessage
|
||||
*/
|
||||
public function testCreate($description, $bundleName, $expectedMessage)
|
||||
{
|
||||
$exception = IncorrectBundleNameException::create($bundleName);
|
||||
static::assertSame($expectedMessage, $exception->getMessage(), $description);
|
||||
}
|
||||
|
||||
public function provideBundleNameAndMessage()
|
||||
{
|
||||
$template = 'Name of bundle \'%s\' is incorrect. It should start with big letter and end with "Bundle". Is'
|
||||
. ' there everything ok?';
|
||||
|
||||
yield[
|
||||
'An empty string as name of bundle',
|
||||
'',
|
||||
sprintf($template, ''),
|
||||
];
|
||||
|
||||
yield[
|
||||
'Null as name of bundle',
|
||||
null,
|
||||
sprintf($template, ''),
|
||||
];
|
||||
|
||||
yield[
|
||||
'String with spaces as name of bundle',
|
||||
'This is test',
|
||||
sprintf($template, 'This is test'),
|
||||
];
|
||||
|
||||
yield[
|
||||
'String without spaces as name of bundle',
|
||||
'ThisIsTest',
|
||||
sprintf($template, 'ThisIsTest'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Date;
|
||||
namespace Meritoo\Test\Common\Exception\Date;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Type\UnknownDatePartTypeException;
|
||||
@@ -37,7 +37,7 @@ class UnknownDatePartTypeExceptionTest extends BaseTestCase
|
||||
public function testMessage($unknownDatePart, $value, $expectedMessage)
|
||||
{
|
||||
$exception = UnknownDatePartTypeException::createException($unknownDatePart, $value);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\File;
|
||||
namespace Meritoo\Test\Common\Exception\File;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\File\EmptyFileException;
|
||||
@@ -35,7 +35,7 @@ class EmptyFileExceptionTest extends BaseTestCase
|
||||
public function testMessage($emptyFilePath, $expectedMessage)
|
||||
{
|
||||
$exception = EmptyFileException::create($emptyFilePath);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\File;
|
||||
namespace Meritoo\Test\Common\Exception\File;
|
||||
|
||||
use Meritoo\Common\Exception\File\EmptyFilePathException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
@@ -28,6 +28,6 @@ class EmptyFilePathExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage()
|
||||
{
|
||||
$exception = EmptyFilePathException::create();
|
||||
static::assertEquals('Path of the file is empty. Did you provide path of proper file?', $exception->getMessage());
|
||||
static::assertSame('Path of the file is empty. Did you provide path of proper file?', $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\File;
|
||||
namespace Meritoo\Test\Common\Exception\File;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\File\NotExistingFileException;
|
||||
@@ -35,7 +35,7 @@ class NotExistingFileExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($notExistingFilePath, $expectedMessage)
|
||||
{
|
||||
$exception = NotExistingFileException::create($notExistingFilePath);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Method;
|
||||
namespace Meritoo\Test\Common\Exception\Method;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Method\DisabledMethodException;
|
||||
@@ -37,7 +37,7 @@ class DisabledMethodExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($disabledMethod, $alternativeMethod, $expectedMessage)
|
||||
{
|
||||
$exception = DisabledMethodException::create($disabledMethod, $alternativeMethod);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Reflection;
|
||||
namespace Meritoo\Test\Common\Exception\Reflection;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Reflection\CannotResolveClassNameException;
|
||||
@@ -38,7 +38,7 @@ class CannotResolveClassNameExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($source, $forClass, $expectedMessage)
|
||||
{
|
||||
$exception = CannotResolveClassNameException::create($source, $forClass);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Reflection;
|
||||
namespace Meritoo\Test\Common\Exception\Reflection;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Reflection\MissingChildClassesException;
|
||||
@@ -36,7 +36,7 @@ class MissingChildClassesExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($parentClass, $expectedMessage)
|
||||
{
|
||||
$exception = MissingChildClassesException::create($parentClass);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\Exception\Reflection;
|
||||
|
||||
use Meritoo\Common\Exception\Reflection\NotExistingPropertyException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
|
||||
/**
|
||||
* Class NotExistingPropertyExceptionTest
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class NotExistingPropertyExceptionTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
NotExistingPropertyException::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
3
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param mixed $object Object that should contains given property
|
||||
* @param string $property Name of the property
|
||||
* @param string $expectedMessage Expected exception's message
|
||||
*
|
||||
* @dataProvider provideObjectPropertyAndMessage
|
||||
*/
|
||||
public function testCreate($description, $object, $property, $expectedMessage)
|
||||
{
|
||||
$exception = NotExistingPropertyException::create($object, $property);
|
||||
static::assertSame($expectedMessage, $exception->getMessage(), $description);
|
||||
}
|
||||
|
||||
public function provideObjectPropertyAndMessage()
|
||||
{
|
||||
$template = 'Property \'%s\' does not exist in instance of class \'%s\'. Did you use proper name of property?';
|
||||
|
||||
yield[
|
||||
'An empty string as name of property',
|
||||
new \stdClass(),
|
||||
'',
|
||||
sprintf($template, '', get_class(new \stdClass())),
|
||||
];
|
||||
|
||||
yield[
|
||||
'Null as name of property',
|
||||
new \stdClass(),
|
||||
null,
|
||||
sprintf($template, '', get_class(new \stdClass())),
|
||||
];
|
||||
|
||||
yield[
|
||||
'String with spaces as name of property',
|
||||
new \stdClass(),
|
||||
'This is test',
|
||||
sprintf($template, 'This is test', get_class(new \stdClass())),
|
||||
];
|
||||
|
||||
yield[
|
||||
'String without spaces as name of property',
|
||||
new \stdClass(),
|
||||
'ThisIsTest',
|
||||
sprintf($template, 'ThisIsTest', get_class(new \stdClass())),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Reflection;
|
||||
namespace Meritoo\Test\Common\Exception\Reflection;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Reflection\TooManyChildClassesException;
|
||||
@@ -37,7 +37,7 @@ class TooManyChildClassesExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($parentClass, array $childClasses, $expectedMessage)
|
||||
{
|
||||
$exception = TooManyChildClassesException::create($parentClass, $childClasses);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Regex;
|
||||
namespace Meritoo\Test\Common\Exception\Regex;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Regex\IncorrectColorHexLengthException;
|
||||
@@ -35,7 +35,7 @@ class IncorrectColorHexLengthExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($color, $expectedMessage)
|
||||
{
|
||||
$exception = IncorrectColorHexLengthException::create($color);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Regex;
|
||||
namespace Meritoo\Test\Common\Exception\Regex;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Regex\InvalidColorHexValueException;
|
||||
@@ -35,7 +35,7 @@ class InvalidColorHexValueExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($color, $expectedMessage)
|
||||
{
|
||||
$exception = InvalidColorHexValueException::create($color);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Regex;
|
||||
namespace Meritoo\Test\Common\Exception\Regex;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Regex\InvalidHtmlAttributesException;
|
||||
@@ -35,7 +35,7 @@ class InvalidHtmlAttributesExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($htmlAttributes, $expectedMessage)
|
||||
{
|
||||
$exception = InvalidHtmlAttributesException::create($htmlAttributes);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Regex;
|
||||
namespace Meritoo\Test\Common\Exception\Regex;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Regex\InvalidUrlException;
|
||||
@@ -35,7 +35,7 @@ class InvalidUrlExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($url, $expectedMessage)
|
||||
{
|
||||
$exception = InvalidUrlException::create($url);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Exception\Type;
|
||||
namespace Meritoo\Test\Common\Exception\Type;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Type\UnknownOopVisibilityTypeException;
|
||||
@@ -36,7 +36,7 @@ class UnknownOopVisibilityTypeExceptionTest extends BaseTestCase
|
||||
public function testConstructorMessage($unknownType, $expectedMessage)
|
||||
{
|
||||
$exception = UnknownOopVisibilityTypeException::createException($unknownType);
|
||||
static::assertEquals($expectedMessage, $exception->getMessage());
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\Exception\ValueObject;
|
||||
|
||||
use Meritoo\Common\Exception\ValueObject\InvalidSizeDimensionsException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
|
||||
/**
|
||||
* Test case of an exception used while dimensions of size, passed to the instance of Size class, are invalid
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class InvalidSizeDimensionsExceptionTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructorVisibilityAndArguments()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
InvalidSizeDimensionsException::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
3
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $width The width
|
||||
* @param int $height The height
|
||||
* @param string $expectedMessage Expected exception's message
|
||||
*
|
||||
* @dataProvider provideWidthAndHeight
|
||||
*/
|
||||
public function testCreate($width, $height, $expectedMessage)
|
||||
{
|
||||
$exception = InvalidSizeDimensionsException::create($width, $height);
|
||||
static::assertSame($expectedMessage, $exception->getMessage());
|
||||
}
|
||||
|
||||
public function provideWidthAndHeight()
|
||||
{
|
||||
$template = 'Dimensions of size should be positive, but they are not: %d, %d. Is there everything ok?';
|
||||
|
||||
yield[
|
||||
0,
|
||||
0,
|
||||
sprintf($template, 0, 0),
|
||||
];
|
||||
|
||||
yield[
|
||||
-1,
|
||||
-1,
|
||||
sprintf($template, -1, -1),
|
||||
];
|
||||
|
||||
yield[
|
||||
200,
|
||||
100,
|
||||
sprintf($template, 200, 100),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Test\Base;
|
||||
namespace Meritoo\Test\Common\Test\Base;
|
||||
|
||||
use DateTime;
|
||||
use Generator;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Type\Base;
|
||||
namespace Meritoo\Test\Common\Type\Base;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Type;
|
||||
namespace Meritoo\Test\Common\Type;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTypeTestCase;
|
||||
use Meritoo\Common\Type\DatePartType;
|
||||
@@ -19,29 +19,6 @@ use Meritoo\Common\Type\DatePartType;
|
||||
*/
|
||||
class DatePartTypeTest extends BaseTypeTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getAllExpectedTypes()
|
||||
{
|
||||
return [
|
||||
'DAY' => DatePartType::DAY,
|
||||
'HOUR' => DatePartType::HOUR,
|
||||
'MINUTE' => DatePartType::MINUTE,
|
||||
'MONTH' => DatePartType::MONTH,
|
||||
'SECOND' => DatePartType::SECOND,
|
||||
'YEAR' => DatePartType::YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getTestedTypeInstance()
|
||||
{
|
||||
return new DatePartType();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@@ -97,4 +74,27 @@ class DatePartTypeTest extends BaseTypeTestCase
|
||||
true,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getAllExpectedTypes()
|
||||
{
|
||||
return [
|
||||
'DAY' => DatePartType::DAY,
|
||||
'HOUR' => DatePartType::HOUR,
|
||||
'MINUTE' => DatePartType::MINUTE,
|
||||
'MONTH' => DatePartType::MONTH,
|
||||
'SECOND' => DatePartType::SECOND,
|
||||
'YEAR' => DatePartType::YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getTestedTypeInstance()
|
||||
{
|
||||
return new DatePartType();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Type;
|
||||
namespace Meritoo\Test\Common\Type;
|
||||
|
||||
use DateTime;
|
||||
use Generator;
|
||||
@@ -214,34 +214,6 @@ class DatePeriodTest extends BaseTypeTestCase
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all expected types of the tested type
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getAllExpectedTypes()
|
||||
{
|
||||
return [
|
||||
'LAST_MONTH' => DatePeriod::LAST_MONTH,
|
||||
'LAST_WEEK' => DatePeriod::LAST_WEEK,
|
||||
'LAST_YEAR' => DatePeriod::LAST_YEAR,
|
||||
'NEXT_MONTH' => DatePeriod::NEXT_MONTH,
|
||||
'NEXT_WEEK' => DatePeriod::NEXT_WEEK,
|
||||
'NEXT_YEAR' => DatePeriod::NEXT_YEAR,
|
||||
'THIS_MONTH' => DatePeriod::THIS_MONTH,
|
||||
'THIS_WEEK' => DatePeriod::THIS_WEEK,
|
||||
'THIS_YEAR' => DatePeriod::THIS_YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getTestedTypeInstance()
|
||||
{
|
||||
return new DatePeriod();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@@ -277,4 +249,32 @@ class DatePeriodTest extends BaseTypeTestCase
|
||||
true,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all expected types of the tested type
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getAllExpectedTypes()
|
||||
{
|
||||
return [
|
||||
'LAST_MONTH' => DatePeriod::LAST_MONTH,
|
||||
'LAST_WEEK' => DatePeriod::LAST_WEEK,
|
||||
'LAST_YEAR' => DatePeriod::LAST_YEAR,
|
||||
'NEXT_MONTH' => DatePeriod::NEXT_MONTH,
|
||||
'NEXT_WEEK' => DatePeriod::NEXT_WEEK,
|
||||
'NEXT_YEAR' => DatePeriod::NEXT_YEAR,
|
||||
'THIS_MONTH' => DatePeriod::THIS_MONTH,
|
||||
'THIS_WEEK' => DatePeriod::THIS_WEEK,
|
||||
'THIS_YEAR' => DatePeriod::THIS_YEAR,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getTestedTypeInstance()
|
||||
{
|
||||
return new DatePeriod();
|
||||
}
|
||||
}
|
||||
|
||||
46
tests/Utilities/Arrays/SimpleToString.php
Normal file
46
tests/Utilities/Arrays/SimpleToString.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\Utilities\Arrays;
|
||||
|
||||
/**
|
||||
* Simple class convertible to string.
|
||||
* Used for testing the Arrays class.
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class SimpleToString
|
||||
{
|
||||
/**
|
||||
* Identifier
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param string $id Identifier
|
||||
*/
|
||||
public function __construct($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns representation of object as string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return sprintf('Instance with ID: %s', $this->id);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Utilities\Bootstrap4CssSelector;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Bundle\IncorrectBundleNameException;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Utilities\CssSelector;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use DateInterval;
|
||||
use DateTime;
|
||||
@@ -279,9 +279,18 @@ class DateTest extends BaseTestCase
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(1, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(1, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
|
||||
/*
|
||||
* Difference of 1 day (using the relative date format)
|
||||
*/
|
||||
@@ -294,8 +303,10 @@ class DateTest extends BaseTestCase
|
||||
];
|
||||
|
||||
self::assertEquals($effect, Date::getDateDifference(new DateTime('yesterday'), new DateTime('midnight')));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime('yesterday'), new DateTime('midnight'), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(1, Date::getDateDifference(new DateTime('yesterday'), new DateTime('midnight'), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime('yesterday'), new DateTime('midnight'), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime('yesterday'), new DateTime('midnight'), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceOneDayTwoHours()
|
||||
@@ -320,6 +331,12 @@ class DateTest extends BaseTestCase
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(1, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(1, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(2, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(2, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
@@ -355,10 +372,141 @@ class DateTest extends BaseTestCase
|
||||
self::assertEquals(41, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(41, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(4, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(4, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(30, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(30, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceNewYear()
|
||||
{
|
||||
$dateStart = '2017-12-31 23:59';
|
||||
$dateEnd = '2018-01-01 00:00';
|
||||
|
||||
$effect = [
|
||||
Date::DATE_DIFFERENCE_UNIT_YEARS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MONTHS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_DAYS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_HOURS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MINUTES => 1,
|
||||
];
|
||||
|
||||
self::assertEquals($effect, Date::getDateDifference($dateStart, $dateEnd));
|
||||
self::assertEquals($effect, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd)));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(1, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(1, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceLessThan24Hours()
|
||||
{
|
||||
$dateStart = '2017-01-01 16:00';
|
||||
$dateEnd = '2017-01-02 10:00';
|
||||
|
||||
$effect = [
|
||||
Date::DATE_DIFFERENCE_UNIT_YEARS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MONTHS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_DAYS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_HOURS => 18,
|
||||
Date::DATE_DIFFERENCE_UNIT_MINUTES => 0,
|
||||
];
|
||||
|
||||
self::assertEquals($effect, Date::getDateDifference($dateStart, $dateEnd));
|
||||
self::assertEquals($effect, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd)));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(18, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(18, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceEqual24Hours()
|
||||
{
|
||||
$dateStart = '2017-01-01 00:00';
|
||||
$dateEnd = '2017-01-02 00:00';
|
||||
|
||||
$effect = [
|
||||
Date::DATE_DIFFERENCE_UNIT_YEARS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MONTHS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_DAYS => 1,
|
||||
Date::DATE_DIFFERENCE_UNIT_HOURS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MINUTES => 0,
|
||||
];
|
||||
|
||||
self::assertEquals($effect, Date::getDateDifference($dateStart, $dateEnd));
|
||||
self::assertEquals($effect, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd)));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(1, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(1, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceInvertedDates()
|
||||
{
|
||||
$dateStart = '2017-01-02 10:00';
|
||||
$dateEnd = '2017-01-01 16:00';
|
||||
|
||||
$effect = [
|
||||
Date::DATE_DIFFERENCE_UNIT_YEARS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_MONTHS => 0,
|
||||
Date::DATE_DIFFERENCE_UNIT_DAYS => -1,
|
||||
Date::DATE_DIFFERENCE_UNIT_HOURS => 6,
|
||||
Date::DATE_DIFFERENCE_UNIT_MINUTES => 0,
|
||||
];
|
||||
|
||||
self::assertEquals($effect, Date::getDateDifference($dateStart, $dateEnd));
|
||||
self::assertEquals($effect, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd)));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_YEARS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(-1, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(-1, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(6, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(6, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime($dateStart), new DateTime($dateEnd), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
|
||||
public function testGetDateDifferenceNoDifference()
|
||||
{
|
||||
/*
|
||||
@@ -384,6 +532,12 @@ class DateTest extends BaseTestCase
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime(), new DateTime(), Date::DATE_DIFFERENCE_UNIT_MONTHS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime(), new DateTime(), Date::DATE_DIFFERENCE_UNIT_DAYS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime(), new DateTime(), Date::DATE_DIFFERENCE_UNIT_HOURS));
|
||||
|
||||
self::assertEquals(0, Date::getDateDifference($dateStart, $dateEnd, Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
self::assertEquals(0, Date::getDateDifference(new DateTime(), new DateTime(), Date::DATE_DIFFERENCE_UNIT_MINUTES));
|
||||
}
|
||||
@@ -526,7 +680,8 @@ class DateTest extends BaseTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $period The period, type of period. One of DatePeriod class constants, e.g. DatePeriod::LAST_WEEK.
|
||||
* @param int $period The period, type of period. One of DatePeriod class constants, e.g.
|
||||
* DatePeriod::LAST_WEEK.
|
||||
* @param DatePeriod $expected Expected start and end date for given period
|
||||
*
|
||||
* @dataProvider provideCorrectPeriod
|
||||
@@ -828,7 +983,9 @@ class DateTest extends BaseTestCase
|
||||
DatePeriod::NEXT_WEEK,
|
||||
new DatePeriod(
|
||||
(new DateTime('this week'))->add(new DateInterval('P7D'))->setTime(0, 0, 0),
|
||||
(new DateTime('this week'))->add(new DateInterval('P7D'))->add(new DateInterval('P6D'))->setTime(23, 59, 59)
|
||||
(new DateTime('this week'))->add(new DateInterval('P7D'))
|
||||
->add(new DateInterval('P6D'))
|
||||
->setTime(23, 59, 59)
|
||||
),
|
||||
];
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Utilities\GeneratorUtility;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
@@ -80,8 +80,8 @@ class LocaleTest extends BaseTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $category Named constant specifying the category of the functions affected by the locale setting.
|
||||
* It's the same constant as required by setlocale() function.
|
||||
* @param int $category Named constant specifying the category of the functions affected by the locale
|
||||
* setting. It's the same constant as required by setlocale() function.
|
||||
* @param string $languageCode Language code, in ISO 639-1 format. Short form of the locale, e.g. "fr".
|
||||
* @param string $countryCode Country code, in ISO 3166-1 alpha-2 format, e.g. "FR"
|
||||
* @param string $expectedLocale Expected locale
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Exception\Regex\IncorrectColorHexLengthException;
|
||||
@@ -14,7 +14,6 @@ use Meritoo\Common\Exception\Regex\InvalidColorHexValueException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Utilities\Locale;
|
||||
use Meritoo\Common\Utilities\Miscellaneous;
|
||||
use ReflectionException;
|
||||
use stdClass;
|
||||
|
||||
/**
|
||||
@@ -30,9 +29,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
private $stringDotSeparated;
|
||||
private $stringWithoutSpaces;
|
||||
|
||||
/**
|
||||
* @throws ReflectionException
|
||||
*/
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertHasNoConstructor(Miscellaneous::class);
|
||||
@@ -156,33 +152,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
self::assertFalse(Miscellaneous::isPhpModuleLoaded('xyz123'));
|
||||
}
|
||||
|
||||
public function testVariableDump()
|
||||
{
|
||||
$xdebugLoaded = Miscellaneous::isPhpModuleLoaded('xdebug');
|
||||
|
||||
$variable = 123;
|
||||
$expected = "int(123)\n";
|
||||
|
||||
if ($xdebugLoaded) {
|
||||
$libraryPath = realpath(sprintf('%s%s', __DIR__, '/../..'));
|
||||
$filePath = sprintf('%s%s', $libraryPath, '/src/Utilities/Miscellaneous.php:');
|
||||
|
||||
/*
|
||||
* Attention. I have to use "\d+" at the end of $filePath, because number of line may be different if new
|
||||
* method / function will be created.
|
||||
*/
|
||||
$filePathQuoted = sprintf('%s\d+\:', preg_quote($filePath, '/'));
|
||||
|
||||
$expectedPattern = sprintf("/%s\n%s/", $filePathQuoted, preg_quote($expected, '/'));
|
||||
$this->expectOutputRegex($expectedPattern);
|
||||
} else {
|
||||
$expected = sprintf('<pre>%s</pre>', $expected);
|
||||
$this->expectOutputString($expected);
|
||||
}
|
||||
|
||||
Miscellaneous::variableDump($variable);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $string Empty value, e.g. ""
|
||||
* @dataProvider provideEmptyValue
|
||||
@@ -253,57 +222,68 @@ class MiscellaneousTest extends BaseTestCase
|
||||
self::assertEquals($this->stringSmall, Miscellaneous::replace($this->stringSmall, $search, $replacement3, true));
|
||||
}
|
||||
|
||||
public function testReplace()
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string|array $subject The string or an array of strings to search and replace
|
||||
* @param string|array $search String or pattern or array of patterns to find. It may be: string, an array
|
||||
* of strings or an array of patterns.
|
||||
* @param string|array $replacement The string or an array of strings to replace. It may be: string or an array
|
||||
* of strings.
|
||||
* @param mixed $result Result of replacing
|
||||
*
|
||||
* @dataProvider provideEmptyValuesToReplace
|
||||
*/
|
||||
public function testReplaceUsingEmptyValues($description, $subject, $search, $replacement, $result)
|
||||
{
|
||||
/*
|
||||
* Common variables
|
||||
*/
|
||||
$quoteStrings = true;
|
||||
static::assertSame($result, Miscellaneous::replace($subject, $search, $replacement), $description);
|
||||
}
|
||||
|
||||
$subject = [
|
||||
$this->stringSmall,
|
||||
$this->stringDotSeparated,
|
||||
];
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string $subject The string or an array of strings to search and replace
|
||||
* @param string $search String or pattern or array of patterns to find. It may be: string, an array of
|
||||
* strings or an array of patterns.
|
||||
* @param string $replacement The string or an array of strings to replace. It may be: string or an array of
|
||||
* strings.
|
||||
* @param mixed $result Result of replacing
|
||||
*
|
||||
* @dataProvider provideStringsToReplace
|
||||
*/
|
||||
public function testReplaceUsingStrings($description, $subject, $search, $replacement, $result)
|
||||
{
|
||||
static::assertSame($result, Miscellaneous::replace($subject, $search, $replacement), $description);
|
||||
}
|
||||
|
||||
/*
|
||||
* Testing replace with an array
|
||||
*/
|
||||
$search = [
|
||||
'|ipsum|',
|
||||
'|pellentesque|',
|
||||
];
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string $subject The string or an array of strings to search and replace
|
||||
* @param string $search String or pattern or array of patterns to find. It may be: string, an array of
|
||||
* strings or an array of patterns.
|
||||
* @param string $replacement The string or an array of strings to replace. It may be: string or an array of
|
||||
* strings.
|
||||
* @param mixed $result Result of replacing
|
||||
*
|
||||
* @dataProvider provideRegexToReplace
|
||||
*/
|
||||
public function testReplaceUsingRegex($description, $subject, $search, $replacement, $result)
|
||||
{
|
||||
static::assertSame($result, Miscellaneous::replace($subject, $search, $replacement), $description);
|
||||
}
|
||||
|
||||
$replacement = [
|
||||
'commodo',
|
||||
'interdum',
|
||||
];
|
||||
|
||||
$replaced1 = Miscellaneous::replace($subject, $search, $replacement);
|
||||
$replaced2 = Miscellaneous::replace($subject, $search, $replacement, true);
|
||||
|
||||
self::assertEquals('Lorem commodo dolor sit amet.', $replaced1[0]);
|
||||
self::assertEquals('Etiam ullamcorper. Suspendisse a interdum dui, non felis.', $replaced1[1]);
|
||||
|
||||
self::assertEquals('Lorem commodo dolor sit amet.', $replaced2[0]);
|
||||
self::assertEquals('Etiam ullamcorper. Suspendisse a interdum dui, non felis.', $replaced2[1]);
|
||||
|
||||
/*
|
||||
* Testing replace with string
|
||||
*/
|
||||
$searchString = 'ipsum';
|
||||
$replacementString = 'commodo';
|
||||
|
||||
$replaced = Miscellaneous::replace($subject, $searchString, $replacementString, $quoteStrings);
|
||||
self::assertEquals('Lorem \'commodo\' dolor sit amet.', $replaced[0]);
|
||||
|
||||
/*
|
||||
* Testing replace with mixed values:
|
||||
* - subject: array
|
||||
* - search: string
|
||||
* - replacement: string
|
||||
*/
|
||||
$replacedMixed = Miscellaneous::replace($subject, $searchString, $replacement, $quoteStrings);
|
||||
self::assertEquals('Lorem \'commodo\' dolor sit amet.', $replacedMixed[0]);
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string $subject The string or an array of strings to search and replace
|
||||
* @param string $search String or pattern or array of patterns to find. It may be: string, an array of
|
||||
* strings or an array of patterns.
|
||||
* @param string $replacement The string or an array of strings to replace. It may be: string or an array of
|
||||
* strings.
|
||||
* @param mixed $result Result of replacing
|
||||
*
|
||||
* @dataProvider provideDataToReplaceWithQuoteStrings
|
||||
*/
|
||||
public function testReplaceWithQuoteStrings($description, $subject, $search, $replacement, $result)
|
||||
{
|
||||
static::assertSame($result, Miscellaneous::replace($subject, $search, $replacement, true), $description);
|
||||
}
|
||||
|
||||
public function testUppercaseFirst()
|
||||
@@ -399,7 +379,7 @@ class MiscellaneousTest extends BaseTestCase
|
||||
mkdir($directory1Path, 0777, true);
|
||||
mkdir($directory2Path, 0777, true);
|
||||
|
||||
self::assertTrue(Miscellaneous::removeDirectory(sys_get_temp_dir() . '/lorem', false));
|
||||
self::assertTrue(Miscellaneous::removeDirectory(sys_get_temp_dir() . '/lorem'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -668,10 +648,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
self::assertEquals(255, Miscellaneous::getValidColorComponent(255, false));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*/
|
||||
public function testGetInvertedColorWithIncorrectLength()
|
||||
{
|
||||
$this->setExpectedException(IncorrectColorHexLengthException::class);
|
||||
@@ -686,10 +662,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
Miscellaneous::getInvertedColor('1234567');
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*/
|
||||
public function testGetInvertedColorWithInvalidValue()
|
||||
{
|
||||
$this->setExpectedException(InvalidColorHexValueException::class);
|
||||
@@ -701,10 +673,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
Miscellaneous::getInvertedColor('00ppqq');
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*/
|
||||
public function testGetInvertedColor()
|
||||
{
|
||||
/*
|
||||
@@ -1183,6 +1151,322 @@ class MiscellaneousTest extends BaseTestCase
|
||||
];
|
||||
}
|
||||
|
||||
public function provideEmptyValuesToReplace()
|
||||
{
|
||||
yield[
|
||||
'An empty string as subject',
|
||||
'',
|
||||
'test',
|
||||
'another test',
|
||||
'',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty array as subject',
|
||||
[],
|
||||
'test',
|
||||
'another test',
|
||||
[],
|
||||
];
|
||||
|
||||
yield[
|
||||
'Null as subject',
|
||||
null,
|
||||
'test',
|
||||
'another test',
|
||||
null,
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty string to search',
|
||||
'test',
|
||||
'',
|
||||
'another test',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty array to search',
|
||||
'test',
|
||||
[],
|
||||
'another test',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Null to search',
|
||||
'test',
|
||||
null,
|
||||
'another test',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty string as replacement',
|
||||
'test',
|
||||
'another test',
|
||||
'',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty array as replacement',
|
||||
'test',
|
||||
'another test',
|
||||
[],
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Null as replacement',
|
||||
'test',
|
||||
'another test',
|
||||
null,
|
||||
'test',
|
||||
];
|
||||
}
|
||||
|
||||
public function provideStringsToReplace()
|
||||
{
|
||||
yield[
|
||||
'Different count of strings to search and replace - 1st part',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
[
|
||||
'ipsum',
|
||||
],
|
||||
'commodo',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Different count of strings to search and replace - 2nd part',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'ipsum',
|
||||
[
|
||||
'commodo',
|
||||
],
|
||||
'Lorem commodo dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 not existing word in 1 sentence (nothing to replace)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'plum',
|
||||
'commodo',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 word in 1 sentence',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'ipsum',
|
||||
'commodo',
|
||||
'Lorem commodo dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 not existing word in 2 sentences (nothing to replace)',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
'plum',
|
||||
'commodo',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 word in 2 sentences',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
'amet',
|
||||
'commodo',
|
||||
[
|
||||
'Lorem ipsum dolor sit commodo',
|
||||
'Maecenas sed diam eget risus varius blandit sit commodo',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function provideRegexToReplace()
|
||||
{
|
||||
yield[
|
||||
'Different count of strings to search and replace - 1st part',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
[
|
||||
'|ipsum|',
|
||||
],
|
||||
'commodo',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Different count of strings to search and replace - 2nd part',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'|ipsum|',
|
||||
[
|
||||
'commodo',
|
||||
],
|
||||
'Lorem ipsum dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 pattern (word -> "")',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'|ipsum|',
|
||||
'',
|
||||
'Lorem dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 pattern (word -> word)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'|ipsum|',
|
||||
'commodo',
|
||||
'Lorem commodo dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'2 patterns (word -> word)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
[
|
||||
'|ipsum|',
|
||||
'|amet|',
|
||||
],
|
||||
[
|
||||
'commodo',
|
||||
'egestas',
|
||||
],
|
||||
'Lorem commodo dolor sit egestas',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 word in 2 sentences',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
'|amet|',
|
||||
'commodo',
|
||||
[
|
||||
'Lorem ipsum dolor sit commodo',
|
||||
'Maecenas sed diam eget risus varius blandit sit commodo',
|
||||
],
|
||||
];
|
||||
|
||||
yield[
|
||||
'2 words in 2 sentences',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
[
|
||||
'|ipsum|',
|
||||
'|amet|',
|
||||
],
|
||||
[
|
||||
'commodo',
|
||||
'egestas',
|
||||
],
|
||||
[
|
||||
'Lorem commodo dolor sit egestas',
|
||||
'Maecenas sed diam eget risus varius blandit sit egestas',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function provideDataToReplaceWithQuoteStrings()
|
||||
{
|
||||
yield[
|
||||
'An empty string as subject',
|
||||
'',
|
||||
'test',
|
||||
'another test',
|
||||
'',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty string to search',
|
||||
'test',
|
||||
'',
|
||||
'another test',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'An empty string as replacement',
|
||||
'test',
|
||||
'another test',
|
||||
'',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 not existing word in 1 sentence (nothing to replace)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'plum',
|
||||
'commodo',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 word in 1 sentence',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'ipsum',
|
||||
'commodo',
|
||||
'Lorem \'commodo\' dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Replace 1 word in 2 sentences',
|
||||
[
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'Maecenas sed diam eget risus varius blandit sit amet',
|
||||
],
|
||||
'amet',
|
||||
'commodo',
|
||||
[
|
||||
'Lorem ipsum dolor sit \'commodo\'',
|
||||
'Maecenas sed diam eget risus varius blandit sit \'commodo\'',
|
||||
],
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 pattern (word -> "")',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'|ipsum|',
|
||||
'',
|
||||
'Lorem \'\' dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 pattern (word -> word)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
'|ipsum|',
|
||||
'commodo',
|
||||
'Lorem \'commodo\' dolor sit amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'2 patterns (word -> word)',
|
||||
'Lorem ipsum dolor sit amet',
|
||||
[
|
||||
'|ipsum|',
|
||||
'|amet|',
|
||||
],
|
||||
[
|
||||
'commodo',
|
||||
'egestas',
|
||||
],
|
||||
'Lorem \'commodo\' dolor sit \'egestas\'',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@@ -1202,10 +1486,6 @@ class MiscellaneousTest extends BaseTestCase
|
||||
protected function tearDown()
|
||||
{
|
||||
parent::tearDown();
|
||||
|
||||
unset($this->stringSmall);
|
||||
unset($this->stringCommaSeparated);
|
||||
unset($this->stringDotSeparated);
|
||||
unset($this->stringWithoutSpaces);
|
||||
unset($this->stringSmall, $this->stringCommaSeparated, $this->stringDotSeparated, $this->stringWithoutSpaces);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
@@ -260,7 +260,8 @@ class QueryBuilderUtilityTest extends BaseTestCase
|
||||
$entityManager
|
||||
->expects(static::any())
|
||||
->method('getExpressionBuilder')
|
||||
->willReturn(new Expr());
|
||||
->willReturn(new Expr())
|
||||
;
|
||||
|
||||
yield[
|
||||
(new QueryBuilder($entityManager))->from('lorem_ipsum', 'lm'),
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The A class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The B class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The C class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The D class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The E trait.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The F class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The G class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The H class.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Reflection;
|
||||
namespace Meritoo\Test\Common\Utilities\Reflection;
|
||||
|
||||
/**
|
||||
* The H interface.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use DateTime;
|
||||
use Generator;
|
||||
@@ -16,16 +16,16 @@ use Meritoo\Common\Exception\Reflection\MissingChildClassesException;
|
||||
use Meritoo\Common\Exception\Reflection\NotExistingPropertyException;
|
||||
use Meritoo\Common\Exception\Reflection\TooManyChildClassesException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\A;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\B;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\C;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\D;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\E;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\F;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\G;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\H;
|
||||
use Meritoo\Common\Test\Utilities\Reflection\I;
|
||||
use Meritoo\Common\Utilities\Reflection;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\A;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\B;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\C;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\D;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\E;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\F;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\G;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\H;
|
||||
use Meritoo\Test\Common\Utilities\Reflection\I;
|
||||
use ReflectionProperty;
|
||||
|
||||
/**
|
||||
@@ -107,7 +107,7 @@ class ReflectionTest extends BaseTestCase
|
||||
/*
|
||||
* Existing class
|
||||
*/
|
||||
self::assertEquals('Meritoo\Common\Test\Utilities', Reflection::getClassNamespace(self::class));
|
||||
self::assertEquals('Meritoo\Test\Common\Utilities', Reflection::getClassNamespace(self::class));
|
||||
self::assertEquals(DateTime::class, Reflection::getClassNamespace(new DateTime()));
|
||||
|
||||
self::assertEquals(DateTime::class, Reflection::getClassNamespace([
|
||||
@@ -410,7 +410,7 @@ class ReflectionTest extends BaseTestCase
|
||||
|
||||
public function testGetMaxNumberConstant()
|
||||
{
|
||||
static::assertEquals(5, Reflection::getMaxNumberConstant(H::class));
|
||||
static::assertSame(5, Reflection::getMaxNumberConstant(H::class));
|
||||
}
|
||||
|
||||
public function testHasMethodUsingClassWithoutMethod()
|
||||
@@ -450,7 +450,7 @@ class ReflectionTest extends BaseTestCase
|
||||
|
||||
public function testGetConstantValue()
|
||||
{
|
||||
static::assertEquals(H::LOREM, Reflection::getConstantValue(H::class, 'LOREM'));
|
||||
static::assertSame(H::LOREM, Reflection::getConstantValue(H::class, 'LOREM'));
|
||||
}
|
||||
|
||||
public function testIsInterfaceImplementedUsingClassWithoutInterface()
|
||||
@@ -484,7 +484,7 @@ class ReflectionTest extends BaseTestCase
|
||||
|
||||
static::assertInstanceOf(ReflectionProperty::class, $property);
|
||||
static::assertTrue($property->isPrivate());
|
||||
static::assertEquals('count', $property->getName());
|
||||
static::assertSame('count', $property->getName());
|
||||
}
|
||||
|
||||
public function testGetPropertyUsingClassWithProtectedProperty()
|
||||
@@ -493,7 +493,7 @@ class ReflectionTest extends BaseTestCase
|
||||
|
||||
static::assertInstanceOf(ReflectionProperty::class, $property);
|
||||
static::assertTrue($property->isProtected());
|
||||
static::assertEquals('name', $property->getName());
|
||||
static::assertSame('name', $property->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,7 +12,6 @@ use Generator;
|
||||
use Meritoo\Common\Exception\Regex\IncorrectColorHexLengthException;
|
||||
use Meritoo\Common\Exception\Regex\InvalidColorHexValueException;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use ReflectionException;
|
||||
|
||||
/**
|
||||
* Test case of the useful regular expressions methods
|
||||
@@ -25,9 +24,6 @@ class RegexTest extends BaseTestCase
|
||||
private $simpleText;
|
||||
private $camelCaseText;
|
||||
|
||||
/**
|
||||
* @throws ReflectionException
|
||||
*/
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertHasNoConstructor(Regex::class);
|
||||
@@ -553,10 +549,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param mixed $nonScalarValue Non scalar value, e.g. [] or null
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideNonScalarValue
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingNonScalarValue($nonScalarValue)
|
||||
@@ -566,10 +558,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param mixed $emptyValue Empty value, e.g. ""
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorEmptyValue
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingEmptyValueWithoutException($emptyValue)
|
||||
@@ -579,10 +567,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param mixed $emptyValue Empty value, e.g. ""
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorEmptyValue
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingEmptyValue($emptyValue)
|
||||
@@ -593,10 +577,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param string $incorrectColor Incorrect value of color
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorIncorrectLength
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingIncorrectValueWithoutException($incorrectColor)
|
||||
@@ -606,10 +586,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param string $incorrectColor Incorrect value of color
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorIncorrectLength
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingIncorrectValue($incorrectColor)
|
||||
@@ -620,10 +596,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param string $invalidColor Invalid value of color
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorInvalidValue
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingInvalidValueWithoutException($invalidColor)
|
||||
@@ -633,10 +605,6 @@ class RegexTest extends BaseTestCase
|
||||
|
||||
/**
|
||||
* @param string $invalidColor Invalid value of color
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColorInvalidValue
|
||||
*/
|
||||
public function testGetValidColorHexValueUsingInvalidValue($invalidColor)
|
||||
@@ -649,9 +617,6 @@ class RegexTest extends BaseTestCase
|
||||
* @param string $color Color to verify
|
||||
* @param string $expected Expected value of color
|
||||
*
|
||||
* @throws IncorrectColorHexLengthException
|
||||
* @throws InvalidColorHexValueException
|
||||
*
|
||||
* @dataProvider provideColor
|
||||
*/
|
||||
public function testGetValidColorHexValue($color, $expected)
|
||||
@@ -659,6 +624,39 @@ class RegexTest extends BaseTestCase
|
||||
self::assertEquals($expected, Regex::getValidColorHexValue($color));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $emptyValue Empty value, e.g. ""
|
||||
* @dataProvider provideEmptyValue
|
||||
*/
|
||||
public static function testIsSizeValueUsingEmptyValue($emptyValue)
|
||||
{
|
||||
self::assertFalse(Regex::isSizeValue($emptyValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param string $value Value to verify
|
||||
* @param string $separator Separator used to split width and height
|
||||
* @param bool $expected Expected result of verification
|
||||
*
|
||||
* @dataProvider provideSizeToVerify
|
||||
*/
|
||||
public function testIsSizeValue($description, $value, $separator, $expected)
|
||||
{
|
||||
self::assertEquals($expected, Regex::isSizeValue($value, $separator), $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value Value that should be transformed to slug
|
||||
* @param string $expected Expected slug
|
||||
*
|
||||
* @dataProvider provideValueSlug
|
||||
*/
|
||||
public function testCreateSlug($value, $expected)
|
||||
{
|
||||
self::assertSame($expected, Regex::createSlug($value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides name of bundle and information if it's valid name
|
||||
*
|
||||
@@ -834,12 +832,12 @@ class RegexTest extends BaseTestCase
|
||||
];
|
||||
|
||||
yield[
|
||||
fread(fopen($file1Path, 'r'), 1),
|
||||
fread(fopen($file1Path, 'rb'), 1),
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
fread(fopen($file2Path, 'r'), 1),
|
||||
fread(fopen($file2Path, 'rb'), 1),
|
||||
true,
|
||||
];
|
||||
}
|
||||
@@ -1729,6 +1727,274 @@ class RegexTest extends BaseTestCase
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide value to create slug
|
||||
*
|
||||
* @return Generator
|
||||
*/
|
||||
public function provideValueSlug()
|
||||
{
|
||||
yield[
|
||||
[],
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
null,
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'',
|
||||
'',
|
||||
];
|
||||
|
||||
yield[
|
||||
1234,
|
||||
'1234',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1234',
|
||||
'1234',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1/2/3/4',
|
||||
'1234',
|
||||
];
|
||||
|
||||
yield[
|
||||
'1 / 2 / 3 / 4',
|
||||
'1-2-3-4',
|
||||
];
|
||||
|
||||
yield[
|
||||
'test',
|
||||
'test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'test test',
|
||||
'test-test',
|
||||
];
|
||||
|
||||
yield[
|
||||
'lorem ipsum dolor sit',
|
||||
'lorem-ipsum-dolor-sit',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Lorem ipsum. Dolor sit 12.34 amet.',
|
||||
'lorem-ipsum-dolor-sit-1234-amet',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Was sind Löwen, Bären, Vögel und Käfer (für die Prüfung)?',
|
||||
'was-sind-lowen-baren-vogel-und-kafer-fur-die-prufung',
|
||||
];
|
||||
|
||||
yield[
|
||||
'äöü (ÄÖÜ)',
|
||||
'aou-aou',
|
||||
];
|
||||
|
||||
yield[
|
||||
'Półka dębowa. Kolor: żółędziowy. Wymiary: 80 x 30 cm.',
|
||||
'polka-debowa-kolor-zoledziowy-wymiary-80-x-30-cm',
|
||||
];
|
||||
|
||||
yield[
|
||||
'ąęółńśżźć (ĄĘÓŁŃŚŻŹĆ)',
|
||||
'aeolnszzc-aeolnszzc',
|
||||
];
|
||||
}
|
||||
|
||||
public function provideSizeToVerify()
|
||||
{
|
||||
yield[
|
||||
'One number only',
|
||||
200,
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'One number only as string',
|
||||
'200',
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " " as invalid separator',
|
||||
'200 100',
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "|" as separator (invalid separator)',
|
||||
'200 | 100',
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "|" as invalid separator and no spaces around separator',
|
||||
'200|100',
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "X" as invalid separator',
|
||||
'200 X 100',
|
||||
' x ',
|
||||
false,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Simple, valid size',
|
||||
'200 x 100',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces at the right of separator',
|
||||
'200 x 100',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces at the left of separator',
|
||||
'200 x 100',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces around separator',
|
||||
'200 x 100',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces before width',
|
||||
' 200 x 100',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces after height',
|
||||
'200 x 100 ',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces before width and after height',
|
||||
' 200 x 100 ',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces everywhere (1st)',
|
||||
' 200 x 100 ',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces everywhere (2nd)',
|
||||
' 200 x 100 ',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'Too much spaces everywhere (3rd)',
|
||||
' 200 x 100 ',
|
||||
' x ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " X " as custom separator',
|
||||
'200 X 100',
|
||||
' X ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "|" as custom separator',
|
||||
'200|100',
|
||||
'|',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " | " as custom separator',
|
||||
'200 | 100',
|
||||
' | ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "::" as custom separator',
|
||||
'200::100',
|
||||
'::',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " :: " as custom separator',
|
||||
'200 :: 100',
|
||||
' :: ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "." as custom separator',
|
||||
'200.100',
|
||||
'.',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " . " as custom separator',
|
||||
'200 . 100',
|
||||
' . ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The "/" as custom separator',
|
||||
'200/100',
|
||||
'/',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " / " as custom separator',
|
||||
'200 / 100',
|
||||
' / ',
|
||||
true,
|
||||
];
|
||||
|
||||
yield[
|
||||
'The " : " as custom separator and too much spaces everywhere',
|
||||
' 200 : 100 ',
|
||||
' : ',
|
||||
true,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@@ -1737,7 +2003,8 @@ class RegexTest extends BaseTestCase
|
||||
parent::setUp();
|
||||
|
||||
$this->simpleText = 'lorem ipsum dolor sit';
|
||||
$this->camelCaseText = str_replace(' ', '', lcfirst(ucwords($this->simpleText))); // 'loremIpsumDolorSit'
|
||||
$simpleUppercase = ucwords($this->simpleText);
|
||||
$this->camelCaseText = str_replace(' ', '', lcfirst($simpleUppercase)); // 'loremIpsumDolorSit'
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1746,8 +2013,6 @@ class RegexTest extends BaseTestCase
|
||||
protected function tearDown()
|
||||
{
|
||||
parent::tearDown();
|
||||
|
||||
unset($this->simpleText);
|
||||
unset($this->camelCaseText);
|
||||
unset($this->simpleText, $this->camelCaseText);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities\Repository;
|
||||
namespace Meritoo\Test\Common\Utilities\Repository;
|
||||
|
||||
/**
|
||||
* Sortable object/entity.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
@@ -14,8 +14,8 @@ use Doctrine\ORM\Query\Expr\OrderBy;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Test\Utilities\Repository\Sortable;
|
||||
use Meritoo\Common\Utilities\Repository;
|
||||
use Meritoo\Test\Common\Utilities\Repository\Sortable;
|
||||
use stdClass;
|
||||
|
||||
/**
|
||||
@@ -36,7 +36,7 @@ class RepositoryTest extends BaseTestCase
|
||||
$items = [];
|
||||
Repository::replenishPositions($items);
|
||||
|
||||
static::assertEquals([], $items);
|
||||
static::assertSame([], $items);
|
||||
}
|
||||
|
||||
public function testReplenishPositionsUsingNotSortableObjects()
|
||||
@@ -85,10 +85,10 @@ class RepositoryTest extends BaseTestCase
|
||||
public function testReplenishPositionsUsingArraysWithoutExtremePosition(array $items)
|
||||
{
|
||||
Repository::replenishPositions($items);
|
||||
static::assertEquals($items, $items);
|
||||
static::assertSame($items, $items);
|
||||
|
||||
Repository::replenishPositions($items, false);
|
||||
static::assertEquals($items, $items);
|
||||
static::assertSame($items, $items);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +101,7 @@ class RepositoryTest extends BaseTestCase
|
||||
public function testReplenishPositionsUsingArraysWithoutExtremePositionForce(array $items, $asLast, array $expected)
|
||||
{
|
||||
Repository::replenishPositions($items, $asLast, true);
|
||||
static::assertEquals($expected, $items);
|
||||
static::assertSame($expected, $items);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +114,7 @@ class RepositoryTest extends BaseTestCase
|
||||
public function testReplenishPositionsUsingArraysWithExtremePositionForce(array $items, $asLast, array $expected)
|
||||
{
|
||||
Repository::replenishPositions($items, $asLast, true);
|
||||
static::assertEquals($expected, $items);
|
||||
static::assertSame($expected, $items);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,10 +124,10 @@ class RepositoryTest extends BaseTestCase
|
||||
public function testReplenishPositionsUsingObjectsWithoutExtremePosition(array $items)
|
||||
{
|
||||
Repository::replenishPositions($items);
|
||||
static::assertEquals($items, $items);
|
||||
static::assertSame($items, $items);
|
||||
|
||||
Repository::replenishPositions($items, false);
|
||||
static::assertEquals($items, $items);
|
||||
static::assertSame($items, $items);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -171,7 +171,7 @@ class RepositoryTest extends BaseTestCase
|
||||
*/
|
||||
public function testGetExtremePositionUsingArraysWithoutExtremePosition(array $items, $max, $expected)
|
||||
{
|
||||
static::assertEquals($expected, Repository::getExtremePosition($items, $max));
|
||||
static::assertSame($expected, Repository::getExtremePosition($items, $max));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,7 +183,7 @@ class RepositoryTest extends BaseTestCase
|
||||
*/
|
||||
public function testGetExtremePositionUsingArraysWithExtremePosition(array $items, $max, $expected)
|
||||
{
|
||||
static::assertEquals($expected, Repository::getExtremePosition($items, $max));
|
||||
static::assertSame($expected, Repository::getExtremePosition($items, $max));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -195,7 +195,7 @@ class RepositoryTest extends BaseTestCase
|
||||
*/
|
||||
public function testGetExtremePositionUsingObjectsWithoutExtremePosition(array $items, $max, $expected)
|
||||
{
|
||||
static::assertEquals($expected, Repository::getExtremePosition($items, $max));
|
||||
static::assertSame($expected, Repository::getExtremePosition($items, $max));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,7 +207,7 @@ class RepositoryTest extends BaseTestCase
|
||||
*/
|
||||
public function testGetExtremePositionUsingObjectsWithExtremePosition(array $items, $max, $expected)
|
||||
{
|
||||
static::assertEquals($expected, Repository::getExtremePosition($items, $max));
|
||||
static::assertSame($expected, Repository::getExtremePosition($items, $max));
|
||||
}
|
||||
|
||||
public function testGetEntityOrderedQueryBuilderUsingDefaults()
|
||||
@@ -220,7 +220,8 @@ class RepositoryTest extends BaseTestCase
|
||||
->setMethods([
|
||||
'createQueryBuilder',
|
||||
])
|
||||
->getMock();
|
||||
->getMock()
|
||||
;
|
||||
|
||||
$expectedQueryBuilder = new QueryBuilder($entityManager);
|
||||
$expectedQueryBuilder->from('any_table_name', 'qb');
|
||||
@@ -228,7 +229,8 @@ class RepositoryTest extends BaseTestCase
|
||||
$entityRepository
|
||||
->expects(static::once())
|
||||
->method('createQueryBuilder')
|
||||
->willReturn($expectedQueryBuilder);
|
||||
->willReturn($expectedQueryBuilder)
|
||||
;
|
||||
|
||||
$queryBuilder = Repository::getEntityOrderedQueryBuilder($entityRepository);
|
||||
$selectDQLPart = $queryBuilder->getDQLPart('select');
|
||||
@@ -262,7 +264,8 @@ class RepositoryTest extends BaseTestCase
|
||||
->setMethods([
|
||||
'createQueryBuilder',
|
||||
])
|
||||
->getMock();
|
||||
->getMock()
|
||||
;
|
||||
|
||||
$expectedQueryBuilder = new QueryBuilder($entityManager);
|
||||
$expectedQueryBuilder->from('any_table_name', 'qb');
|
||||
@@ -270,7 +273,8 @@ class RepositoryTest extends BaseTestCase
|
||||
$entityRepository
|
||||
->expects(static::once())
|
||||
->method('createQueryBuilder')
|
||||
->willReturn($expectedQueryBuilder);
|
||||
->willReturn($expectedQueryBuilder)
|
||||
;
|
||||
|
||||
$queryBuilder = Repository::getEntityOrderedQueryBuilder($entityRepository, $property, $direction);
|
||||
$selectDQLPart = $queryBuilder->getDQLPart('select');
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Generator;
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Common\Test\Utilities;
|
||||
namespace Meritoo\Test\Common\Utilities;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Utilities\Xml;
|
||||
|
||||
105
tests/ValueObject/AddressTest.php
Normal file
105
tests/ValueObject/AddressTest.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
use Meritoo\Common\ValueObject\Address;
|
||||
|
||||
/**
|
||||
* Test case for the address
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class AddressTest extends BaseTestCase
|
||||
{
|
||||
/**
|
||||
* @var Address
|
||||
*/
|
||||
private $address;
|
||||
|
||||
/**
|
||||
* @var Address
|
||||
*/
|
||||
private $addressWithoutFlat;
|
||||
|
||||
/**
|
||||
* @var Address
|
||||
*/
|
||||
private $addressWithoutStreet;
|
||||
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
Address::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
5,
|
||||
4
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetFlatNumber()
|
||||
{
|
||||
static::assertSame('200', $this->address->getFlatNumber());
|
||||
static::assertSame('', $this->addressWithoutFlat->getFlatNumber());
|
||||
static::assertSame('300', $this->addressWithoutStreet->getFlatNumber());
|
||||
}
|
||||
|
||||
public function testGetBuildingNumber()
|
||||
{
|
||||
static::assertSame('10', $this->address->getBuildingNumber());
|
||||
static::assertSame('22', $this->addressWithoutFlat->getBuildingNumber());
|
||||
static::assertSame('1', $this->addressWithoutStreet->getBuildingNumber());
|
||||
}
|
||||
|
||||
public function testGetStreet()
|
||||
{
|
||||
static::assertSame('4th Avenue', $this->address->getStreet());
|
||||
static::assertSame('Green Street', $this->addressWithoutFlat->getStreet());
|
||||
static::assertSame('', $this->addressWithoutStreet->getStreet());
|
||||
}
|
||||
|
||||
public function testGetFullStreet()
|
||||
{
|
||||
static::assertSame('4th Avenue 10/200', $this->address->getFullStreet());
|
||||
static::assertSame('Green Street 22', $this->addressWithoutFlat->getFullStreet());
|
||||
static::assertSame('', $this->addressWithoutStreet->getFullStreet());
|
||||
}
|
||||
|
||||
public function testGetCity()
|
||||
{
|
||||
static::assertSame('New York', $this->address->getCity());
|
||||
static::assertSame('San Francisco', $this->addressWithoutFlat->getCity());
|
||||
static::assertSame('Saint Louis', $this->addressWithoutStreet->getCity());
|
||||
}
|
||||
|
||||
public function testGetZipCode()
|
||||
{
|
||||
static::assertSame('00123', $this->address->getZipCode());
|
||||
static::assertSame('00456', $this->addressWithoutFlat->getZipCode());
|
||||
static::assertSame('00111', $this->addressWithoutStreet->getZipCode());
|
||||
}
|
||||
|
||||
public function testToString()
|
||||
{
|
||||
static::assertSame('4th Avenue 10/200, 00123, New York', (string)$this->address);
|
||||
static::assertSame('Green Street 22, 00456, San Francisco', (string)$this->addressWithoutFlat);
|
||||
static::assertSame('00111, Saint Louis', (string)$this->addressWithoutStreet);
|
||||
}
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->address = new Address('New York', '00123', '4th Avenue', '10', '200');
|
||||
$this->addressWithoutFlat = new Address('San Francisco', '00456', 'Green Street', '22');
|
||||
$this->addressWithoutStreet = new Address('Saint Louis', '00111', '', '1', '300');
|
||||
}
|
||||
}
|
||||
71
tests/ValueObject/BankAccountTest.php
Normal file
71
tests/ValueObject/BankAccountTest.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
use Meritoo\Common\ValueObject\BankAccount;
|
||||
|
||||
/**
|
||||
* Test case for the bank account
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class BankAccountTest extends BaseTestCase
|
||||
{
|
||||
/**
|
||||
* @var BankAccount
|
||||
*/
|
||||
private $emptyBankAccount;
|
||||
|
||||
/**
|
||||
* @var BankAccount
|
||||
*/
|
||||
private $bankAccount;
|
||||
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
BankAccount::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
2,
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetAccountNumber()
|
||||
{
|
||||
self::assertSame('', $this->emptyBankAccount->getAccountNumber());
|
||||
self::assertSame('1234567890', $this->bankAccount->getAccountNumber());
|
||||
}
|
||||
|
||||
public function testGetBankName()
|
||||
{
|
||||
self::assertSame('', $this->emptyBankAccount->getBankName());
|
||||
self::assertSame('Bank of America', $this->bankAccount->getBankName());
|
||||
}
|
||||
|
||||
public function testToString()
|
||||
{
|
||||
static::assertSame('', (string)$this->emptyBankAccount);
|
||||
static::assertSame('Bank of America, 1234567890', (string)$this->bankAccount);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->emptyBankAccount = new BankAccount('', '');
|
||||
$this->bankAccount = new BankAccount('Bank of America', '1234567890');
|
||||
}
|
||||
}
|
||||
98
tests/ValueObject/CompanyTest.php
Normal file
98
tests/ValueObject/CompanyTest.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
use Meritoo\Common\ValueObject\Address;
|
||||
use Meritoo\Common\ValueObject\BankAccount;
|
||||
use Meritoo\Common\ValueObject\Company;
|
||||
|
||||
/**
|
||||
* Test case for the company
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class CompanyTest extends BaseTestCase
|
||||
{
|
||||
/**
|
||||
* @var Company
|
||||
*/
|
||||
private $company;
|
||||
|
||||
/**
|
||||
* @var Company
|
||||
*/
|
||||
private $companyWithoutBankAccount;
|
||||
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
Company::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
3,
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetName()
|
||||
{
|
||||
static::assertSame('Test 1', $this->company->getName());
|
||||
static::assertSame('Test 2', $this->companyWithoutBankAccount->getName());
|
||||
}
|
||||
|
||||
public function testGetAddress()
|
||||
{
|
||||
static::assertEquals(
|
||||
new Address('New York', '00123', '4th Avenue', '10', '200'),
|
||||
$this->company->getAddress()
|
||||
);
|
||||
|
||||
static::assertEquals(
|
||||
new Address('San Francisco', '00456', 'Green Street', '22'),
|
||||
$this->companyWithoutBankAccount->getAddress()
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetBankAccount()
|
||||
{
|
||||
static::assertEquals(
|
||||
new BankAccount('Bank 1', '12345'),
|
||||
$this->company->getBankAccount()
|
||||
);
|
||||
|
||||
static::assertNull($this->companyWithoutBankAccount->getBankAccount());
|
||||
}
|
||||
|
||||
public function testToString()
|
||||
{
|
||||
static::assertSame('Test 1, 4th Avenue 10/200, 00123, New York, Bank 1, 12345', (string)$this->company);
|
||||
static::assertSame('Test 2, Green Street 22, 00456, San Francisco', (string)$this->companyWithoutBankAccount);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->company = new Company(
|
||||
'Test 1',
|
||||
new Address('New York', '00123', '4th Avenue', '10', '200'),
|
||||
new BankAccount('Bank 1', '12345')
|
||||
);
|
||||
|
||||
$this->companyWithoutBankAccount = new Company(
|
||||
'Test 2',
|
||||
new Address('San Francisco', '00456', 'Green Street', '22')
|
||||
);
|
||||
}
|
||||
}
|
||||
116
tests/ValueObject/HumanTest.php
Normal file
116
tests/ValueObject/HumanTest.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* (c) Meritoo.pl, http://www.meritoo.pl
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Meritoo\Test\Common\ValueObject;
|
||||
|
||||
use Meritoo\Common\Test\Base\BaseTestCase;
|
||||
use Meritoo\Common\Type\OopVisibilityType;
|
||||
use Meritoo\Common\ValueObject\Human;
|
||||
|
||||
/**
|
||||
* Test case for the human
|
||||
*
|
||||
* @author Meritoo <github@meritoo.pl>
|
||||
* @copyright Meritoo <http://www.meritoo.pl>
|
||||
*/
|
||||
class HumanTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
static::assertConstructorVisibilityAndArguments(
|
||||
Human::class,
|
||||
OopVisibilityType::IS_PUBLIC,
|
||||
4,
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $description Description of test
|
||||
* @param Human $human Human to verify
|
||||
* @param string $expected Expected string
|
||||
*
|
||||
* @dataProvider provideHuman
|
||||
*/
|
||||
public function testToString($description, Human $human, $expected)
|
||||
{
|
||||
static::assertSame($expected, (string)$human, $description);
|
||||
}
|
||||
|
||||
public function testGetFirstName()
|
||||
{
|
||||
$empty = new Human('', '');
|
||||
static::assertSame('', $empty->getFirstName());
|
||||
|
||||
$human = new Human('John', 'Scott');
|
||||
static::assertSame('John', $human->getFirstName());
|
||||
}
|
||||
|
||||
public function testGetLastName()
|
||||
{
|
||||
$empty = new Human('', '');
|
||||
static::assertSame('', $empty->getLastName());
|
||||
|
||||
$human = new Human('John', 'Scott');
|
||||
static::assertSame('Scott', $human->getLastName());
|
||||
}
|
||||
|
||||
public function testGetBirthDate()
|
||||
{
|
||||
$empty = new Human('', '');
|
||||
static::assertNull($empty->getBirthDate());
|
||||
|
||||
$human = new Human('John', 'Scott', '', new \DateTime('2001-01-01'));
|
||||
static::assertEquals(new \DateTime('2001-01-01'), $human->getBirthDate());
|
||||
}
|
||||
|
||||
public function testGetFullName()
|
||||
{
|
||||
$empty = new Human('', '');
|
||||
static::assertSame('', $empty->getFullName());
|
||||
|
||||
$human = new Human('John', 'Scott', '', new \DateTime('2001-01-01'));
|
||||
static::assertSame('John Scott', $human->getFullName());
|
||||
}
|
||||
|
||||
public function testGetEmail()
|
||||
{
|
||||
$empty = new Human('', '');
|
||||
static::assertNull($empty->getEmail());
|
||||
|
||||
$human = new Human('John', 'Scott', 'john@scott.com');
|
||||
static::assertSame('john@scott.com', $human->getEmail());
|
||||
}
|
||||
|
||||
public function provideHuman()
|
||||
{
|
||||
yield[
|
||||
'Without any data (an empty human)',
|
||||
new Human('', ''),
|
||||
'',
|
||||
];
|
||||
|
||||
yield[
|
||||
'With first and last name only',
|
||||
new Human('John', 'Scott'),
|
||||
'John Scott',
|
||||
];
|
||||
|
||||
yield[
|
||||
'With first name, last name and email',
|
||||
new Human('John', 'Scott', 'john@scott.com'),
|
||||
'John Scott <john@scott.com>',
|
||||
];
|
||||
|
||||
yield[
|
||||
'With whole/complete data',
|
||||
new Human('John', 'Scott', 'john@scott.com', new \DateTime('2001-01-01')),
|
||||
'John Scott <john@scott.com>',
|
||||
];
|
||||
}
|
||||
}
|
||||
1095
tests/ValueObject/SizeTest.php
Normal file
1095
tests/ValueObject/SizeTest.php
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user