Reactos
at master 74 lines 2.4 kB view raw
1#ifndef APITESTS_MSGTRACE_H 2#define APITESTS_MSGTRACE_H 3 4typedef enum _MSG_TYPE 5{ 6 SENT, 7 POST, 8 HOOK, 9 EVENT, 10 SENT_RET, 11 MARKER 12} MSG_TYPE; 13 14typedef struct _MSG_ENTRY 15{ 16 int iwnd; 17 UINT msg; 18 MSG_TYPE type; 19 int param1; 20 int param2; 21} MSG_ENTRY; 22 23typedef struct _MSG_CACHE 24{ 25 MSG_ENTRY last_post_message; 26 MSG_ENTRY message_cache[100]; 27 int count; 28} MSG_CACHE; 29 30extern MSG_ENTRY empty_chain[]; 31extern MSG_CACHE default_cache; 32 33void record_message(MSG_CACHE* cache, int iwnd, UINT message, MSG_TYPE type, int param1,int param2); 34void compare_cache(MSG_CACHE* cache, const char* file, int line, MSG_ENTRY *msg_chain); 35void trace_cache(MSG_CACHE* cache, const char* file, int line); 36void empty_message_cache(MSG_CACHE* cache); 37 38/* filter messages that are affected by dwm */ 39static inline BOOL IsDWmMsg(UINT msg) 40{ 41 switch(msg) 42 { 43 case WM_NCPAINT: 44 case WM_ERASEBKGND: 45 case WM_PAINT: 46 case 0x031f: /*WM_DWMNCRENDERINGCHANGED*/ 47 return TRUE; 48 } 49 return FALSE; 50} 51 52static inline BOOL IseKeyMsg(UINT msg) 53{ 54 return (msg == WM_KEYUP || msg == WM_KEYDOWN); 55} 56 57#define COMPARE_CACHE(msg_chain) compare_cache(&default_cache, __FILE__, __LINE__, msg_chain) 58#define TRACE_CACHE() trace_cache(&default_cache, __FILE__, __LINE__) 59#define EMPTY_CACHE() empty_message_cache(&default_cache); 60#define RECORD_MESSAGE(...) record_message(&default_cache, ##__VA_ARGS__); 61 62#define COMPARE_CACHE_(cache, msg_chain) compare_cache(cache, __FILE__, __LINE__, msg_chain) 63#define TRACE_CACHE_(cache) trace_cache(cache, __FILE__, __LINE__) 64#define EMPTY_CACHE_(cache) empty_message_cache(cache); 65 66#define EXPECT_QUEUE_STATUS(expected, notexpected) \ 67 { \ 68 DWORD status = HIWORD(GetQueueStatus(QS_ALLEVENTS)); \ 69 ok(((status) & (expected))== (expected),"wrong queue status. expected %li, and got %li\n", (DWORD)(expected), status); \ 70 if(notexpected) \ 71 ok((status & (notexpected))!=(notexpected), "wrong queue status. got non expected %li\n", (DWORD)(notexpected)); \ 72 } 73 74#endif