BApplication(const char *signature)case 1: signature is NULL =>Should print error message and quit.case 2: signature is no valid MIME string =>Should print error message and quit.case 3: signature is a valid MIME string, but doesn't have the "application"supertype =>Should print error message and quit.case 4: signature is a valid MIME string with "application" supertype,but a different one than in the app attributes/resources =>Should print warning message and continue.InitCheck() should return B_OK.case 5: signature is a valid MIME string with "application" supertype,and the same as in the app attributes/resources =>Shouldn't print anything at all and continue.InitCheck() should return B_OK.BApplication(const char *signature, status_t *error)cases similar to those of BApplication(const char *), if error is NULL,otherwise the app does not quit and error is set to the same value asreturned by InitCheck(), which is B_BAD_VALUE on error.thread_id Run()case 1: launch the app two times: B_MULTIPLE_LAUNCH | B_ARGV_ONLY,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: ReadyToRun(), QuitRequested()case 2: launch the app two times: B_MULTIPLE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: ArgvReceived(), ReadyToRun(), QuitRequested()case 3: launch the app two times: B_MULTIPLE_LAUNCH,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: ReadyToRun(), QuitRequested()case 4: launch the app two times: B_MULTIPLE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: ArgvReceived(), ReadyToRun(), QuitRequested()case 5: launch the app two times: B_SINGLE_LAUNCH | B_ARGV_ONLY,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 6: launch the app two times: B_SINGLE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), ArgvReceived(),QuitRequested()second app: quitscase 7: launch the app two times: B_SINGLE_LAUNCH,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 8: launch the app two times: B_SINGLE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), ArgvReceived(),QuitRequested()second app: quitscase 9: launch two apps with the same signature: B_SINGLE_LAUNCH | B_ARGV_ONLY,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: ReadyToRun(), QuitRequested()case 10:launch two apps with the same signature: B_SINGLE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: ArgvReceived(), ReadyToRun(), QuitRequested()case 11:launch two apps with the same signature: B_SINGLE_LAUNCH,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: ReadyToRun(), QuitRequested()case 12:launch two apps with the same signature: B_SINGLE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: ArgvReceived(), ReadyToRun(), QuitRequested()case 13:launch the app two times: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 14:launch the app two times: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: quitscase 15:launch the app two times: B_EXCLUSIVE_LAUNCH,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 16:launch the app two times: B_EXCLUSIVE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), ArgvReceived(),QuitRequested()second app: quitscase 17:launch two apps with the same signature:B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 18:launch two apps with the same signature:B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: quitscase 19:launch two apps with the same signature: B_EXCLUSIVE_LAUNCH,no command line args, send B_QUIT_REQUESTED to both of them =>first app: ReadyToRun(), QuitRequested()second app: quitscase 20:launch two apps with the same signature: B_EXCLUSIVE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), ArgvReceived(),QuitRequested()second app: quitscase 21:launch the app two times: first: B_EXCLUSIVE_LAUNCH,second: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), ArgvReceived(),QuitRequested()second app: quitscase 22:launch the app two times: first: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,second: B_EXCLUSIVE_LAUNCH,command line args, send B_QUIT_REQUESTED to both of them =>first app: ArgvReceived(), ReadyToRun(), QuitRequested()second app: quitsvoid Quit()case 1: not running application =>Should delete the application object.case 2: running application, call from looper thread =>Run() should return. Should not delete the application object.case 3: running application, call from other thread =>Run() should return. Should not delete the application object.case 4: running application, call from other thread, but don't lock before =>Should print error message, but proceed anyway. Run() should return.Should not delete the application object.bool QuitRequested()case 1: return false the first time, true the second time it is invoked =>Should not quit after the first time, but after the second one.