1BHandler(const char* name) 2case 1: name is non-NULL; BHandler::Name() should return that name 3case 2: name is NULL; BHandler::Name() should return NULL 4 5BHandler(BMessage* archive) 6case 1: if archive has field "_name", BHandler::Name() should return that name 7case 2: if archive has no field "_name", BHandler::Name() should return NULL 8case 3: archive is NULL 9 10Archive(BMessage *data, bool deep = true) 11case 1: data is NULL, deep is false 12case 2: data is NULL, deep is true 13case 3: data is valid, deep is false 14case 4: data is valid, deep is true 15 16Instantiate(BMessage *data) 17case 1: data is NULL 18case 2: data is valid, has field "_name"; BHandler::Name() should return that name 19case 3: data is valid, has no field "_name"; BHandler::Name() should return NULL 20 21SetName(const char *name) 22Name() 23case 1: name is NULL; BHandler::Name() should return NULL 24case 2: name is valid; BHandler::Name should return that name 25 26Perform(perform_code d, void *arg) 27case 1: feed meaningless data, should return B_ERROR 28 29IsWatched() 30case 1: No added watchers; should return false 31case 2: Add watcher, should return true; remove watcher, should return false 32 33Looper() 34case 1: Not added to a BLooper, should return NULL 35case 2: Added to a BLooper, should return that BLooper; 36 remove from BLooper, should return NULL 37 38SetNextHandler(BHandler *handler) 39NextHandler() 40This BHandler and handler must be part of the same chain (i.e., belong to the 41same BLooper) and the BLooper they belong to must be locked. 42case 1: Handler1 and Handler2 do not belong to a BLooper 43case 2: Handler1 belongs to a BLooper (which is unlocked), Handler2 does not 44case 3: Handler1 belongs to a BLooper (which is locked), Handler2 does not 45case 4: Handler1 does not belong to a BLooper, Handler2 does (which is unlocked) 46case 5: Handler1 does not belong to a BLooper, Handler2 does (which is locked) 47case 6: Handler1 and Handler2 belong to different BLoopers, which are unlocked 48case 7: Handler1 and Handler2 belong to different BLoopers, and Handler1's 49 BLooper is locked; Handler2's is not 50case 8: Handler1 and Handler2 belong to different BLoopers, and Handler1's 51 BLooper is unlocked; Handler2's is locked 52case 9: Handler1 and Handler2 belong to different BLoopers, which are both locked 53case 10: Handler1 and Handler2 belong to the same BLooper, which is unlocked 54case 11: Handler1 and Handler2 belong to the same BLooper, which is locked 55case 12: Default constructed handler 56case 13: Handler belongs to BLooper 57 58AddFilter(BMessageFilter *filter) 59case 1: filter is NULL 60case 2: filter is valid, handler has no looper 61case 3: filter is valid, handler has looper, looper isn't locked 62case 4: filter is valid, handler has looper, looper is locked 63 64RemoveFilter(BMessageFilter *filter) 65case 1: filter is NULL 66case 2: filter is valid, handler has no looper 67case 3: filter is valid, handler has looper, looper isn't locked 68case 4: filter is valid, handler has looper, looper is locked 69case 5: filter is valid, but not owned by handler, handler has no looper 70case 6: filter is valid, but not owned by handler, handler has looper, looper isn't locked 71case 7: filter is valid, but not owned by handler, handler has looper, looper is locked 72 73SetFilterList(BList *filters) 74case 1: filters is NULL 75case 2: filters is valid, handler has no looper 76case 3: filters is valid, handler has looper, looper isn't locked 77case 4: filters is valid, handler has looper, looper is locked 78case 5: filters and handler are valid; then NULL filters is passed 79 80FilterList() 81case 1: default constructed BHandler 82Other cases are handled in SetFilterList() tests 83 84LockLooper() 85case 1: handler has no looper 86case 2: handler has a looper which is initially unlocked 87case 3: handler has a looper which is initially locked 88case 4: handler has a looper which is locked in another thread 89 90LockLooperWithTimeout(bigtime_t timeout) 91case 1: handler has no looper 92case 2: handler has a looper which is initially unlocked 93case 3: handler has a looper which is initially locked 94case 4: handler has a looper which is locked in another thread 95 96UnlockLooper() 97case 1: handler has no looper 98case 2: handler has a looper which is initially unlocked 99case 3: handler has a looper which is initially locked 100case 4: handler has a looper which is locked in another thread 101 102MessageReceived(BMessage *message) 103ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, 104 int32 form, const char *property) 105GetSupportedSuites(BMessage *data) 106StartWatching(BMessenger, uint32 what) 107StartWatchingAll(BMessenger) 108StopWatching(BMessenger, uint32 what) 109StopWatchingAll(BMessenger) 110StartWatching(BHandler *, uint32 what) 111StartWatchingAll(BHandler *) 112StopWatching(BHandler *, uint32 what) 113StopWatchingAll(BHandler *) 114 115SendNotices(uint32 what, const BMessage * = 0)