--- /dev/null
+<?php
+
+namespace RedUNIT\Base;
+
+use RedUNIT\Base as Base;
+use RedBeanPHP\Facade as R;
+use RedBeanPHP\Logger as Logger;
+use RedBeanPHP\Logger\RDefault as RDefault;
+
+/**
+ * Logging
+ *
+ * Tests the Query Logging tools that are part of RedBeanPHP.
+ *
+ * @file RedUNIT/Base/Logging.php
+ * @desc Tests Logging facilities.
+ * @author Gabor de Mooij and the RedBeanPHP Community
+ * @license New BSD/GPLv2
+ *
+ * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community.
+ * This source file is subject to the New BSD/GPLv2 License that is bundled
+ * with this source code in the file license.txt.
+ */
+class Logging extends Base
+{
+ /**
+ * Test basic logging functionality.
+ *
+ * @return void
+ */
+ public function testBasicLogging()
+ {
+ R::nuke();
+ R::startLogging();
+ R::store( R::dispense( 'book' ) );
+ $logs = R::getLogs();
+ $count = count( $logs );
+ asrt( ( count( $logs ) > 0 ), TRUE );
+ asrt( ( R::getLogger() instanceof Logger ), TRUE );
+ R::stopLogging();
+ R::store( R::dispense( 'book' ) );
+ $logs = R::getLogs();
+ asrt( ( count( $logs ) === 0 ), TRUE );
+ }
+
+ /**
+ * Can we manually set a logger and enable logging?
+ *
+ * @return void
+ */
+ public function testCanSetLogger()
+ {
+ R::nuke();
+ R::store( R::dispense( 'bean' ) );
+ $logger = new RDefault;
+ $logger->setMode( RDefault::C_LOGGER_ARRAY );
+ $database = R::getDatabaseAdapter()->getDatabase();
+ $database->setLogger( $logger );
+ asrt( $database->getLogger(), $logger );
+ $database->setEnableLogging( FALSE );
+ $logs = $logger->getLogs();
+ asrt( is_array( $logs ), TRUE );
+ asrt( count( $logs ), 0 );
+ $database->setEnableLogging( TRUE );
+ $logs = $logger->getLogs();
+ asrt( is_array( $logs ), TRUE );
+ asrt( count( $logs ), 0 );
+ R::findOne( 'bean' ); //writes 3 log entries
+ $logs = $logger->getLogs();
+ asrt( is_array( $logs ), TRUE );
+ asrt( count( $logs ), 3 );
+ }
+
+ /**
+ * Test query counter.
+ *
+ * @return void
+ */
+ public function testQueryCount()
+ {
+ R::nuke();
+ R::store( R::dispense( 'bean' ) );
+ R::resetQueryCount();
+ asrt( R::getQueryCount(), 0 );
+ R::findOne( 'bean' );
+ asrt( R::getQueryCount(), 1 );
+ R::resetQueryCount();
+ asrt( R::getQueryCount(), 0 );
+ R::findOne( 'bean' );
+ R::findOne( 'bean' );
+ R::findOne( 'bean' );
+ asrt( R::getQueryCount(), 0 );
+ R::store( R::dispense( 'bean2' ) );
+ R::resetQueryCount();
+ R::findOne( 'bean' );
+ R::findOne( 'bean2' );
+ asrt( R::getQueryCount(), 2 );
+ R::resetQueryCount();
+ R::findOne( 'bean', ' id < 100' );
+ R::findOne( 'bean', ' id < 101' );
+ R::findOne( 'bean', ' id < 102' );
+ R::findOne( 'bean', ' id < 103' );
+ asrt( R::getQueryCount(), 4 );
+ R::findOne( 'bean', ' id < 100' );
+ R::findOne( 'bean', ' id < 101' );
+ R::findOne( 'bean', ' id < 102' );
+ R::findOne( 'bean', ' id < 103' );
+ asrt( R::getQueryCount(), 4 );
+ R::findOne( 'bean', ' id < 104' );
+ asrt( R::getQueryCount(), 5 );
+ }
+}