/** * @file test_AimlQBot.cpp * @brief Test classes: wosh::devices::AimlQBot * * @version $Id: test_AimlQBot.cpp 9 2009-03-01 08:57:13Z alex $ * @author Alessandro Polo ****************************************************************************/ /* Copyright (c) 2009, WOSH - Wide Open Smart Home * by Alessandro Polo - OpenSmartHome.com * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the OpenSmartHome.com WOSH nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Alessandro Polo ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Alessandro Polo BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include #include #include "AimlQBot.h" #include #define Q_OS_LINUX bool exitRequest = false; ////////////////////////////////////////////////////////////////// #ifdef Q_OS_LINUX #include #include #include void test_AimlQBot_signal_handler(int sig) { switch(sig) { case SIGHUP: case SIGTERM: case SIGINT: exitRequest = true; break; } } void test_AimlQBot_registerSignals() { signal (SIGINT, test_AimlQBot_signal_handler); signal (SIGTERM, test_AimlQBot_signal_handler); signal (SIGHUP, test_AimlQBot_signal_handler); } #endif ////////////////////////////////////////////////////////////////// using namespace std; using namespace wosh; using namespace wosh::services; void test_class_AimlQBot(); int test_AimlQBot() { Log::log( "test_AimlQBot() : Starting TEST" ); test_class_AimlQBot(); Log::log( "test_AimlQBot() : Finished TEST" ); return 0; } void test_class_AimlQBot() { Log::log( " test_class_AimlQBot() : Starting TEST for class 'AimlQBot'" ); #ifdef Q_OS_LINUX test_AimlQBot_registerSignals(); #endif Logger log; AimlQBot qbot; qbot.setLogger( &log ); // setup string aimlSet = "English"; string basedir = "/shared/WOSH3/var/aiml/"; qbot.loadVars( basedir ); qbot.loadSubstitutions( basedir ); qbot.loadFolderSet( basedir + "aiml_sets/" + aimlSet + "/" ); char buf[256]; string buffer; // loop qDebug() << "HERE!"; while( true ) { std::cout << "You: "; std::cin.getline(buf, 256); buffer.assign(buf); if ( buffer == "exit" ) break; //qDebug() << "'" << buffer.c_str() << "'" << buffer.size(); if ( exitRequest ) break; std::cout << "Bot: " << qbot.evaluate( buffer ) << endl; // } Log::log( " test_class_AimlQBot() : Finished TEST for class 'AimlQBot'" ); } int main() { return test_AimlQBot(); }