diff --git a/src/Concept.php b/src/Concept.php index 6144e72..824eb10 100644 --- a/src/Concept.php +++ b/src/Concept.php @@ -16,14 +16,14 @@ class Concept extends Item ]; const FIELDS = [ - 'narrower' => ['Set','Concept'], - 'broader' => ['Set','Concept'], - 'related' => ['Set','Concept'], - 'previous' => ['Set','Concept'], - 'next' => ['Set','Concept'], - 'ancestors' => ['Set','Concept'], - 'inScheme' => ['Set','ConceptScheme'], - 'topConceptOf' => ['Set','ConceptScheme'], + 'narrower' => ['Set', 'Concept'], + 'broader' => ['Set', 'Concept'], + 'related' => ['Set', 'Concept'], + 'previous' => ['Set', 'Concept'], + 'next' => ['Set', 'Concept'], + 'ancestors' => ['Set', 'Concept'], + 'inScheme' => ['Set', 'ConceptScheme'], + 'topConceptOf' => ['Set', 'ConceptScheme'], ]; /** diff --git a/src/Container.php b/src/Container.php index 14520be..39eda88 100644 --- a/src/Container.php +++ b/src/Container.php @@ -169,7 +169,7 @@ public function getIterator() public function jsonLDSerialize(string $context = self::DEFAULT_CONTEXT, bool $types = null) { - $set = array_map(function ($m) use ($types) { + $set = array_map(function($m) use ($types) { return is_object($m) ? $m->jsonLDSerialize('', $types) : $m; }, $this->members); diff --git a/src/DataType.php b/src/DataType.php index a2170a6..733479e 100644 --- a/src/DataType.php +++ b/src/DataType.php @@ -48,7 +48,7 @@ protected static function fieldType(string $field, bool $strict = false) } } - private function fieldException($field, $message) + private function fieldException(string $field, string $message) { return new InvalidArgumentException( get_called_class() . "->$field must $message" @@ -74,7 +74,7 @@ protected function setField(string $field, $value, bool $strict = true) if (is_array($value)) { $class = 'JSKOS\\' . $type[1]; $value = new Set( - array_map(function ($m) use ($class) { + array_map(function($m) use ($class) { if (is_null($m)) { return null; } @@ -99,8 +99,6 @@ protected function setField(string $field, $value, bool $strict = true) } # TODO: check member types } - } elseif ($type == '*') { - $value = $value; } elseif ($type == 'LanguageMapOfStrings') { if (!($value instanceof LanguageMapOfStrings)) { $value = new LanguageMapOfStrings($value); @@ -109,12 +107,12 @@ protected function setField(string $field, $value, bool $strict = true) if (!($value instanceof LanguageMapOfLists)) { $value = new LanguageMapOfLists($value); } - } elseif (!DataType::hasType($value, $type)) { - if ($type == 'ConceptScheme') { + } elseif ($type == 'ConceptScheme') { + if (!($value instanceof ConceptScheme)) { $value = new ConceptScheme($value); - } else { - throw $this->fieldException($field, "match JSKOS\DataType::is$type"); } + } elseif ($type != '*' && !DataType::hasType($value, $type)) { + throw $this->fieldException($field, "match JSKOS\DataType::is$type"); } $this->$field = $value; diff --git a/src/Resource.php b/src/Resource.php index fc99c2f..ce7204d 100644 --- a/src/Resource.php +++ b/src/Resource.php @@ -26,10 +26,10 @@ abstract class Resource extends DataType 'created' => 'Date', 'issued' => 'Date', 'modified' => 'Date', - 'creator' => ['Set','Concept'], - 'contributor' => ['Set','Concept'], - 'publisher' => ['Set','Concept'], - 'partOf' => ['Set','Concept'], + 'creator' => ['Set', 'Concept'], + 'contributor' => ['Set', 'Concept'], + 'publisher' => ['Set', 'Concept'], + 'partOf' => ['Set', 'Concept'], ]; /** diff --git a/tests/LanguageMapOfStringsTest.php b/tests/LanguageMapOfStringsTest.php index e65934e..10b0eb7 100644 --- a/tests/LanguageMapOfStringsTest.php +++ b/tests/LanguageMapOfStringsTest.php @@ -19,6 +19,9 @@ public function testConstruct() $nonstrict = new LanguageMapOfStrings([0=>[], 'en'=>'hi']); $this->assertEquals($map, $nonstrict); + + $map['en'] = null; + $this->assertEquals(new LanguageMapOfStrings(), $map); } public function testJson() diff --git a/tests/SetTest.php b/tests/SetTest.php index 6c0ca98..011a52e 100644 --- a/tests/SetTest.php +++ b/tests/SetTest.php @@ -7,6 +7,7 @@ /** * @covers JSKOS\Set + * @covers JSKOS\Container */ class SetTest extends \PHPUnit\Framework\TestCase {