/** * */ public function testCreateRecursiveExpression() { $constantResource1 = core_kernel_rules_TermFactory::createConst('test1'); $constantResource2 = core_kernel_rules_TermFactory::createConst('test2'); $terminalExpression1 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource1); $terminalExpression2 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource2); $equalsOperator = new core_kernel_classes_Resource(INSTANCE_EQUALS_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression1, $terminalExpression2, $equalsOperator); //prop $terminalExpressionProperty = new core_kernel_classes_Property(PROPERTY_TERMINAL_EXPRESSION, __METHOD__); $logicalOperatorProperty = new core_kernel_classes_Property(PROPERTY_HASLOGICALOPERATOR, __METHOD__); $firstExpressionProperty = new core_kernel_classes_Property(PROPERTY_FIRST_EXPRESSION, __METHOD__); $secondExpressionProperty = new core_kernel_classes_Property(PROPERTY_SECOND_EXPRESSION, __METHOD__); //final expr $finalExpressionVal = $finalExpression->getOnePropertyValue($terminalExpressionProperty); $this->assertIsA($finalExpressionVal, 'core_kernel_classes_Resource'); $this->assertEquals($finalExpressionVal->getUri(), INSTANCE_EMPTY_TERM_URI); //operator $logicalOperatorVal = $finalExpression->getOnePropertyValue($logicalOperatorProperty); $this->assertIsA($logicalOperatorVal, 'core_kernel_classes_Resource'); $this->assertEquals($logicalOperatorVal->getUri(), INSTANCE_EQUALS_OPERATOR_URI); //first expr $firstExpressionVal = $finalExpression->getOnePropertyValue($firstExpressionProperty); $this->assertIsA($firstExpressionVal, 'core_kernel_classes_Resource'); $this->assertEquals($firstExpressionVal->getUri(), $terminalExpression1->getUri()); //Second expr $secondExpressionVal = $finalExpression->getOnePropertyValue($secondExpressionProperty); $this->assertIsA($secondExpressionVal, 'core_kernel_classes_Resource'); $this->assertEquals($secondExpressionVal->getUri(), $terminalExpression2->getUri()); $constantResource1->delete(); $constantResource2->delete(); $terminalExpression1->delete(); $terminalExpression2->delete(); $finalExpression->delete(); }
public function testCreateSPX() { $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)); $this->assertIsA($SPXResource, 'core_kernel_rules_Term'); $subjectProperty = new core_kernel_classes_Property(PROPERTY_TERM_SPX_SUBJET); $predicateProperty = new core_kernel_classes_Property(PROPERTY_TERM_SPX_PREDICATE); $subject = $SPXResource->getUniquePropertyValue($subjectProperty); $this->assertIsA($subject, 'core_kernel_classes_Resource'); $this->assertEquals($subject->getUri(), $maybe->getUri()); $predicate = $SPXResource->getUniquePropertyValue($predicateProperty); $this->assertIsA($predicate, 'core_kernel_classes_Resource'); $this->assertEquals($predicate->getUri(), RDFS_COMMENT); $SPXResource->delete(); $maybe->delete(); }
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(); }
public function testEvaluate() { $constantResource1 = core_kernel_rules_TermFactory::createConst('test1'); $constantResource2 = core_kernel_rules_TermFactory::createConst('test2'); $constantResource14 = core_kernel_rules_TermFactory::createConst('14'); $constantResource12 = core_kernel_rules_TermFactory::createConst('12'); $constantResource12b = core_kernel_rules_TermFactory::createConst('12'); $true = new core_kernel_rules_Expression(INSTANCE_EXPRESSION_TRUE); $this->assertTrue($true->evaluate()); $false = new core_kernel_rules_Expression(INSTANCE_EXPRESSION_FALSE); $this->assertFalse($false->evaluate()); $terminalExpression1 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource1); $terminalExpression2 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource2); $terminalExpression14 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource14); $terminalExpression12 = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource12); $terminalExpression12b = core_kernel_rules_ExpressionFactory::createTerminalExpression($constantResource12b); // test1 == test2 $equalsOperator = new core_kernel_classes_Resource(INSTANCE_EQUALS_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression1, $terminalExpression2, $equalsOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // 12 == 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $equalsOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // test1 != test2 $diffOperator = new core_kernel_classes_Resource(INSTANCE_DIFFERENT_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression1, $terminalExpression2, $diffOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // 12 != 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $diffOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // 14 <= 12 $infEqOperator = new core_kernel_classes_Resource(INSTANCE_INF_EQ_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression14, $terminalExpression12, $infEqOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); //12 <= 14 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression14, $infEqOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); //12 <= 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $infEqOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // 14 >= 12 $supEqOperator = new core_kernel_classes_Resource(INSTANCE_SUP_EQ_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression14, $terminalExpression12, $supEqOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); //12 >= 14 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression14, $supEqOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); //12 >= 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $supEqOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // 14 < 12 $infOperator = new core_kernel_classes_Resource(INSTANCE_INF_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression14, $terminalExpression12, $infOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); //12 < 14 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression14, $infOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); //12 < 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $infOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // 14 > 12 $supOperator = new core_kernel_classes_Resource(INSTANCE_SUP_OPERATOR_URI); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression14, $terminalExpression12, $supOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); //12 > 14 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression14, $supOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); //12 > 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression12b, $supOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // trueExpression => 12 < 14 $trueExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression12, $terminalExpression14, $infOperator); //falseExpression => test1 == test2 $falseExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression1, $terminalExpression2, $equalsOperator); // trueExpression2 => test1 != test2 $trueExpression2 = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression1, $terminalExpression2, $diffOperator); //falseExpression2 => 14 < 12 $falseExpression2 = core_kernel_rules_ExpressionFactory::createRecursiveExpression($terminalExpression14, $terminalExpression12, $infOperator); // 12 < 14 AND test1 == test2 $andOperator = new core_kernel_classes_Resource(INSTANCE_AND_OPERATOR); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($trueExpression, $falseExpression, $andOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // 12 < 14 AND test1 != test2 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($trueExpression, $trueExpression2, $andOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // 12 < 14 OR test1 == test2 $orOperator = new core_kernel_classes_Resource(INSTANCE_OR_OPERATOR); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($trueExpression, $falseExpression, $orOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // 12 < 14 OR test1 != test2 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($trueExpression, $trueExpression2, $orOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // test1 == test2 OR 12 < 14 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($falseExpression, $trueExpression, $orOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); // test1 == test2 OR 14 < 12 $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($falseExpression, $falseExpression2, $orOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // (test1 == test2 OR 14 < 12) AND (12 < 14 OR test1 == test2) $finalExpression1 = core_kernel_rules_ExpressionFactory::createRecursiveExpression($falseExpression, $falseExpression2, $orOperator); $finalExpression2 = core_kernel_rules_ExpressionFactory::createRecursiveExpression($trueExpression, $falseExpression, $orOperator); $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($finalExpression1, $finalExpression2, $andOperator); $this->assertFalse($finalExpression->evaluate()); $finalExpression->delete(); // (test1 == test2 OR 14 < 12) OR (12 < 14 OR test1 == test2) $finalExpression = core_kernel_rules_ExpressionFactory::createRecursiveExpression($finalExpression1, $finalExpression2, $orOperator); $this->assertTrue($finalExpression->evaluate()); $finalExpression->delete(); $finalExpression1->delete(); $finalExpression2->delete(); $constantResource1->delete(); $constantResource2->delete(); $constantResource12->delete(); $constantResource12b->delete(); $terminalExpression1->delete(); $terminalExpression2->delete(); $terminalExpression12->delete(); $terminalExpression12b->delete(); $terminalExpression14->delete(); $trueExpression->delete(); $falseExpression->delete(); $trueExpression2->delete(); $falseExpression2->delete(); }