예제 #1
0
 /**
  *
  */
 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();
 }
예제 #2
0
 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();
 }