BHandler(const char* name)case 1: name is non-NULL; BHandler::Name() should return that namecase 2: name is NULL; BHandler::Name() should return NULLBHandler(BMessage* archive)case 1: if archive has field "_name", BHandler::Name() should return that namecase 2: if archive has no field "_name", BHandler::Name() should return NULLcase 3: archive is NULLArchive(BMessage *data, bool deep = true)case 1: data is NULL, deep is falsecase 2: data is NULL, deep is truecase 3: data is valid, deep is falsecase 4: data is valid, deep is trueInstantiate(BMessage *data)case 1: data is NULLcase 2: data is valid, has field "_name"; BHandler::Name() should return that namecase 3: data is valid, has no field "_name"; BHandler::Name() should return NULLSetName(const char *name)Name()case 1: name is NULL; BHandler::Name() should return NULLcase 2: name is valid; BHandler::Name should return that namePerform(perform_code d, void *arg)case 1: feed meaningless data, should return B_ERRORIsWatched()case 1: No added watchers; should return falsecase 2: Add watcher, should return true; remove watcher, should return falsecase 3: Add watcher, should return true; send notice, remove watcher, should return falsecase 4: Remove watcher, should return falsecase 5: Send notices without watchers, should return falseLooper()case 1: Not added to a BLooper, should return NULLcase 2: Added to a BLooper, should return that BLooper;remove from BLooper, should return NULLSetNextHandler(BHandler *handler)NextHandler()This BHandler and handler must be part of the same chain (i.e., belong to thesame BLooper) and the BLooper they belong to must be locked.case 1: Handler1 and Handler2 do not belong to a BLoopercase 2: Handler1 belongs to a BLooper (which is unlocked), Handler2 does notcase 3: Handler1 belongs to a BLooper (which is locked), Handler2 does notcase 4: Handler1 does not belong to a BLooper, Handler2 does (which is unlocked)case 5: Handler1 does not belong to a BLooper, Handler2 does (which is locked)case 6: Handler1 and Handler2 belong to different BLoopers, which are unlockedcase 7: Handler1 and Handler2 belong to different BLoopers, and Handler1'sBLooper is locked; Handler2's is notcase 8: Handler1 and Handler2 belong to different BLoopers, and Handler1'sBLooper is unlocked; Handler2's is lockedcase 9: Handler1 and Handler2 belong to different BLoopers, which are both lockedcase 10: Handler1 and Handler2 belong to the same BLooper, which is unlockedcase 11: Handler1 and Handler2 belong to the same BLooper, which is lockedcase 12: Default constructed handlercase 13: Handler belongs to BLooperAddFilter(BMessageFilter *filter)case 1: filter is NULLcase 2: filter is valid, handler has no loopercase 3: filter is valid, handler has looper, looper isn't lockedcase 4: filter is valid, handler has looper, looper is lockedRemoveFilter(BMessageFilter *filter)case 1: filter is NULLcase 2: filter is valid, handler has no loopercase 3: filter is valid, handler has looper, looper isn't lockedcase 4: filter is valid, handler has looper, looper is lockedcase 5: filter is valid, but not owned by handler, handler has no loopercase 6: filter is valid, but not owned by handler, handler has looper, looper isn't lockedcase 7: filter is valid, but not owned by handler, handler has looper, looper is lockedSetFilterList(BList *filters)case 1: filters is NULLcase 2: filters is valid, handler has no loopercase 3: filters is valid, handler has looper, looper isn't lockedcase 4: filters is valid, handler has looper, looper is lockedcase 5: filters and handler are valid; then NULL filters is passedFilterList()case 1: default constructed BHandlerOther cases are handled in SetFilterList() testsLockLooper()case 1: handler has no loopercase 2: handler has a looper which is initially unlockedcase 3: handler has a looper which is initially lockedcase 4: handler has a looper which is locked in another threadLockLooperWithTimeout(bigtime_t timeout)case 1: handler has no loopercase 2: handler has a looper which is initially unlockedcase 3: handler has a looper which is initially lockedcase 4: handler has a looper which is locked in another threadUnlockLooper()case 1: handler has no loopercase 2: handler has a looper which is initially unlockedcase 3: handler has a looper which is initially lockedcase 4: handler has a looper which is locked in another threadMessageReceived(BMessage *message)ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier,int32 form, const char *property)GetSupportedSuites(BMessage *data)StartWatching(BMessenger, uint32 what)StartWatchingAll(BMessenger)StopWatching(BMessenger, uint32 what)StopWatchingAll(BMessenger)StartWatching(BHandler *, uint32 what)StartWatchingAll(BHandler *)StopWatching(BHandler *, uint32 what)StopWatchingAll(BHandler *)SendNotices(uint32 what, const BMessage * = 0)