diff --git a/clover.xml b/clover.xml index 3500fb5a..e20bb8f4 100644 --- a/clover.xml +++ b/clover.xml @@ -1,6 +1,6 @@ - - + + @@ -8,17 +8,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -37,15 +37,15 @@ - - - + + + - - - - + + + + @@ -58,8 +58,8 @@ - - + + @@ -70,8 +70,8 @@ - - + + @@ -87,8 +87,8 @@ - - + + @@ -106,9 +106,9 @@ - - - + + + @@ -134,22 +134,22 @@ - - - - + + + + - - - - - - - - + + + + + + + + @@ -183,10 +183,10 @@ - - - - + + + + @@ -210,13 +210,13 @@ - - - + + + - - + + @@ -234,17 +234,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -277,14 +277,14 @@ - - - - - - - - + + + + + + + + @@ -311,9 +311,9 @@ - - - + + + @@ -326,8 +326,8 @@ - - + + @@ -341,158 +341,158 @@ - - - + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + @@ -502,12 +502,12 @@ - - + + - - + + @@ -522,9 +522,9 @@ - - - + + + @@ -537,46 +537,46 @@ - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - + @@ -585,32 +585,32 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -618,254 +618,252 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -878,523 +876,525 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + @@ -1440,6 +1440,6 @@ - + diff --git a/src/SchemaReader.php b/src/SchemaReader.php index 59f89655..4fe23ba1 100644 --- a/src/SchemaReader.php +++ b/src/SchemaReader.php @@ -403,7 +403,8 @@ private function loadMinFromNode(\DOMElement $node, ?int $min): ?int $minOccurs = (int) $node->getAttribute('minOccurs'); - return max($min, $minOccurs); + // NOTE must not pass "null" to max() function, because "max(null, 0)" returns "null" instead of "0" + return max((int) $min, $minOccurs); } private function loadMaxFromNode(\DOMElement $node, ?int $max): ?int @@ -499,7 +500,8 @@ private function loadSequenceChildNodeLoadElement( $this->resolveSubstitutionGroup($schema, $node, $childNode, $element); if (null !== $min) { - $element->setMin($min); + // NOTE must not pass "null" to max() function, because "max(null, 0)" returns "null" instead of "0" + $element->setMin(max((int) $element->getMin(), $min)); } if (null !== $max && 1 < $max) { diff --git a/tests/TypesTest.php b/tests/TypesTest.php index 3146df76..512e1ce8 100644 --- a/tests/TypesTest.php +++ b/tests/TypesTest.php @@ -181,13 +181,14 @@ public function testSequenceMinOccursOverride($sequenceMinOccurs, $childMinOccur public function getMinOccurencesOverride(): array { return [ - ['0', '2', 2], - ['3', '2', 3], + ['0', '5', 5], ['0', '1', 1], ['1', '1', 1], ['2', '1', 2], - ['0', '0', 0], ['3', '0', 3], + ['3', '2', 3], + ['0', '0', 0], + [null, '0', 0], ]; }