void test_lisp_parse_1() { Value parsed = parse(blob_s("(test 1 2 3)")); expect_str(nth(parsed, 0), ":test"); expect(nth(parsed, 1).raw == int_value(1).raw); expect_str(parsed, "[:test, 1, 2, 3]"); decref(parsed); }
void test_map() { Value a = range(0, 4); expect_str(a, "[0, 1, 2, 3]"); a = map(a, increment); expect_str(a, "[1, 2, 3, 4]"); a = map(a, increment); expect_str(a, "[2, 3, 4, 5]"); decref(a); }
void test_filter() { Value a = range(0, 10); Value filtered = filter(a, is_even); expect_str(filtered, "[0, 2, 4, 6, 8]"); decref(filtered); }
static int expect(char *str, int fn) { char *bptr, *sptr; char buf[BUFSIZ]; bptr = buf; for (sptr = str; *sptr; sptr++) { if (*sptr == '\\') { switch (*++sptr) { case 'H': *bptr++ = '\0'; if (expect_str(buf, fn) == FAIL) { return (FAIL); } if (wait_for_hangup(fn) == FAIL) { return (FAIL); } bptr = buf; continue; case '\\': *bptr++ = '\\'; continue; default: *bptr++ = '\\'; *bptr++ = *sptr; continue; } } else *bptr++ = *sptr; } *bptr = '\0'; if (expect_str(buf, fn) == FAIL) { return (FAIL); } return (0); }
int tty_dial(int fd, char *phone, char *dialer, char *sub, char *expsend) { char *ptr; ptr = strtok(expsend, WHITE); /* first expect string */ for ( ; ; ) { DEBUG_NONL("expect = %s\nread: ", ptr); if (expect_str(fd, ptr) < 0) return(-1); if ( (ptr = strtok(NULL, WHITE)) == NULL) return(0); /* at the end of the expect/send */ DEBUG_NONL("send = %s\nwrite: ", ptr); if (send_str(fd, ptr, phone, 0) < 0) return(-1); if ( (ptr = strtok(NULL, WHITE)) == NULL) return(0); /* at the end of the expect/send */ } }
static void test_getters_setters(HWND parent_wnd, INT nTabs) { HWND hTab; RECT rTab; INT nTabsRetrieved; INT rowCount; INT dpi; HDC hdc; ok(parent_wnd != NULL, "no parent window!\n"); flush_sequences(sequences, NUM_MSG_SEQUENCES); hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs); ok(hTab != NULL, "Failed to create tab control\n"); if(!winetest_interactive) ok_sequence(sequences, TAB_SEQ_INDEX, add_tab_to_parent, "Tab sequence, after adding tab control to parent", TRUE); else ok_sequence(sequences, TAB_SEQ_INDEX, add_tab_to_parent_interactive, "Tab sequence, after adding tab control to parent", TRUE); if(!winetest_interactive) ok_sequence(sequences, PARENT_SEQ_INDEX, add_tab_control_parent_seq, "Parent after sequence, adding tab control to parent", TRUE); else ok_sequence(sequences, PARENT_SEQ_INDEX, add_tab_control_parent_seq_interactive, "Parent after sequence, adding tab control to parent", TRUE); flush_sequences(sequences, NUM_MSG_SEQUENCES); ok(SendMessage(hTab, TCM_SETMINTABWIDTH, 0, -1) > 0,"TCM_SETMINTABWIDTH returned < 0\n"); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Set minTabWidth test parent sequence", FALSE); /* Testing GetItemCount */ flush_sequences(sequences, NUM_MSG_SEQUENCES); nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0); expect(nTabs, nTabsRetrieved); ok_sequence(sequences, TAB_SEQ_INDEX, get_item_count_seq, "Get itemCount test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset itemCount test parent sequence", FALSE); /* Testing GetRowCount */ flush_sequences(sequences, NUM_MSG_SEQUENCES); rowCount = SendMessage(hTab, TCM_GETROWCOUNT, 0, 0); expect(1, rowCount); ok_sequence(sequences, TAB_SEQ_INDEX, get_row_count_seq, "Get rowCount test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Get rowCount test parent sequence", FALSE); /* Testing GetItemRect */ flush_sequences(sequences, NUM_MSG_SEQUENCES); ok(SendMessage(hTab, TCM_GETITEMRECT, 0, (LPARAM) &rTab), "GetItemRect failed.\n"); hdc = GetDC(hTab); dpi = GetDeviceCaps(hdc, LOGPIXELSX); ReleaseDC(hTab, hdc); CheckSize(hTab, dpi, -1 , "Default Width"); ok_sequence(sequences, TAB_SEQ_INDEX, get_item_rect_seq, "Get itemRect test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Get itemRect test parent sequence", FALSE); /* Testing CurFocus */ { INT focusIndex; flush_sequences(sequences, NUM_MSG_SEQUENCES); /* Testing CurFocus with largest appropriate value */ SendMessage(hTab, TCM_SETCURFOCUS, nTabs-1, 0); focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0); expect(nTabs-1, focusIndex); /* Testing CurFocus with negative value */ SendMessage(hTab, TCM_SETCURFOCUS, -10, 0); focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0); expect(-1, focusIndex); /* Testing CurFocus with value larger than number of tabs */ focusIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0); todo_wine{ expect(-1, focusIndex); } SendMessage(hTab, TCM_SETCURFOCUS, nTabs+1, 0); focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0); expect(1, focusIndex); ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_focus_seq, "Getset curFoc test sequence", FALSE); } /* Testing CurSel */ { INT selectionIndex; INT focusIndex; flush_sequences(sequences, NUM_MSG_SEQUENCES); /* Testing CurSel with largest appropriate value */ selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs-1, 0); expect(1, selectionIndex); selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0); expect(nTabs-1, selectionIndex); /* Focus should switch with selection */ focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0); expect(nTabs-1, focusIndex); /* Testing CurSel with negative value */ SendMessage(hTab, TCM_SETCURSEL, -10, 0); selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0); expect(-1, selectionIndex); /* Testing CurSel with value larger than number of tabs */ selectionIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0); expect(-1, selectionIndex); selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs+1, 0); expect(-1, selectionIndex); selectionIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0); expect(1, selectionIndex); ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_sel_seq, "Getset curSel test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset curSel test parent sequence", FALSE); } /* Testing ExtendedStyle */ { DWORD prevExtendedStyle; DWORD extendedStyle; flush_sequences(sequences, NUM_MSG_SEQUENCES); /* Testing Flat Separators */ extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0); prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_FLATSEPARATORS); expect(extendedStyle, prevExtendedStyle); extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0); todo_wine{ expect(TCS_EX_FLATSEPARATORS, extendedStyle); } /* Testing Register Drop */ prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_REGISTERDROP); expect(extendedStyle, prevExtendedStyle); extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0); todo_wine{ expect(TCS_EX_REGISTERDROP, extendedStyle); } ok_sequence(sequences, TAB_SEQ_INDEX, getset_extended_style_seq, "Getset extendedStyle test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset extendedStyle test parent sequence", FALSE); } /* Testing UnicodeFormat */ { INT unicodeFormat; flush_sequences(sequences, NUM_MSG_SEQUENCES); unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0); todo_wine{ expect(0, unicodeFormat); } unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0); expect(1, unicodeFormat); unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, FALSE, 0); expect(1, unicodeFormat); unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0); expect(0, unicodeFormat); unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0); expect(0, unicodeFormat); ok_sequence(sequences, TAB_SEQ_INDEX, getset_unicode_format_seq, "Getset unicodeFormat test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset unicodeFormat test parent sequence", FALSE); } /* Testing GetSet Item */ { TCITEM tcItem; char szText[32] = "New Label"; flush_sequences(sequences, NUM_MSG_SEQUENCES); tcItem.mask = TCIF_TEXT; tcItem.pszText = &szText[0]; tcItem.cchTextMax = sizeof(szText); ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("New Label", tcItem.pszText); ok ( SendMessage(hTab, TCM_GETITEM, 1, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("Tab 2", tcItem.pszText); ok_sequence(sequences, TAB_SEQ_INDEX, getset_item_seq, "Getset item test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset item test parent sequence", FALSE); } /* Testing GetSet ToolTip */ { HWND toolTip; char toolTipText[32] = "ToolTip Text Test"; flush_sequences(sequences, NUM_MSG_SEQUENCES); toolTip = create_tooltip(hTab, toolTipText); SendMessage(hTab, TCM_SETTOOLTIPS, (LPARAM) toolTip, 0); ok (toolTip == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.\n"); SendMessage(hTab, TCM_SETTOOLTIPS, 0, 0); ok (NULL == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.\n"); ok_sequence(sequences, TAB_SEQ_INDEX, getset_tooltip_seq, "Getset tooltip test sequence", TRUE); ok_sequence(sequences, PARENT_SEQ_INDEX, getset_tooltip_parent_seq, "Getset tooltip test parent sequence", TRUE); } DestroyWindow(hTab); }
static void test_ACLMulti(void) { const char *strings1[] = {"a", "c", "e"}; const char *strings2[] = {"a", "b", "d"}; WCHAR exp[] = {'A','B','C',0}; IEnumString *obj; TestACL *acl1, *acl2; IACList *acl; IObjMgr *mgr; LPWSTR wstr; LPWSTR wstrtab[15]; LPVOID tmp; UINT i; stop_on_error(CoCreateInstance(&CLSID_ACLMulti, NULL, CLSCTX_INPROC, &IID_IEnumString, (LPVOID *)&obj)); stop_on_error(obj->lpVtbl->QueryInterface(obj, &IID_IACList, (LPVOID *)&acl)); ok(obj->lpVtbl->QueryInterface(obj, &IID_IACList2, &tmp) == E_NOINTERFACE, "Unexpected interface IACList2 in ACLMulti\n"); stop_on_error(obj->lpVtbl->QueryInterface(obj, &IID_IObjMgr, (LPVOID *)&mgr)); #if 0 /* IID_IEnumACString not defined yet in wine */ ole_ok(obj->lpVtbl->QueryInterface(obj, &IID_IEnumACString, &unk)); if (unk != NULL) unk->lpVtbl->Release(unk); #endif ok(obj->lpVtbl->Next(obj, 1, (LPOLESTR *)&tmp, &i) == S_FALSE, "Unexpected return from Next\n"); ok(i == 0, "Unexpected fetched value %d\n", i); ok(obj->lpVtbl->Next(obj, 44, (LPOLESTR *)&tmp, &i) == S_FALSE, "Unexpected return from Next\n"); ok(obj->lpVtbl->Skip(obj, 1) == E_NOTIMPL, "Unexpected return from Skip\n"); ok(obj->lpVtbl->Clone(obj, (IEnumString **)&tmp) == E_OUTOFMEMORY, "Unexpected return from Clone\n"); ole_ok(acl->lpVtbl->Expand(acl, exp)); acl1 = TestACL_Constructor(3, strings1); acl2 = TestACL_Constructor(3, strings2); stop_on_error(mgr->lpVtbl->Append(mgr, (IUnknown *)&acl1->IACList_iface)); stop_on_error(mgr->lpVtbl->Append(mgr, (IUnknown *)&acl2->IACList_iface)); ok(mgr->lpVtbl->Append(mgr, NULL) == E_FAIL, "Unexpected return from Append\n"); expect_str(obj, "a"); expect_str(obj, "c"); expect_str(obj, "e"); expect_str(obj, "a"); expect_str(obj, "b"); expect_str(obj, "d"); expect_end(obj); ole_ok(obj->lpVtbl->Reset(obj)); ok(acl1->pos == 0, "acl1 not reset\n"); ok(acl2->pos == 0, "acl2 not reset\n"); ole_ok(acl->lpVtbl->Expand(acl, exp)); ok(acl1->expcount == 1, "expcount - expected 1, got %d\n", acl1->expcount); ok(acl2->expcount == 0 /* XP */ || acl2->expcount == 1 /* Vista */, "expcount - expected 0 or 1, got %d\n", acl2->expcount); ole_ok(obj->lpVtbl->Next(obj, 15, wstrtab, &i)); ok(i == 1, "Expected i == 1, got %d\n", i); CoTaskMemFree(wstrtab[0]); ole_ok(obj->lpVtbl->Next(obj, 15, wstrtab, &i)); CoTaskMemFree(wstrtab[0]); ole_ok(obj->lpVtbl->Next(obj, 15, wstrtab, &i)); CoTaskMemFree(wstrtab[0]); ole_ok(obj->lpVtbl->Next(obj, 15, wstrtab, &i)); CoTaskMemFree(wstrtab[0]); ole_ok(acl->lpVtbl->Expand(acl, exp)); ok(acl1->expcount == 2, "expcount - expected 1, got %d\n", acl1->expcount); ok(acl2->expcount == 0 /* XP */ || acl2->expcount == 2 /* Vista */, "expcount - expected 0 or 2, got %d\n", acl2->expcount); acl1->expret = S_FALSE; ole_ok(acl->lpVtbl->Expand(acl, exp)); ok(acl1->expcount == 3, "expcount - expected 1, got %d\n", acl1->expcount); ok(acl2->expcount == 1 /* XP */ || acl2->expcount == 3 /* Vista */, "expcount - expected 0 or 3, got %d\n", acl2->expcount); acl1->expret = E_NOTIMPL; ole_ok(acl->lpVtbl->Expand(acl, exp)); ok(acl1->expcount == 4, "expcount - expected 1, got %d\n", acl1->expcount); ok(acl2->expcount == 2 /* XP */ || acl2->expcount == 4 /* Vista */, "expcount - expected 0 or 4, got %d\n", acl2->expcount); acl2->expret = E_OUTOFMEMORY; ok(acl->lpVtbl->Expand(acl, exp) == E_OUTOFMEMORY, "Unexpected Expand return\n"); acl2->expret = E_FAIL; ok(acl->lpVtbl->Expand(acl, exp) == E_FAIL, "Unexpected Expand return\n"); stop_on_error(mgr->lpVtbl->Remove(mgr, (IUnknown *)&acl1->IACList_iface)); ok(acl1->ref == 1, "acl1 not released\n"); expect_end(obj); obj->lpVtbl->Reset(obj); expect_str(obj, "a"); expect_str(obj, "b"); expect_str(obj, "d"); expect_end(obj); obj->lpVtbl->Release(obj); acl->lpVtbl->Release(acl); ok(mgr->lpVtbl->Release(mgr) == 0, "Unexpected references\n"); ok(acl1->ref == 1, "acl1 not released\n"); ok(acl2->ref == 1, "acl2 not released\n"); CoTaskMemFree(acl1); CoTaskMemFree(acl2); }
static void test_getset_item(void) { char szText[32] = "New Label"; const INT nTabs = 5; TCITEM tcItem; LPARAM lparam; DWORD ret; HWND hTab; hTab = CreateWindowA( WC_TABCONTROLA, "TestTab", WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | TCS_FIXEDWIDTH | TCS_OWNERDRAWFIXED, 10, 10, 300, 100, parent_wnd, NULL, NULL, 0); ok(GetParent(hTab) == NULL, "got %p, expected null parent\n", GetParent(hTab)); ret = SendMessageA(hTab, TCM_SETITEMEXTRA, sizeof(LPARAM)-1, 0); ok(ret == TRUE, "got %d\n", ret); /* set some item data */ tcItem.lParam = ~0; tcItem.mask = TCIF_PARAM; ret = SendMessageA(hTab, TCM_INSERTITEMA, 0, (LPARAM)&tcItem); ok(ret == 0, "got %d\n", ret); /* all sizeof(LPARAM) returned anyway when using sizeof(LPARAM)-1 size */ memset(&lparam, 0xaa, sizeof(lparam)); tcItem.lParam = lparam; tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, 0, (LPARAM)&tcItem); expect(TRUE, ret); /* everything higher specified size is preserved */ memset(&lparam, 0xff, sizeof(lparam)-1); ok(tcItem.lParam == lparam, "Expected 0x%lx, got 0x%lx\n", lparam, tcItem.lParam); DestroyWindow(hTab); hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs); ok(hTab != NULL, "Failed to create tab control\n"); /* passing invalid index should result in initialization to zero for members mentioned in mask requested */ /* valid range here is [0,4] */ memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_IMAGE; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); expect(0, tcItem.iImage); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_TEXT; tcItem.pszText = szText; szText[0] = 'a'; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); expect('a', szText[0]); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = 0; tcItem.dwState = TCIS_BUTTONPRESSED; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.dwState == 0, "Expected zero dwState, got %u\n", tcItem.dwState); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = TCIS_BUTTONPRESSED; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.dwState == 0, "Expected zero dwState\n"); /* check with negative index to be sure */ memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, -1, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, -2, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); flush_sequences(sequences, NUM_MSG_SEQUENCES); tcItem.mask = TCIF_TEXT; tcItem.pszText = &szText[0]; tcItem.cchTextMax = sizeof(szText); strcpy(szText, "New Label"); ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("New Label", tcItem.pszText); ok ( SendMessage(hTab, TCM_GETITEM, 1, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("Tab 2", tcItem.pszText); ok_sequence(sequences, TAB_SEQ_INDEX, getset_item_seq, "Getset item test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset item test parent sequence", FALSE); /* TCIS_BUTTONPRESSED doesn't depend on tab style */ memset(&tcItem, 0, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = TCIS_BUTTONPRESSED; ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); if (tcItem.dwState) { ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n"); /* next highlight item, test that dwStateMask actually masks */ tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_HIGHLIGHTED; tcItem.dwState = TCIS_HIGHLIGHTED; ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); ok (tcItem.dwState == TCIS_HIGHLIGHTED, "TCIS_HIGHLIGHTED should be set.\n"); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n"); } else win_skip( "Item state mask not supported\n" ); DestroyWindow(hTab); }
static void test_getset_item(HWND parent_wnd, INT nTabs) { TCITEM tcItem; DWORD ret; char szText[32] = "New Label"; HWND hTab; hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs); ok(hTab != NULL, "Failed to create tab control\n"); /* passing invalid index should result in initialization to zero for members mentioned in mask requested */ /* valid range here is [0,4] */ memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_IMAGE; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); expect(0, tcItem.iImage); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_TEXT; tcItem.pszText = szText; szText[0] = 'a'; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); expect('a', szText[0]); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = 0; tcItem.dwState = TCIS_BUTTONPRESSED; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.dwState == 0, "Expected zero dwState, got %u\n", tcItem.dwState); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = TCIS_BUTTONPRESSED; ret = SendMessage(hTab, TCM_GETITEM, 5, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.dwState == 0, "Expected zero dwState\n"); /* check with negative index to be sure */ memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, -1, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); memset(&tcItem, 0xcc, sizeof(tcItem)); tcItem.mask = TCIF_PARAM; ret = SendMessage(hTab, TCM_GETITEM, -2, (LPARAM)&tcItem); expect(FALSE, ret); ok(tcItem.lParam == 0, "Expected zero lParam, got %lu\n", tcItem.lParam); flush_sequences(sequences, NUM_MSG_SEQUENCES); tcItem.mask = TCIF_TEXT; tcItem.pszText = &szText[0]; tcItem.cchTextMax = sizeof(szText); strcpy(szText, "New Label"); ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("New Label", tcItem.pszText); ok ( SendMessage(hTab, TCM_GETITEM, 1, (LPARAM) &tcItem), "Getting item failed.\n"); expect_str("Tab 2", tcItem.pszText); ok_sequence(sequences, TAB_SEQ_INDEX, getset_item_seq, "Getset item test sequence", FALSE); ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Getset item test parent sequence", FALSE); /* TCIS_BUTTONPRESSED doesn't depend on tab style */ memset(&tcItem, 0, sizeof(tcItem)); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = TCIS_BUTTONPRESSED; ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); if (tcItem.dwState) { ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n"); /* next highlight item, test that dwStateMask actually masks */ tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_HIGHLIGHTED; tcItem.dwState = TCIS_HIGHLIGHTED; ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n"); tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); ok (tcItem.dwState == TCIS_HIGHLIGHTED, "TCIS_HIGHLIGHTED should be set.\n"); tcItem.mask = TCIF_STATE; tcItem.dwStateMask = TCIS_BUTTONPRESSED; tcItem.dwState = 0; ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n"); ok (tcItem.dwState == TCIS_BUTTONPRESSED, "TCIS_BUTTONPRESSED should be set.\n"); } else win_skip( "Item state mask not supported\n" ); DestroyWindow(hTab); }
void test_lisp_parse_nested() { Value parsed = parse(blob_s("(test (4 5 6 (7 8 9)) ((10)))")); expect_str(parsed, "[:test, [4, 5, 6, [7, 8, 9]], [[10]]]"); decref(parsed); }