1//------------------------------------------------------------------------------ 2// AppQuitRequestedTester.cpp 3// 4//------------------------------------------------------------------------------ 5 6// Standard Includes ----------------------------------------------------------- 7#include <stdio.h> 8 9// System Includes ------------------------------------------------------------- 10#include <Message.h> 11#include <OS.h> 12#include <Application.h> 13#include <Handler.h> 14#include <Looper.h> 15#include <String.h> 16 17// Project Includes ------------------------------------------------------------ 18#include <TestShell.h> 19#include <TestUtils.h> 20#include <cppunit/TestAssert.h> 21 22// Local Includes -------------------------------------------------------------- 23#include "AppRunner.h" 24#include "AppQuitRequestedTester.h" 25 26// Local Defines --------------------------------------------------------------- 27 28// Globals --------------------------------------------------------------------- 29 30//------------------------------------------------------------------------------ 31 32// check_output 33static 34void 35check_output(AppRunner &runner, const char *expectedOutput) 36{ 37 BString buffer; 38 CHK(runner.GetOutput(&buffer) == B_OK); 39if (buffer != expectedOutput) 40printf("result is `%s', but should be `%s'\n", buffer.String(), 41expectedOutput); 42 CHK(buffer == expectedOutput); 43} 44 45/* 46 bool QuitRequested() 47 @case 1 return false the first time, true the second time it is 48 invoked 49 @results Should not quit after the first time, but after the 50 second one. 51*/ 52void AppQuitRequestedTester::QuitRequestedTest1() 53{ 54 BApplication app("application/x-vnd.obos-app-quit-requested-test"); 55 const char *output = 56 "error: 0\n" 57 "InitCheck(): 0\n" 58 "BApplication::ReadyToRun()\n" 59 "BApplication::QuitRequested()\n" 60 "BApplication::QuitRequested()\n" 61 "BApplication::Run() done: 1\n" 62 "BApplication::~BApplication()\n"; 63 // run the app 64 AppRunner runner; 65 CHK(runner.Run("AppQuitRequestedTestApp1") == B_OK); 66 runner.WaitFor(false); 67 // get the output and compare the result 68 check_output(runner, output); 69} 70 71 72Test* AppQuitRequestedTester::Suite() 73{ 74 TestSuite* SuiteOfTests = new TestSuite; 75 76 ADD_TEST4(BApplication, SuiteOfTests, AppQuitRequestedTester, 77 QuitRequestedTest1); 78 79 return SuiteOfTests; 80} 81 82 83 84