From 7a7be05081f4c2358f15600245cd6b3a4208e03f Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Mon, 22 Mar 2004 20:40:03 +0000 Subject: [PATCH] Test SHSearchMapInt. --- dlls/shlwapi/tests/.cvsignore | 1 + dlls/shlwapi/tests/Makefile.in | 1 + dlls/shlwapi/tests/ordinal.c | 91 ++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 dlls/shlwapi/tests/ordinal.c diff --git a/dlls/shlwapi/tests/.cvsignore b/dlls/shlwapi/tests/.cvsignore index cd192ca9fa4..7bbf4176ebb 100644 --- a/dlls/shlwapi/tests/.cvsignore +++ b/dlls/shlwapi/tests/.cvsignore @@ -2,6 +2,7 @@ Makefile clist.ok clsid.ok generated.ok +ordinal.ok path.ok shreg.ok string.ok diff --git a/dlls/shlwapi/tests/Makefile.in b/dlls/shlwapi/tests/Makefile.in index 947c7c20547..c7c831d6eb6 100644 --- a/dlls/shlwapi/tests/Makefile.in +++ b/dlls/shlwapi/tests/Makefile.in @@ -9,6 +9,7 @@ CTESTS = \ clist.c \ clsid.c \ generated.c \ + ordinal.c \ path.c \ shreg.c \ string.c diff --git a/dlls/shlwapi/tests/ordinal.c b/dlls/shlwapi/tests/ordinal.c new file mode 100644 index 00000000000..3946fca39c8 --- /dev/null +++ b/dlls/shlwapi/tests/ordinal.c @@ -0,0 +1,91 @@ +/* Unit test suite for SHLWAPI ordinal functions + * + * Copyright 2004 Jon Griffiths + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "wine/test.h" +#include "winbase.h" +#include "winerror.h" +#include "winuser.h" +#define NO_SHLWAPI_REG +#define NO_SHLWAPI_PATH +#define NO_SHLWAPI_GDI +#define NO_SHLWAPI_STREAM +#include "shlwapi.h" + +/* Function ptrs for ordinal calls */ +static HMODULE hShlwapi; +static int (WINAPI *pSHSearchMapInt)(const int*,const int*,int,int); + + +static void test_SHSearchMapInt(void) +{ + int keys[8], values[8]; + int i = 0; + + if (!pSHSearchMapInt) + return; + + memset(keys, 0, sizeof(keys)); + memset(values, 0, sizeof(values)); + keys[0] = 99; values[0] = 101; + + /* NULL key/value lists crash native, so skip testing them */ + + /* 1 element */ + i = pSHSearchMapInt(keys, values, 1, keys[0]); + ok(i == values[0], "Len 1, expected %d, got %d\n", values[0], i); + + /* Key doesn't exist */ + i = pSHSearchMapInt(keys, values, 1, 100); + ok(i == -1, "Len 1 - bad key, expected -1, got %d\n", i); + + /* Len = 0 => not found */ + i = pSHSearchMapInt(keys, values, 0, keys[0]); + ok(i == -1, "Len 1 - passed len 0, expected -1, got %d\n", i); + + /* 2 elements, len = 1 */ + keys[1] = 98; values[1] = 102; + i = pSHSearchMapInt(keys, values, 1, keys[1]); + ok(i == -1, "Len 1 - array len 2, expected -1, got %d\n", i); + + /* 2 elements, len = 2 */ + i = pSHSearchMapInt(keys, values, 2, keys[1]); + ok(i == values[1], "Len 2, expected %d, got %d\n", values[1], i); + + /* Searches forward */ + keys[2] = 99; values[2] = 103; + i = pSHSearchMapInt(keys, values, 3, keys[0]); + ok(i == values[0], "Len 3, expected %d, got %d\n", values[0], i); +} + + +START_TEST(ordinal) +{ + hShlwapi = LoadLibraryA("shlwapi.dll"); + ok(hShlwapi != 0, "LoadLibraryA failed\n"); + if (!hShlwapi) + return; + + pSHSearchMapInt = (void*)GetProcAddress(hShlwapi, (LPSTR)198); + + test_SHSearchMapInt(); + FreeLibrary(hShlwapi); +}