/** * @file test_GTalkBot.cpp * @brief Test case for class wosh::services::GTalkBot * **************************************************************************** * @version $Id: test_GTalkBot.cpp 586 2009-09-29 06:11:43Z alex $ * @author Alessandro Polo ****************************************************************************/ /* Copyright (c) 2007-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 "GTalkBotImpl.h" #include #include #define Q_OS_LINUX bool exitRequest = false; ////////////////////////////////////////////////////////////////// #ifdef Q_OS_LINUX #include #include #include void test_GTalkBot_signal_handler(int sig) { switch(sig) { case SIGHUP: case SIGTERM: case SIGINT: exitRequest = true; break; } } void test_GTalkBot_registerSignals() { signal (SIGINT, test_GTalkBot_signal_handler); signal (SIGTERM, test_GTalkBot_signal_handler); signal (SIGHUP, test_GTalkBot_signal_handler); } #endif ////////////////////////////////////////////////////////////////// using namespace std; using namespace wosh; using namespace wosh::services; string bot_account = "BOT_ACCOUNT@gmail.com"; // BOT ACCOUNT NAME; string bot_password = "BOT_PASSWORD"; // BOT ACCOUNT PASSWORD; string friend_account = "USER@gmail.com"; // TYPE HERE A FRIEND OF BOT'S ACCOUNT, PROBABLY YOURSELF; void test_class_GTalkBot(); int test_GTalkBot() { Log::log( "test_GTalkBot() : Starting TEST" ); test_class_GTalkBot(); Log::log( "test_GTalkBot() : Finished TEST" ); return 0; } void test_class_GTalkBot() { Log::log( " test_class_GTalkBot() : Starting TEST for class 'GTalkBotImpl'" ); #ifdef Q_OS_LINUX test_GTalkBot_registerSignals(); #endif Logger log; GTalkBotImpl gbot; // setup std::cout << "Enter account: "; std::cin >> bot_account; std::cout << "Enter password: "; std::cin >> bot_password; gbot.setServer( "talk.google.com", 5222 ); gbot.setAccount( bot_account, bot_password ); gbot.setAutoPresence( true ); gbot.setLogger( &log ); // connect gbot.startThread(); string message; // loop qDebug() << "Type 'QUIT' or CTRL-C to exit."; while( true ) { Thread::sleepForMSec(100); if ( exitRequest ) break; std::cin >> message; if ( message == "QUIT" ) break; gbot.sendMessage(friend_account, message); } // exit gbot.quitThread(); Log::log( " test_class_GTalkBot() : Finished TEST for class 'GTalkBot'" ); } int main() { return test_GTalkBot(); }