public function testAbs()
 {
     $objTest = new TypeTest();
     $objTest->TestFloat = -1.0;
     $objTest->Save();
     $objTest2 = new TypeTest();
     $objTest2->TestFloat = -2.0;
     $objTest2->Save();
     $objResArray = TypeTest::QueryArray(QQ::GreaterThan(QQ::Abs(QQN::TypeTest()->TestFloat), 1.0));
     $this->assertEquals(1, count($objResArray));
     if (count($objResArray) > 0) {
         $objRes = $objResArray[0];
         $this->assertNotNull($objRes);
         if ($objRes) {
             $this->assertEquals(-2.0, $objRes->TestFloat);
         }
     }
     $objTest->Delete();
     $objTest2->Delete();
 }
<?php 
QApplication::$Database[1]->EnableProfiling();
$objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::MathOp('+', QQN::Person()->ProjectAsManager->Spent, QQ::Neg(QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff')), QQ::Select(array(QQ::Virtual('diff'), QQN::Person()->FirstName, QQN::Person()->LastName))));
foreach ($objPersonArray as $objPerson) {
    _p($objPerson->FirstName . ' ' . $objPerson->LastName) . ' : ' . $objPerson->GetVirtualAttribute('diff');
    _p('<br/>', false);
}
?>
	<p><?php 
QApplication::$Database[1]->OutputProfiling();
?>
</p>

	<h2>SQL Function Example</h2>
	<p>Use the QQ::Abs and QQ::Sub functions to retrieve projects both over-budget and under-budget by $20.</p>
<?php 
QApplication::$Database[1]->EnableProfiling();
$objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('absdiff', QQ::Abs(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('absdiff'), 'DESC'), QQ::Expand(QQ::Virtual('absdiff')), QQ::Select(array(QQ::Virtual('absdiff'), QQN::Person()->FirstName, QQN::Person()->LastName))));
foreach ($objPersonArray as $objPerson) {
    _p($objPerson->FirstName . ' ' . $objPerson->LastName) . ' : ' . $objPerson->GetVirtualAttribute('diff');
    _p('<br/>', false);
}
?>
	<p><?php 
QApplication::$Database[1]->OutputProfiling();
?>
</p>
</div>

<?php 
require '../includes/footer.inc.php';
 /**
  * Tests to ensure the example to work
  */
 public function testExample()
 {
     $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget), 20));
     $this->assertGreaterThan(0, count($objPersonArray));
     foreach ($objPersonArray as $objPerson) {
         $this->assertNotNull($objPerson->FirstName);
         $this->assertNotNull($objPerson->LastName);
     }
     $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget)), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff'))));
     $this->assertGreaterThan(0, count($objPersonArray));
     foreach ($objPersonArray as $objPerson) {
         $this->assertNotNull($objPerson->FirstName);
         $this->assertNotNull($objPerson->LastName);
         $this->assertNotNull($objPerson->GetVirtualAttribute('diff'));
     }
     $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('diff', QQ::MathOp('-', QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget)), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('diff'), 'DESC'), QQ::Expand(QQ::Virtual('diff')), QQ::Select(array(QQ::Virtual('diff'), QQN::Person()->FirstName, QQN::Person()->LastName))));
     $this->assertGreaterThan(0, count($objPersonArray));
     foreach ($objPersonArray as $objPerson) {
         $this->assertNotNull($objPerson->FirstName);
         $this->assertNotNull($objPerson->LastName);
         $this->assertNotNull($objPerson->GetVirtualAttribute('diff'));
     }
     $objPersonArray = Person::QueryArray(QQ::GreaterThan(QQ::Virtual('absdiff', QQ::Abs(QQ::Sub(QQN::Person()->ProjectAsManager->Spent, QQN::Person()->ProjectAsManager->Budget))), 20), QQ::Clause(QQ::OrderBy(QQ::Virtual('absdiff'), 'DESC'), QQ::Expand(QQ::Virtual('absdiff')), QQ::Select(array(QQ::Virtual('absdiff'), QQN::Person()->FirstName, QQN::Person()->LastName))));
     $this->assertGreaterThan(0, count($objPersonArray));
     foreach ($objPersonArray as $objPerson) {
         $this->assertNotNull($objPerson->FirstName);
         $this->assertNotNull($objPerson->LastName);
         $this->assertNotNull($objPerson->GetVirtualAttribute('absdiff'));
     }
 }