static void test_type2s() { expect2("int (* (f (char *))) (float);", "function", "int (* (char *)) (float)"); expect2("int (*f) (char *, int);", "pointer", "int (*) (char *, int)"); expect2("const int a;", "int", "const int"); expect2("const int * restrict b;", "pointer", "const int * restrict"); expect2("int *a[10];", "array", "int *[10]"); expect2("void (*a[10]) (int *a, const char *c);", "array", "void (*[10]) (int *, const char *)"); expect2("void (* ((*f) (char *))) (int);", "pointer", "void (* (*) (char *)) (int)"); expect2("void (* (* f(char *))) (int);", "function", "void (** (char *)) (int)"); }
static void test_ps_userstyle(void) { static DWORD style[17] = {0, 2, 0, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 17}; static DWORD bad_style[5] = {0, 0, 0, 0, 0}; static DWORD bad_style2[5] = {4, 7, 8, 3, -1}; LOGBRUSH lb; HPEN pen; INT size, i; struct { EXTLOGPEN elp; DWORD style_data[15]; } ext_pen; lb.lbColor = 0x00ff0000; lb.lbStyle = BS_SOLID; lb.lbHatch = 0; pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 3, NULL); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 0, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect2(0xdeadbeef, ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 17, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, -1, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(0xdeadbeef, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style2); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 16, style); ok(pen != 0, "ExtCreatePen should not fail\n"); size = GetObject(pen, sizeof(ext_pen), &ext_pen); expect(FIELD_OFFSET(EXTLOGPEN,elpStyleEntry[16]), size); for(i = 0; i < 16; i++) expect(style[i], ext_pen.elp.elpStyleEntry[i]); DeleteObject(pen); }
static void test_ps_userstyle(void) { static DWORD style[17] = {0, 2, 0, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 17}; static DWORD bad_style[5] = {0, 0, 0, 0, 0}; static DWORD bad_style2[5] = {4, 7, 8, 3, -1}; LOGBRUSH lb; HPEN pen; INT size, i; char buffer[offsetof(EXTLOGPEN, elpStyleEntry) + 16 * sizeof(DWORD)]; EXTLOGPEN *ext_pen = (EXTLOGPEN *)buffer; lb.lbColor = 0x00ff0000; lb.lbStyle = BS_SOLID; lb.lbHatch = 0; pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 3, NULL); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 0, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect2(0xdeadbeef, ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 17, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, -1, style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(0xdeadbeef, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 5, bad_style2); ok(pen == 0, "ExtCreatePen should fail\n"); expect(ERROR_INVALID_PARAMETER, GetLastError()); DeleteObject(pen); SetLastError(0xdeadbeef); pen = ExtCreatePen(PS_GEOMETRIC | PS_USERSTYLE, 50, &lb, 16, style); ok(pen != 0, "ExtCreatePen should not fail\n"); size = GetObjectW(pen, sizeof(buffer), ext_pen); ok(size == offsetof(EXTLOGPEN, elpStyleEntry[16]), "wrong size %d\n", size); for(i = 0; i < 16; i++) expect(style[i], ext_pen->elpStyleEntry[i]); DeleteObject(pen); }