public function testEvaluate() { //bad term $badTermResource = core_kernel_classes_ResourceFactory::create(new core_kernel_classes_Class(CLASS_TERM), 'bad term', __METHOD__); $badTerm = new core_kernel_rules_Term($badTermResource->getUri()); try { $badTerm->evaluate(); $this->fail('should raise exception : Forbidden type'); } catch (common_Exception $e) { $this->assertEquals($e->getMessage(), 'Forbidden Type of Term'); } // eval const $constantResource = core_kernel_rules_TermFactory::createConst('test1'); $term = $constantResource->evaluate(); $this->assertIsA($term, 'core_kernel_classes_Literal'); $this->assertEquals($term, 'test1'); $constantResource->delete(); //eval SPX $booleanClass = new core_kernel_classes_Class(GENERIS_BOOLEAN); $maybe = core_kernel_classes_ResourceFactory::create($booleanClass, 'testCase testCreateSPX', __METHOD__); $SPXResource = core_kernel_rules_TermFactory::createSPX($maybe, new core_kernel_classes_Property(RDFS_COMMENT)); $spxResult = $SPXResource->evaluate(); $this->assertIsA($spxResult, 'core_kernel_classes_Literal'); $this->assertEquals($spxResult, __METHOD__); // eval operation $constant5 = core_kernel_rules_TermFactory::createConst('5'); $constant12 = core_kernel_rules_TermFactory::createConst('12'); $operation = core_kernel_rules_OperationFactory::createOperation($constant5, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_ADD)); $operationTerm = new core_kernel_rules_Term($operation->getUri()); $result = $operationTerm->evaluate(); $this->assertEquals($result->literal, '17'); $fakeTerm = new core_kernel_rules_Term($maybe->getUri()); try { $fakeTerm->evaluate(); $this->fail('should raise exception : Forbidden type'); } catch (common_Exception $e) { $this->assertEquals($e->getMessage(), 'problem evaluating Term'); } $badTermResource->delete(); $constant5->delete(); $constant12->delete(); $SPXResource->delete(); $operation->delete(); $maybe->delete(); }
public function testEvaluate() { $constant5 = core_kernel_rules_TermFactory::createConst('5'); $constant12 = core_kernel_rules_TermFactory::createConst('12'); //5 + 12 $operation = core_kernel_rules_OperationFactory::createOperation($constant5, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_ADD)); $result = $operation->evaluate(); $this->assertIsA($result, 'core_kernel_classes_Literal'); $this->assertEquals($result->literal, '17'); //5 - 12 $operation = core_kernel_rules_OperationFactory::createOperation($constant5, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_MINUS)); $result = $operation->evaluate(); $this->assertIsA($result, 'core_kernel_classes_Literal'); $this->assertEquals($result->literal, '-7'); //5 * 12 $operation = core_kernel_rules_OperationFactory::createOperation($constant5, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_MULTIPLY)); $result = $operation->evaluate(); $this->assertIsA($result, 'core_kernel_classes_Literal'); $this->assertEquals($result->literal, '60'); //60 / 12 $constant60 = core_kernel_rules_TermFactory::createConst('60'); $operation = core_kernel_rules_OperationFactory::createOperation($constant60, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_DIVISION)); $result = $operation->evaluate(); $this->assertIsA($result, 'core_kernel_classes_Literal'); $this->assertEquals($result->literal, '5'); // 60 concat 12 $operation = core_kernel_rules_OperationFactory::createOperation($constant60, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_CONCAT)); $result = $operation->evaluate(); $this->assertIsA($result, 'core_kernel_classes_Literal'); $this->assertEquals($result->literal, '60 12'); // raise excption bad operator $operation = core_kernel_rules_OperationFactory::createOperation($constant60, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_UNION)); try { $operation->evaluate(); $this->fail('should raise exception : problem evaluating operation, operator do not match with operands'); } catch (common_Exception $e) { $this->assertEquals($e->getMessage(), 'problem evaluating operation, operator do not match with operands'); } $constant60->delete(); $constant5->delete(); $constant12->delete(); $operation->delete(); }
public function testCreateOperation() { $constant5 = core_kernel_rules_TermFactory::createConst('5'); $constant12 = core_kernel_rules_TermFactory::createConst('12'); $operation = core_kernel_rules_OperationFactory::createOperation($constant5, $constant12, new core_kernel_classes_Resource(INSTANCE_OPERATOR_ADD)); $this->assertIsA($operation, 'core_kernel_rules_Operation'); $firstOperand = new core_kernel_classes_Property(PROPERTY_OPERATION_FIRST_OP); $secondOperand = new core_kernel_classes_Property(PROPERTY_OPERATION_SECND_OP); $operatorProperty = new core_kernel_classes_Property(PROPERTY_OPERATION_OPERATOR); $operator = $operation->getUniquePropertyValue($operatorProperty); $this->assertIsA($operator, 'core_kernel_classes_Resource'); $this->assertEquals($operator->getUri(), INSTANCE_OPERATOR_ADD); $term1 = $operation->getUniquePropertyValue($firstOperand); $this->assertIsA($term1, 'core_kernel_classes_Resource'); $this->assertEquals($term1->getUri(), $constant5->getUri()); $term2 = $operation->getUniquePropertyValue($secondOperand); $this->assertIsA($term2, 'core_kernel_classes_Resource'); $this->assertEquals($term2->getUri(), $constant12->getUri()); $constant5->delete(); $constant12->delete(); $operation->delete(); }