ReactOS  0.4.14-dev-342-gdc047f9
name.c
Go to the documentation of this file.
1 /*
2  * Tests for name handling functions
3  *
4  * Copyright 2006 Hans Leidekker
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #include <stdarg.h>
22 
23 #include "windef.h"
24 #include "winbase.h"
25 #include "winnls.h"
26 #include "windns.h"
27 
28 #include "wine/test.h"
29 
31 
32 static const struct
33 {
36  DNS_STATUS status;
37  DNS_STATUS status_broken;
38 }
39 test_data[] =
40 {
42  { ".", DnsNameDomain, ERROR_SUCCESS },
45  { "a.", DnsNameDomain, ERROR_SUCCESS },
47  { "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DnsNameDomain, ERROR_INVALID_NAME },
48  { "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DnsNameDomain, ERROR_INVALID_NAME },
55  { "a.b", DnsNameDomain, ERROR_SUCCESS },
56 
63  { "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", DnsNameDomainLabel, ERROR_INVALID_NAME },
69  { "456.789", DnsNameDomainLabel, ERROR_INVALID_NAME },
71 
78  { "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", DnsNameDomain, ERROR_INVALID_NAME },
79  { "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", DnsNameHostnameFull, ERROR_INVALID_NAME },
88 
95  { "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg", DnsNameHostnameLabel, ERROR_INVALID_NAME },
102 
109  { "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", DnsNameWildcard, ERROR_INVALID_NAME },
110  { "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj.jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj.jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj.jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", DnsNameWildcard, ERROR_INVALID_NAME },
115  { "123.456", DnsNameWildcard, ERROR_INVALID_NAME },
117  { "*", DnsNameWildcard, ERROR_SUCCESS },
119  { "*.j", DnsNameWildcard, ERROR_SUCCESS },
121 
128  { "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", DnsNameSrvRecord, ERROR_INVALID_NAME },
129  { "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", DnsNameSrvRecord, ERROR_INVALID_NAME },
132  { "_k", DnsNameSrvRecord, ERROR_SUCCESS },
134  { "123.456", DnsNameSrvRecord, ERROR_INVALID_NAME },
137  { "_k.l", DnsNameSrvRecord, ERROR_SUCCESS },
139 };
140 
141 static void test_DnsValidateName_A( void )
142 {
143  unsigned int i;
144  DNS_STATUS status;
145 
147  ok( status == ERROR_INVALID_NAME, "succeeded unexpectedly\n" );
148 
149  for (i = 0; i < ARRAY_SIZE(test_data); i++)
150  {
153  "%d: \'%s\': got %d, expected %d\n", i, test_data[i].name, status, test_data[i].status );
154  }
155 }
156 
157 static void test_DnsNameCompare_A( void )
158 {
159  static const CHAR empty[] = "",
160  dot[] = ".",
161  dotdot[] = "..",
162  A[] = "A",
163  a[] = "a",
164  B[] = "B",
165  b[] = "b",
166  A_dot_B[] = "A.B",
167  a_dot_a[] = "a.a",
168  a_dot_b[] = "a.b",
169  a_dot_b_dot[] = "a.b.",
170  a_dot_b_dotdot[] = "a.b..",
171  B_dot_A[] = "B.A",
172  b_dot_a[] = "b.a",
173  b_dot_a_dot[] = "b.a.",
174  b_dot_a_dotdot[] = "b.a..";
175 
176  ok( DnsNameCompare_A( NULL, NULL ) == TRUE, "failed unexpectedly\n" );
177 
178  ok( DnsNameCompare_A( empty, empty ) == TRUE, "failed unexpectedly\n" );
179  ok( DnsNameCompare_A( dot, empty ) == TRUE, "failed unexpectedly\n" );
180  ok( DnsNameCompare_A( empty, dot ) == TRUE, "failed unexpectedly\n" );
181  ok( DnsNameCompare_A( dot, dotdot ) == TRUE, "failed unexpectedly\n" );
182  ok( DnsNameCompare_A( dotdot, dot ) == TRUE, "failed unexpectedly\n" );
183  ok( DnsNameCompare_A( a, a ) == TRUE, "failed unexpectedly\n" );
184  ok( DnsNameCompare_A( a, A ) == TRUE, "failed unexpectedly\n" );
185  ok( DnsNameCompare_A( A, a ) == TRUE, "failed unexpectedly\n" );
186  ok( DnsNameCompare_A( a_dot_b, A_dot_B ) == TRUE, "failed unexpectedly\n" );
187  ok( DnsNameCompare_A( a_dot_b, a_dot_b ) == TRUE, "failed unexpectedly\n" );
188  ok( DnsNameCompare_A( a_dot_b_dot, a_dot_b_dot ) == TRUE, "failed unexpectedly\n" );
189  ok( DnsNameCompare_A( a_dot_b_dotdot, a_dot_b_dotdot ) == TRUE, "failed unexpectedly\n" );
190 
191  ok( DnsNameCompare_A( empty, NULL ) == FALSE, "succeeded unexpectedly\n" );
192  ok( DnsNameCompare_A( NULL, empty ) == FALSE, "succeeded unexpectedly\n" );
193 
194  ok( DnsNameCompare_A( a, b ) == FALSE, "succeeded unexpectedly\n" );
195  ok( DnsNameCompare_A( a, B ) == FALSE, "succeeded unexpectedly\n" );
196  ok( DnsNameCompare_A( A, b ) == FALSE, "succeeded unexpectedly\n" );
197  ok( DnsNameCompare_A( a_dot_b, B_dot_A ) == FALSE, "succeeded unexpectedly\n" );
198  ok( DnsNameCompare_A( a_dot_b_dot, b_dot_a_dot ) == FALSE, "succeeded unexpectedly\n" );
199  ok( DnsNameCompare_A( a_dot_b, a_dot_a ) == FALSE, "succeeded unexpectedly\n" );
200  ok( DnsNameCompare_A( a_dot_b_dotdot, b_dot_a_dotdot ) == FALSE, "succeeded unexpectedly\n" );
201  ok( DnsNameCompare_A( a_dot_b_dot, b_dot_a_dotdot ) == FALSE, "succeeded unexpectedly\n" );
202  ok( DnsNameCompare_A( a_dot_b_dotdot, b_dot_a_dot ) == FALSE, "succeeded unexpectedly\n" );
203  ok( DnsNameCompare_A( a_dot_b_dot, b_dot_a ) == FALSE, "succeeded unexpectedly\n" );
204  ok( DnsNameCompare_A( a_dot_b, b_dot_a_dot ) == FALSE, "succeeded unexpectedly\n" );
205 }
206 
208 {
209  BOOL ret;
210  DWORD err;
211 
212  SetLastError( 0xdeadbeef );
214  err = GetLastError();
215  ok( !ret, "got %d\n", ret );
216  ok( err == 0xdeadbeef, "got %u\n", err );
217 
218  ret = DnsFlushResolverCacheEntry_A( "localhost" );
219  ok( ret, "got %d\n", ret );
220 
221  ret = DnsFlushResolverCacheEntry_A( "nxdomain.test.winehq.org" );
222  ok( ret, "got %d\n", ret );
223 }
224 
226 {
230 }
BOOL WINAPI DnsFlushResolverCacheEntry_A(PCSTR)
Definition: stubs.c:220
#define TRUE
Definition: types.h:120
#define ERROR_SUCCESS
Definition: deptool.c:10
char CHAR
Definition: xmlstorage.h:175
#define DNS_ERROR_NON_RFC_NAME
Definition: winerror.h:1872
static void test_DnsNameCompare_A(void)
Definition: name.c:157
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
LPCSTR name
Definition: name.c:34
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
START_TEST(name)
Definition: name.c:225
const char * LPCSTR
Definition: xmlstorage.h:183
DNS_STATUS status_broken
Definition: name.c:37
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
enum _DNS_NAME_FORMAT DNS_NAME_FORMAT
#define WINAPI
Definition: msvc.h:8
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:417
int ret
Definition: ttei1.cpp:12
DNS_NAME_FORMAT format
Definition: name.c:35
#define err(...)
#define broken(x)
Definition: _sntprintf.h:21
BOOL WINAPI DnsNameCompare_A(LPCSTR name1, LPCSTR name2)
Definition: names.c:31
#define ARRAY_SIZE(a)
Definition: main.h:24
#define ok(value,...)
Definition: atltest.h:57
static void test_DnsValidateName_A(void)
Definition: name.c:141
#define B(row, col)
BOOL empty
Definition: button.c:170
#define DNS_ERROR_INVALID_NAME_CHAR
Definition: winerror.h:1877
Definition: name.c:36
#define ERROR_INVALID_NAME
Definition: compat.h:93
const char * PCSTR
Definition: typedefs.h:51
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define DNS_ERROR_NUMERIC_NAME
Definition: winerror.h:1878
DNS_STATUS status
Definition: name.c:36
DNS_STATUS WINAPI DnsValidateName_A(PCSTR name, DNS_NAME_FORMAT format)
Definition: names.c:81
static void test_DnsFlushResolverCacheEntry_A(void)
Definition: name.c:207
Definition: ps.c:97