1 /* 2 * Copyright 2016 Jared Smudde 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19 /* Documentation: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366197%28v=vs.85%29.aspx */ 20 21 #include <apitest.h> 22 23 static BOOL (WINAPI *pNcIsValidConnectionName)(PCWSTR); 24 25 #define CALL_NC(exp, str) \ 26 do { \ 27 BOOL ret = pNcIsValidConnectionName((str)); \ 28 ok(ret == (exp), "Expected %s to be %d, was %d\n", wine_dbgstr_w((str)), (exp), ret); \ 29 } while (0) 30 31 32 33 static void test_BadLetters(void) 34 { 35 BOOL ret; 36 37 WCHAR buf[3] = { 0 }; 38 int i; 39 40 for (i = 1; i <= 0xFFFF; ++i) 41 { 42 buf[0] = (WCHAR)i; 43 buf[1] = buf[2] = L'\0'; 44 45 if (wcspbrk(buf, L"\\/:\t*? <>|\"") != NULL) 46 { 47 ret = pNcIsValidConnectionName(buf); 48 ok(ret == FALSE, "Expected %s (%i) to fail.\n", wine_dbgstr_w(buf), i); 49 50 /* How about two of a kind? */ 51 buf[1] = (WCHAR)i; 52 ret = pNcIsValidConnectionName(buf); 53 ok(ret == FALSE, "Expected %s (%i) to fail.\n", wine_dbgstr_w(buf), i); 54 55 /* And something (bad) combined with a space? */ 56 buf[1] = L' '; 57 ret = pNcIsValidConnectionName(buf); 58 ok(ret == FALSE, "Expected %s (%i) to fail.\n", wine_dbgstr_w(buf), i); 59 60 61 /* Something bad combined with a letter */ 62 buf[1] = L'a'; 63 ret = pNcIsValidConnectionName(buf); 64 if ((WCHAR)i == L' ') 65 ok(ret == TRUE, "Expected %s (%i) to succeed.\n", wine_dbgstr_w(buf), i); 66 else 67 ok(ret == FALSE, "Expected %s (%i) to fail.\n", wine_dbgstr_w(buf), i); 68 } 69 else 70 { 71 ret = pNcIsValidConnectionName(buf); 72 ok(ret == TRUE, "Expected %s (%i) to succeed.\n", wine_dbgstr_w(buf), i); 73 74 buf[1] = (WCHAR)i; 75 ret = pNcIsValidConnectionName(buf); 76 ok(ret == TRUE, "Expected %s (%i) to succeed.\n", wine_dbgstr_w(buf), i); 77 78 buf[1] = L'a'; 79 ret = pNcIsValidConnectionName(buf); 80 ok(ret == TRUE, "Expected %s (%i) to succeed.\n", wine_dbgstr_w(buf), i); 81 82 buf[1] = L' '; 83 ret = pNcIsValidConnectionName(buf); 84 ok(ret == TRUE, "Expected %s (%i) to succeed.\n", wine_dbgstr_w(buf), i); 85 } 86 } 87 } 88 89 START_TEST(isvalidname) 90 { 91 HMODULE hDll = LoadLibraryA("netshell.dll"); 92 93 pNcIsValidConnectionName = (void*)GetProcAddress(hDll, "NcIsValidConnectionName"); 94 if (!hDll || !pNcIsValidConnectionName) 95 { 96 skip("netshell.dll or export NcIsValidConnectionName not found! Tests will be skipped\n"); 97 return; 98 } 99 100 CALL_NC(TRUE, L"Network"); 101 CALL_NC(FALSE, L"Network?"); 102 103 CALL_NC(FALSE, L"\\"); 104 CALL_NC(FALSE, L"/"); 105 CALL_NC(FALSE, L":"); 106 CALL_NC(FALSE, L"*"); 107 CALL_NC(FALSE, L"?"); 108 CALL_NC(FALSE, L"<"); 109 CALL_NC(FALSE, L">"); 110 CALL_NC(FALSE, L"|"); 111 112 CALL_NC(FALSE, NULL); 113 114 CALL_NC(TRUE, L"Wireless"); 115 CALL_NC(FALSE, L"Wireless:1"); 116 CALL_NC(TRUE, L"Intranet"); 117 CALL_NC(FALSE, L"Intranet<"); 118 CALL_NC(TRUE, L"Network Connection"); 119 120 test_BadLetters(); 121 } 122