176 lines
6.4 KiB
PHP
176 lines
6.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; under version 2
|
|
* of the License (non-upgradable).
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* Copyright (c) 2008-2010 (original work) Deutsche Institut für Internationale Pädagogische Forschung (under the project TAO-TRANSFER);
|
|
* 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV);
|
|
* 2017 (update and modification) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
*/
|
|
|
|
namespace oat\generis\test\integration;
|
|
|
|
use oat\generis\model\GenerisRdf;
|
|
use oat\generis\model\OntologyRdf;
|
|
use oat\generis\model\WidgetRdf;
|
|
use oat\generis\test\GenerisPhpUnitTestRunner;
|
|
use \core_kernel_classes_ContainerCollection;
|
|
use \core_kernel_classes_Class;
|
|
use \core_kernel_classes_Resource;
|
|
use \core_kernel_classes_Property;
|
|
|
|
class PropertyTest extends GenerisPhpUnitTestRunner
|
|
{
|
|
|
|
/**
|
|
*
|
|
* @var core_kernel_classes_Property
|
|
*/
|
|
protected $object;
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function setUp(): void
|
|
{
|
|
GenerisPhpUnitTestRunner::initTest();
|
|
$this->object = new core_kernel_classes_Property(WidgetRdf::PROPERTY_WIDGET);
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testGetDomain()
|
|
{
|
|
$domainCollection = $this->object->getDomain();
|
|
$this->assertTrue($domainCollection instanceof core_kernel_classes_ContainerCollection);
|
|
$domain = $domainCollection->get(0);
|
|
$this->assertEquals($domain->getUri(), OntologyRdf::RDF_PROPERTY);
|
|
$this->assertEquals($domain->getLabel(), 'Property');
|
|
$this->assertEquals($domain->getComment(), 'The class of RDF properties.');
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testSetDomain()
|
|
{
|
|
$class = new core_kernel_classes_Class(GenerisRdf::GENERIS_BOOLEAN, __METHOD__);
|
|
$prop = $class->createProperty('test', 'test');
|
|
$domain = $prop->getDomain();
|
|
$this->assertEquals(1, $domain->count());
|
|
$this->assertEquals($class, $domain->get(0));
|
|
$widget = new core_kernel_classes_Class(WidgetRdf::CLASS_URI_WIDGET, __METHOD__);
|
|
|
|
$this->assertTrue($prop->setDomain($widget));
|
|
$this->assertEquals(2, $prop->getDomain()->count());
|
|
$this->assertGreaterThanOrEqual(0, $prop->getDomain()->indexOf($widget));
|
|
$this->assertGreaterThanOrEqual(0, $prop->getDomain()->indexOf($class));
|
|
|
|
//if domain already set return true
|
|
$this->assertTrue($prop->setDomain($class));
|
|
$this->assertEquals(2, $prop->getDomain()->count());
|
|
$this->assertGreaterThanOrEqual(0, $prop->getDomain()->indexOf($widget));
|
|
$this->assertGreaterThanOrEqual(0, $prop->getDomain()->indexOf($class));
|
|
|
|
$prop->delete(true);
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testGetRange()
|
|
{
|
|
$range = $this->object->getRange();
|
|
$this->assertTrue($range instanceof core_kernel_classes_Class);
|
|
$this->assertEquals($range->getUri(), WidgetRdf::CLASS_URI_WIDGET);
|
|
$this->assertEquals($range->getLabel(), 'Widget Class');
|
|
$this->assertEquals($range->getComment(), 'The class of all possible widgets');
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testGetWidget()
|
|
{
|
|
$widget = $this->object->getWidget();
|
|
$this->assertInstanceOf(core_kernel_classes_Resource::class, $widget);
|
|
$this->assertEquals($widget->getUri(), 'http://www.tao.lu/datatypes/WidgetDefinitions.rdf#ComboBox');
|
|
$this->assertEquals($widget->getLabel(), 'Drop down menu');
|
|
$this->assertEquals($widget->getComment(), 'In drop down menu, one may select 1 to N options');
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testSetMultiple()
|
|
{
|
|
$class = new core_kernel_classes_Class(GenerisRdf::GENERIS_BOOLEAN, __METHOD__);
|
|
$prop = $class->createProperty('test', 'test');
|
|
$multipleProperty = new core_kernel_classes_Property(GenerisRdf::PROPERTY_MULTIPLE);
|
|
|
|
$this->assertEquals([], $prop->getPropertyValues($multipleProperty));
|
|
|
|
$prop->setMultiple(true);
|
|
$this->assertEquals([GenerisRdf::GENERIS_TRUE], $prop->getPropertyValues($multipleProperty));
|
|
|
|
$prop->delete(true);
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testIsMultiple()
|
|
{
|
|
$class = new core_kernel_classes_Class(GenerisRdf::GENERIS_BOOLEAN, __METHOD__);
|
|
$prop = $class->createProperty('test', 'test');
|
|
$this->assertFalse($prop->isMultiple());
|
|
$prop->setMultiple(true);
|
|
$this->assertTrue($prop->isMultiple());
|
|
|
|
$new = new core_kernel_classes_Property($prop->getUri());
|
|
$this->assertTrue($new->isMultiple());
|
|
|
|
$prop->delete(true);
|
|
}
|
|
/**
|
|
*
|
|
* @author Lionel Lecaque, lionel@taotesting.com
|
|
*/
|
|
public function testDelete()
|
|
{
|
|
|
|
$class = new core_kernel_classes_Class(GenerisRdf::GENERIS_BOOLEAN, __METHOD__);
|
|
|
|
$prop = $class->createProperty('test', 'test');
|
|
|
|
$instance = $class->createInstance('test', 'test');
|
|
$instance->setPropertyValue($prop, GenerisRdf::GENERIS_TRUE);
|
|
$instance->setPropertyValue($prop, '3');
|
|
|
|
$this->assertArrayHasKey($prop->getUri(), $class->getProperties());
|
|
$val = $instance->getPropertyValues($prop);
|
|
$this->assertTrue(in_array(GenerisRdf::GENERIS_TRUE, $val));
|
|
$this->assertTrue(in_array(3, $val));
|
|
|
|
$this->assertTrue($prop->delete(true));
|
|
$this->assertEquals([], $instance->getPropertyValues($prop));
|
|
$this->assertArrayNotHasKey($prop->getUri(), $class->getProperties());
|
|
|
|
$this->assertTrue($instance->delete());
|
|
}
|
|
}
|