2 * Copyright 2015-2016 Iván Matellanes
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.
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.
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
27 #include "wine/test.h"
29 typedef void (*vtable_ptr
)(void);
30 typedef LONG streamoff
;
31 typedef LONG streampos
;
33 typedef void* (__cdecl
*allocFunction
)(LONG
);
34 typedef void (__cdecl
*freeFunction
)(void*);
37 IOSTATE_goodbit
= 0x0,
39 IOSTATE_failbit
= 0x2,
48 OPENMODE_trunc
= 0x10,
49 OPENMODE_nocreate
= 0x20,
50 OPENMODE_noreplace
= 0x40,
51 OPENMODE_binary
= 0x80
68 FLAGS_showbase
= 0x80,
69 FLAGS_showpoint
= 0x100,
70 FLAGS_uppercase
= 0x200,
71 FLAGS_showpos
= 0x400,
72 FLAGS_scientific
= 0x800,
74 FLAGS_unitbuf
= 0x2000,
78 const int filebuf_sh_none
= 0x800;
79 const int filebuf_sh_read
= 0xa00;
80 const int filebuf_sh_write
= 0xc00;
81 const int filebuf_openprot
= 420;
82 const int filebuf_binary
= _O_BINARY
;
83 const int filebuf_text
= _O_TEXT
;
87 const vtable_ptr
*vtable
;
100 CRITICAL_SECTION lock
;
110 /* class strstreambuf */
117 allocFunction f_alloc
;
130 const vtable_ptr
*vtable
;
135 struct _ostream
*tie
;
141 CRITICAL_SECTION lock
;
145 typedef struct _ostream
{
148 ios base_ios
; /* virtually inherited */
156 ios base_ios
; /* virtually inherited */
161 struct { /* istream */
166 struct { /* ostream */
170 ios base_ios
; /* virtually inherited */
173 /* class exception */
180 /* class logic_error */
187 #define __thiscall __stdcall
189 #define __thiscall __cdecl
192 static void* (__cdecl
*p_operator_new
)(unsigned int);
193 static void (__cdecl
*p_operator_delete
)(void*);
196 static streambuf
* (*__thiscall p_streambuf_reserve_ctor
)(streambuf
*, char*, int);
197 static streambuf
* (*__thiscall p_streambuf_ctor
)(streambuf
*);
198 static void (*__thiscall p_streambuf_dtor
)(streambuf
*);
199 static int (*__thiscall p_streambuf_allocate
)(streambuf
*);
200 static void (*__thiscall p_streambuf_clrclock
)(streambuf
*);
201 static int (*__thiscall p_streambuf_doallocate
)(streambuf
*);
202 static void (*__thiscall p_streambuf_gbump
)(streambuf
*, int);
203 static int (*__thiscall p_streambuf_in_avail
)(const streambuf
*);
204 static void (*__thiscall p_streambuf_lock
)(streambuf
*);
205 static int (*__thiscall p_streambuf_out_waiting
)(const streambuf
*);
206 static int (*__thiscall p_streambuf_pbackfail
)(streambuf
*, int);
207 static void (*__thiscall p_streambuf_pbump
)(streambuf
*, int);
208 static int (*__thiscall p_streambuf_sbumpc
)(streambuf
*);
209 static void (*__thiscall p_streambuf_setb
)(streambuf
*, char*, char*, int);
210 static void (*__thiscall p_streambuf_setlock
)(streambuf
*);
211 static streambuf
* (*__thiscall p_streambuf_setbuf
)(streambuf
*, char*, int);
212 static int (*__thiscall p_streambuf_sgetc
)(streambuf
*);
213 static int (*__thiscall p_streambuf_snextc
)(streambuf
*);
214 static int (*__thiscall p_streambuf_sputc
)(streambuf
*, int);
215 static void (*__thiscall p_streambuf_stossc
)(streambuf
*);
216 static int (*__thiscall p_streambuf_sync
)(streambuf
*);
217 static void (*__thiscall p_streambuf_unlock
)(streambuf
*);
218 static int (*__thiscall p_streambuf_xsgetn
)(streambuf
*, char*, int);
219 static int (*__thiscall p_streambuf_xsputn
)(streambuf
*, const char*, int);
222 static filebuf
* (*__thiscall p_filebuf_fd_ctor
)(filebuf
*, int);
223 static filebuf
* (*__thiscall p_filebuf_fd_reserve_ctor
)(filebuf
*, int, char*, int);
224 static filebuf
* (*__thiscall p_filebuf_ctor
)(filebuf
*);
225 static void (*__thiscall p_filebuf_dtor
)(filebuf
*);
226 static filebuf
* (*__thiscall p_filebuf_attach
)(filebuf
*, filedesc
);
227 static filebuf
* (*__thiscall p_filebuf_open
)(filebuf
*, const char*, ios_open_mode
, int);
228 static filebuf
* (*__thiscall p_filebuf_close
)(filebuf
*);
229 static int (*__thiscall p_filebuf_setmode
)(filebuf
*, int);
230 static streambuf
* (*__thiscall p_filebuf_setbuf
)(filebuf
*, char*, int);
231 static int (*__thiscall p_filebuf_sync
)(filebuf
*);
232 static int (*__thiscall p_filebuf_overflow
)(filebuf
*, int);
233 static int (*__thiscall p_filebuf_underflow
)(filebuf
*);
234 static streampos (*__thiscall p_filebuf_seekoff
)(filebuf
*, streamoff
, ios_seek_dir
, int);
235 static int (*__thiscall p_filebuf_is_open
)(filebuf
*);
238 static strstreambuf
* (*__thiscall p_strstreambuf_dynamic_ctor
)(strstreambuf
*, int);
239 static strstreambuf
* (*__thiscall p_strstreambuf_funcs_ctor
)(strstreambuf
*, allocFunction
, freeFunction
);
240 static strstreambuf
* (*__thiscall p_strstreambuf_buffer_ctor
)(strstreambuf
*, char*, int, char*);
241 static strstreambuf
* (*__thiscall p_strstreambuf_ubuffer_ctor
)(strstreambuf
*, unsigned char*, int, unsigned char*);
242 static strstreambuf
* (*__thiscall p_strstreambuf_ctor
)(strstreambuf
*);
243 static void (*__thiscall p_strstreambuf_dtor
)(strstreambuf
*);
244 static int (*__thiscall p_strstreambuf_doallocate
)(strstreambuf
*);
245 static void (*__thiscall p_strstreambuf_freeze
)(strstreambuf
*, int);
246 static int (*__thiscall p_strstreambuf_overflow
)(strstreambuf
*, int);
247 static streampos (*__thiscall p_strstreambuf_seekoff
)(strstreambuf
*, streamoff
, ios_seek_dir
, int);
248 static streambuf
* (*__thiscall p_strstreambuf_setbuf
)(strstreambuf
*, char*, int);
249 static int (*__thiscall p_strstreambuf_underflow
)(strstreambuf
*);
252 static stdiobuf
* (*__thiscall p_stdiobuf_file_ctor
)(stdiobuf
*, FILE*);
253 static void (*__thiscall p_stdiobuf_dtor
)(stdiobuf
*);
254 static int (*__thiscall p_stdiobuf_overflow
)(stdiobuf
*, int);
255 static int (*__thiscall p_stdiobuf_pbackfail
)(stdiobuf
*, int);
256 static streampos (*__thiscall p_stdiobuf_seekoff
)(stdiobuf
*, streamoff
, ios_seek_dir
, int);
257 static int (*__thiscall p_stdiobuf_setrwbuf
)(stdiobuf
*, int, int);
258 static int (*__thiscall p_stdiobuf_sync
)(stdiobuf
*);
259 static int (*__thiscall p_stdiobuf_underflow
)(stdiobuf
*);
262 static ios
* (*__thiscall p_ios_copy_ctor
)(ios
*, const ios
*);
263 static ios
* (*__thiscall p_ios_ctor
)(ios
*);
264 static ios
* (*__thiscall p_ios_sb_ctor
)(ios
*, streambuf
*);
265 static ios
* (*__thiscall p_ios_assign
)(ios
*, const ios
*);
266 static void (*__thiscall p_ios_init
)(ios
*, streambuf
*);
267 static void (*__thiscall p_ios_dtor
)(ios
*);
268 static void (*__cdecl p_ios_clrlock
)(ios
*);
269 static void (*__cdecl p_ios_setlock
)(ios
*);
270 static void (*__cdecl p_ios_lock
)(ios
*);
271 static void (*__cdecl p_ios_unlock
)(ios
*);
272 static void (*__cdecl p_ios_lockbuf
)(ios
*);
273 static void (*__cdecl p_ios_unlockbuf
)(ios
*);
274 static CRITICAL_SECTION
*p_ios_static_lock
;
275 static void (*__cdecl p_ios_lockc
)(void);
276 static void (*__cdecl p_ios_unlockc
)(void);
277 static LONG (*__thiscall p_ios_flags_set
)(ios
*, LONG
);
278 static LONG (*__thiscall p_ios_flags_get
)(const ios
*);
279 static LONG (*__thiscall p_ios_setf
)(ios
*, LONG
);
280 static LONG (*__thiscall p_ios_setf_mask
)(ios
*, LONG
, LONG
);
281 static LONG (*__thiscall p_ios_unsetf
)(ios
*, LONG
);
282 static int (*__thiscall p_ios_good
)(const ios
*);
283 static int (*__thiscall p_ios_bad
)(const ios
*);
284 static int (*__thiscall p_ios_eof
)(const ios
*);
285 static int (*__thiscall p_ios_fail
)(const ios
*);
286 static void (*__thiscall p_ios_clear
)(ios
*, int);
287 static LONG
*p_ios_maxbit
;
288 static LONG (*__cdecl p_ios_bitalloc
)(void);
289 static int *p_ios_curindex
;
290 static LONG
*p_ios_statebuf
;
291 static LONG
* (*__thiscall p_ios_iword
)(const ios
*, int);
292 static void** (*__thiscall p_ios_pword
)(const ios
*, int);
293 static int (*__cdecl p_ios_xalloc
)(void);
294 static void (*__cdecl p_ios_sync_with_stdio
)(void);
295 static int *p_ios_sunk_with_stdio
;
296 static int *p_ios_fLockcInit
;
299 static ostream
* (*__thiscall p_ostream_copy_ctor
)(ostream
*, const ostream
*, BOOL
);
300 static ostream
* (*__thiscall p_ostream_sb_ctor
)(ostream
*, streambuf
*, BOOL
);
301 static ostream
* (*__thiscall p_ostream_ctor
)(ostream
*, BOOL
);
302 static void (*__thiscall p_ostream_dtor
)(ios
*);
303 static ostream
* (*__thiscall p_ostream_assign
)(ostream
*, const ostream
*);
304 static ostream
* (*__thiscall p_ostream_assign_sb
)(ostream
*, streambuf
*);
305 static void (*__thiscall p_ostream_vbase_dtor
)(ostream
*);
306 static ostream
* (*__thiscall p_ostream_flush
)(ostream
*);
307 static int (*__thiscall p_ostream_opfx
)(ostream
*);
308 static void (*__thiscall p_ostream_osfx
)(ostream
*);
309 static ostream
* (*__thiscall p_ostream_put_char
)(ostream
*, char);
310 static ostream
* (*__thiscall p_ostream_write_char
)(ostream
*, const char*, int);
311 static ostream
* (*__thiscall p_ostream_seekp_offset
)(ostream
*, streamoff
, ios_seek_dir
);
312 static ostream
* (*__thiscall p_ostream_seekp
)(ostream
*, streampos
);
313 static streampos (*__thiscall p_ostream_tellp
)(ostream
*);
314 static ostream
* (*__thiscall p_ostream_writepad
)(ostream
*, const char*, const char*);
315 static ostream
* (*__thiscall p_ostream_print_char
)(ostream
*, char);
316 static ostream
* (*__thiscall p_ostream_print_str
)(ostream
*, const char*);
317 static ostream
* (*__thiscall p_ostream_print_int
)(ostream
*, int);
318 static ostream
* (*__thiscall p_ostream_print_float
)(ostream
*, float);
319 static ostream
* (*__thiscall p_ostream_print_double
)(ostream
*, double);
320 static ostream
* (*__thiscall p_ostream_print_ptr
)(ostream
*, const void*);
321 static ostream
* (*__thiscall p_ostream_print_streambuf
)(ostream
*, streambuf
*);
323 /* ostream_withassign */
324 static ostream
* (*__thiscall p_ostream_withassign_sb_ctor
)(ostream
*, streambuf
*, BOOL
);
325 static ostream
* (*__thiscall p_ostream_withassign_copy_ctor
)(ostream
*, const ostream
*, BOOL
);
326 static ostream
* (*__thiscall p_ostream_withassign_ctor
)(ostream
*, BOOL
);
327 static void (*__thiscall p_ostream_withassign_dtor
)(ios
*);
328 static void (*__thiscall p_ostream_withassign_vbase_dtor
)(ostream
*);
329 static ostream
* (*__thiscall p_ostream_withassign_assign_sb
)(ostream
*, streambuf
*);
330 static ostream
* (*__thiscall p_ostream_withassign_assign_os
)(ostream
*, const ostream
*);
331 static ostream
* (*__thiscall p_ostream_withassign_assign
)(ostream
*, const ostream
*);
334 static ostream
* (*__thiscall p_ostrstream_copy_ctor
)(ostream
*, const ostream
*, BOOL
);
335 static ostream
* (*__thiscall p_ostrstream_buffer_ctor
)(ostream
*, char*, int, int, BOOL
);
336 static ostream
* (*__thiscall p_ostrstream_ctor
)(ostream
*, BOOL
);
337 static void (*__thiscall p_ostrstream_dtor
)(ios
*);
338 static void (*__thiscall p_ostrstream_vbase_dtor
)(ostream
*);
339 static ostream
* (*__thiscall p_ostrstream_assign
)(ostream
*, const ostream
*);
340 static int (*__thiscall p_ostrstream_pcount
)(const ostream
*);
343 static ostream
* (*__thiscall p_ofstream_copy_ctor
)(ostream
*, const ostream
*, BOOL
);
344 static ostream
* (*__thiscall p_ofstream_buffer_ctor
)(ostream
*, filedesc
, char*, int, BOOL
);
345 static ostream
* (*__thiscall p_ofstream_fd_ctor
)(ostream
*, filedesc fd
, BOOL virt_init
);
346 static ostream
* (*__thiscall p_ofstream_open_ctor
)(ostream
*, const char *name
, ios_open_mode
, int, BOOL
);
347 static ostream
* (*__thiscall p_ofstream_ctor
)(ostream
*, BOOL
);
348 static void (*__thiscall p_ofstream_dtor
)(ios
*);
349 static void (*__thiscall p_ofstream_vbase_dtor
)(ostream
*);
350 static void (*__thiscall p_ofstream_attach
)(ostream
*, filedesc
);
351 static void (*__thiscall p_ofstream_close
)(ostream
*);
352 static filedesc (*__thiscall p_ofstream_fd
)(ostream
*);
353 static int (*__thiscall p_ofstream_is_open
)(const ostream
*);
354 static void (*__thiscall p_ofstream_open
)(ostream
*, const char*, ios_open_mode
, int);
355 static filebuf
* (*__thiscall p_ofstream_rdbuf
)(const ostream
*);
356 static streambuf
* (*__thiscall p_ofstream_setbuf
)(ostream
*, char*, int);
357 static int (*__thiscall p_ofstream_setmode
)(ostream
*, int);
360 static istream
* (*__thiscall p_istream_copy_ctor
)(istream
*, const istream
*, BOOL
);
361 static istream
* (*__thiscall p_istream_ctor
)(istream
*, BOOL
);
362 static istream
* (*__thiscall p_istream_sb_ctor
)(istream
*, streambuf
*, BOOL
);
363 static void (*__thiscall p_istream_dtor
)(ios
*);
364 static istream
* (*__thiscall p_istream_assign_sb
)(istream
*, streambuf
*);
365 static istream
* (*__thiscall p_istream_assign
)(istream
*, const istream
*);
366 static void (*__thiscall p_istream_vbase_dtor
)(istream
*);
367 static void (*__thiscall p_istream_eatwhite
)(istream
*);
368 static int (*__thiscall p_istream_ipfx
)(istream
*, int);
369 static istream
* (*__thiscall p_istream_get_str_delim
)(istream
*, char*, int, int);
370 static istream
* (*__thiscall p_istream_get_str
)(istream
*, char*, int, char);
371 static int (*__thiscall p_istream_get
)(istream
*);
372 static istream
* (*__thiscall p_istream_get_char
)(istream
*, char*);
373 static istream
* (*__thiscall p_istream_get_sb
)(istream
*, streambuf
*, char);
374 static istream
* (*__thiscall p_istream_getline
)(istream
*, char*, int, char);
375 static istream
* (*__thiscall p_istream_ignore
)(istream
*, int, int);
376 static int (*__thiscall p_istream_peek
)(istream
*);
377 static istream
* (*__thiscall p_istream_putback
)(istream
*, char);
378 static istream
* (*__thiscall p_istream_read
)(istream
*, char*, int);
379 static istream
* (*__thiscall p_istream_seekg
)(istream
*, streampos
);
380 static istream
* (*__thiscall p_istream_seekg_offset
)(istream
*, streamoff
, ios_seek_dir
);
381 static int (*__thiscall p_istream_sync
)(istream
*);
382 static streampos (*__thiscall p_istream_tellg
)(istream
*);
383 static int (*__thiscall p_istream_getint
)(istream
*, char*);
384 static int (*__thiscall p_istream_getdouble
)(istream
*, char*, int);
385 static istream
* (*__thiscall p_istream_read_char
)(istream
*, char*);
386 static istream
* (*__thiscall p_istream_read_str
)(istream
*, char*);
387 static istream
* (*__thiscall p_istream_read_short
)(istream
*, short*);
388 static istream
* (*__thiscall p_istream_read_unsigned_short
)(istream
*, unsigned short*);
389 static istream
* (*__thiscall p_istream_read_int
)(istream
*, int*);
390 static istream
* (*__thiscall p_istream_read_unsigned_int
)(istream
*, unsigned int*);
391 static istream
* (*__thiscall p_istream_read_long
)(istream
*, LONG
*);
392 static istream
* (*__thiscall p_istream_read_unsigned_long
)(istream
*, ULONG
*);
393 static istream
* (*__thiscall p_istream_read_float
)(istream
*, float*);
394 static istream
* (*__thiscall p_istream_read_double
)(istream
*, double*);
395 static istream
* (*__thiscall p_istream_read_long_double
)(istream
*, double*);
396 static istream
* (*__thiscall p_istream_read_streambuf
)(istream
*, streambuf
*);
398 /* istream_withassign */
399 static istream
* (*__thiscall p_istream_withassign_sb_ctor
)(istream
*, streambuf
*, BOOL
);
400 static istream
* (*__thiscall p_istream_withassign_copy_ctor
)(istream
*, const istream
*, BOOL
);
401 static istream
* (*__thiscall p_istream_withassign_ctor
)(istream
*, BOOL
);
402 static void (*__thiscall p_istream_withassign_dtor
)(ios
*);
403 static void (*__thiscall p_istream_withassign_vbase_dtor
)(istream
*);
404 static istream
* (*__thiscall p_istream_withassign_assign_sb
)(istream
*, streambuf
*);
405 static istream
* (*__thiscall p_istream_withassign_assign_is
)(istream
*, const istream
*);
406 static istream
* (*__thiscall p_istream_withassign_assign
)(istream
*, const istream
*);
409 static istream
* (*__thiscall p_istrstream_copy_ctor
)(istream
*, const istream
*, BOOL
);
410 static istream
* (*__thiscall p_istrstream_str_ctor
)(istream
*, char*, BOOL
);
411 static istream
* (*__thiscall p_istrstream_buffer_ctor
)(istream
*, char*, int, BOOL
);
412 static void (*__thiscall p_istrstream_dtor
)(ios
*);
413 static void (*__thiscall p_istrstream_vbase_dtor
)(istream
*);
414 static istream
* (*__thiscall p_istrstream_assign
)(istream
*, const istream
*);
417 static iostream
* (*__thiscall p_iostream_copy_ctor
)(iostream
*, const iostream
*, BOOL
);
418 static iostream
* (*__thiscall p_iostream_sb_ctor
)(iostream
*, streambuf
*, BOOL
);
419 static iostream
* (*__thiscall p_iostream_ctor
)(iostream
*, BOOL
);
420 static void (*__thiscall p_iostream_dtor
)(ios
*);
421 static void (*__thiscall p_iostream_vbase_dtor
)(iostream
*);
422 static iostream
* (*__thiscall p_iostream_assign_sb
)(iostream
*, streambuf
*);
423 static iostream
* (*__thiscall p_iostream_assign
)(iostream
*, const iostream
*);
426 static istream
* (*__thiscall p_ifstream_copy_ctor
)(istream
*, const istream
*, BOOL
);
427 static istream
* (*__thiscall p_ifstream_buffer_ctor
)(istream
*, filedesc
, char*, int, BOOL
);
428 static istream
* (*__thiscall p_ifstream_fd_ctor
)(istream
*, filedesc fd
, BOOL virt_init
);
429 static istream
* (*__thiscall p_ifstream_open_ctor
)(istream
*, const char *name
, ios_open_mode
, int, BOOL
);
430 static istream
* (*__thiscall p_ifstream_ctor
)(istream
*, BOOL
);
431 static void (*__thiscall p_ifstream_dtor
)(ios
*);
432 static void (*__thiscall p_ifstream_vbase_dtor
)(istream
*);
433 static void (*__thiscall p_ifstream_attach
)(istream
*, filedesc
);
434 static void (*__thiscall p_ifstream_close
)(istream
*);
435 static filedesc (*__thiscall p_ifstream_fd
)(istream
*);
436 static int (*__thiscall p_ifstream_is_open
)(const istream
*);
437 static void (*__thiscall p_ifstream_open
)(istream
*, const char*, ios_open_mode
, int);
438 static filebuf
* (*__thiscall p_ifstream_rdbuf
)(const istream
*);
439 static streambuf
* (*__thiscall p_ifstream_setbuf
)(istream
*, char*, int);
440 static int (*__thiscall p_ifstream_setmode
)(istream
*, int);
443 static iostream
* (*__thiscall p_strstream_copy_ctor
)(iostream
*, const iostream
*, BOOL
);
444 static iostream
* (*__thiscall p_strstream_buffer_ctor
)(iostream
*, char*, int, int, BOOL
);
445 static iostream
* (*__thiscall p_strstream_ctor
)(iostream
*, BOOL
);
446 static void (*__thiscall p_strstream_dtor
)(ios
*);
447 static void (*__thiscall p_strstream_vbase_dtor
)(iostream
*);
448 static iostream
* (*__thiscall p_strstream_assign
)(iostream
*, const iostream
*);
451 static iostream
* (*__thiscall p_stdiostream_copy_ctor
)(iostream
*, const iostream
*, BOOL
);
452 static iostream
* (*__thiscall p_stdiostream_file_ctor
)(iostream
*, FILE*, BOOL
);
453 static void (*__thiscall p_stdiostream_dtor
)(ios
*);
454 static void (*__thiscall p_stdiostream_vbase_dtor
)(iostream
*);
455 static iostream
* (*__thiscall p_stdiostream_assign
)(iostream
*, const iostream
*);
458 static iostream
* (*__thiscall p_fstream_copy_ctor
)(iostream
*, const iostream
*, BOOL
);
459 static iostream
* (*__thiscall p_fstream_buffer_ctor
)(iostream
*, filedesc
, char*, int, BOOL
);
460 static iostream
* (*__thiscall p_fstream_fd_ctor
)(iostream
*, filedesc fd
, BOOL virt_init
);
461 static iostream
* (*__thiscall p_fstream_open_ctor
)(iostream
*, const char *name
, ios_open_mode
, int, BOOL
);
462 static iostream
* (*__thiscall p_fstream_ctor
)(iostream
*, BOOL
);
463 static void (*__thiscall p_fstream_dtor
)(ios
*);
464 static void (*__thiscall p_fstream_vbase_dtor
)(iostream
*);
465 static void (*__thiscall p_fstream_attach
)(iostream
*, filedesc
);
466 static void (*__thiscall p_fstream_close
)(iostream
*);
467 static filedesc (*__thiscall p_fstream_fd
)(iostream
*);
468 static int (*__thiscall p_fstream_is_open
)(const iostream
*);
469 static void (*__thiscall p_fstream_open
)(iostream
*, const char*, ios_open_mode
, int);
470 static filebuf
* (*__thiscall p_fstream_rdbuf
)(const iostream
*);
471 static streambuf
* (*__thiscall p_fstream_setbuf
)(iostream
*, char*, int);
472 static int (*__thiscall p_fstream_setmode
)(iostream
*, int);
475 static void* (*__thiscall p_Iostream_init_ios_ctor
)(void*, ios
*, int);
478 static exception
* (*__thiscall p_exception_ctor
)(exception
*, const char**);
479 static void (*__thiscall p_exception_dtor
)(exception
*);
480 static const char* (*__thiscall p_exception_what
)(exception
*);
482 static logic_error
* (*__thiscall p_logic_error_ctor
)(logic_error
*, const char**);
483 static void (*__thiscall p_logic_error_dtor
)(logic_error
*);
486 static void (*__cdecl p__mtlock
)(CRITICAL_SECTION
*);
487 static void (*__cdecl p__mtunlock
)(CRITICAL_SECTION
*);
489 /* Predefined streams */
490 static istream
*p_cin
;
491 static ostream
*p_cout
, *p_cerr
, *p_clog
;
493 /* Emulate a __thiscall */
496 #include "pshpack1.h"
497 struct thiscall_thunk
499 BYTE pop_eax
; /* popl %eax (ret addr) */
500 BYTE pop_edx
; /* popl %edx (func) */
501 BYTE pop_ecx
; /* popl %ecx (this) */
502 BYTE push_eax
; /* pushl %eax */
503 WORD jmp_edx
; /* jmp *%edx */
507 static void * (WINAPI
*call_thiscall_func1
)( void *func
, void *this );
508 static void * (WINAPI
*call_thiscall_func2
)( void *func
, void *this, const void *a
);
509 static void * (WINAPI
*call_thiscall_func3
)( void *func
, void *this, const void *a
, const void *b
);
510 static void * (WINAPI
*call_thiscall_func4
)( void *func
, void *this, const void *a
, const void *b
,
512 static void * (WINAPI
*call_thiscall_func5
)( void *func
, void *this, const void *a
, const void *b
,
513 const void *c
, const void *d
);
514 static void * (WINAPI
*call_thiscall_func2_ptr_dbl
)( void *func
, void *this, double a
);
515 static void * (WINAPI
*call_thiscall_func2_ptr_flt
)( void *func
, void *this, float a
);
517 static void init_thiscall_thunk(void)
519 struct thiscall_thunk
*thunk
= VirtualAlloc( NULL
, sizeof(*thunk
),
520 MEM_COMMIT
, PAGE_EXECUTE_READWRITE
);
521 thunk
->pop_eax
= 0x58; /* popl %eax */
522 thunk
->pop_edx
= 0x5a; /* popl %edx */
523 thunk
->pop_ecx
= 0x59; /* popl %ecx */
524 thunk
->push_eax
= 0x50; /* pushl %eax */
525 thunk
->jmp_edx
= 0xe2ff; /* jmp *%edx */
526 call_thiscall_func1
= (void *)thunk
;
527 call_thiscall_func2
= (void *)thunk
;
528 call_thiscall_func3
= (void *)thunk
;
529 call_thiscall_func4
= (void *)thunk
;
530 call_thiscall_func5
= (void *)thunk
;
531 call_thiscall_func2_ptr_dbl
= (void *)thunk
;
532 call_thiscall_func2_ptr_flt
= (void *)thunk
;
535 #define call_func1(func,_this) call_thiscall_func1(func,_this)
536 #define call_func2(func,_this,a) call_thiscall_func2(func,_this,(const void*)(a))
537 #define call_func3(func,_this,a,b) call_thiscall_func3(func,_this,(const void*)(a),(const void*)(b))
538 #define call_func4(func,_this,a,b,c) call_thiscall_func4(func,_this,(const void*)(a),(const void*)(b), \
540 #define call_func5(func,_this,a,b,c,d) call_thiscall_func5(func,_this,(const void*)(a),(const void*)(b), \
541 (const void*)(c), (const void *)(d))
542 #define call_func2_ptr_dbl(func,_this,a) call_thiscall_func2_ptr_dbl(func,_this,a)
543 #define call_func2_ptr_flt(func,_this,a) call_thiscall_func2_ptr_flt(func,_this,a)
547 #define init_thiscall_thunk()
548 #define call_func1(func,_this) func(_this)
549 #define call_func2(func,_this,a) func(_this,a)
550 #define call_func3(func,_this,a,b) func(_this,a,b)
551 #define call_func4(func,_this,a,b,c) func(_this,a,b,c)
552 #define call_func5(func,_this,a,b,c,d) func(_this,a,b,c,d)
553 #define call_func2_ptr_dbl call_func2
554 #define call_func2_ptr_flt call_func2
556 #endif /* __i386__ */
558 static HMODULE msvcrt
, msvcirt
;
559 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcirt,y)
560 #define SET(x,y) do { SETNOFAIL(x,y); ok(x != NULL, "Export '%s' not found\n", y); } while(0)
561 static BOOL
init(void)
563 msvcrt
= LoadLibraryA("msvcrt.dll");
564 msvcirt
= LoadLibraryA("msvcirt.dll");
566 win_skip("msvcirt.dll not installed\n");
570 if(sizeof(void*) == 8) { /* 64-bit initialization */
571 p_operator_new
= (void*)GetProcAddress(msvcrt
, "??2@YAPEAX_K@Z");
572 p_operator_delete
= (void*)GetProcAddress(msvcrt
, "??3@YAXPEAX@Z");
574 SET(p_streambuf_reserve_ctor
, "??0streambuf@@IEAA@PEADH@Z");
575 SET(p_streambuf_ctor
, "??0streambuf@@IEAA@XZ");
576 SET(p_streambuf_dtor
, "??1streambuf@@UEAA@XZ");
577 SET(p_streambuf_allocate
, "?allocate@streambuf@@IEAAHXZ");
578 SET(p_streambuf_clrclock
, "?clrlock@streambuf@@QEAAXXZ");
579 SET(p_streambuf_doallocate
, "?doallocate@streambuf@@MEAAHXZ");
580 SET(p_streambuf_gbump
, "?gbump@streambuf@@IEAAXH@Z");
581 SET(p_streambuf_in_avail
, "?in_avail@streambuf@@QEBAHXZ");
582 SET(p_streambuf_lock
, "?lock@streambuf@@QEAAXXZ");
583 SET(p_streambuf_out_waiting
, "?out_waiting@streambuf@@QEBAHXZ");
584 SET(p_streambuf_pbackfail
, "?pbackfail@streambuf@@UEAAHH@Z");
585 SET(p_streambuf_pbump
, "?pbump@streambuf@@IEAAXH@Z");
586 SET(p_streambuf_sbumpc
, "?sbumpc@streambuf@@QEAAHXZ");
587 SET(p_streambuf_setb
, "?setb@streambuf@@IEAAXPEAD0H@Z");
588 SET(p_streambuf_setbuf
, "?setbuf@streambuf@@UEAAPEAV1@PEADH@Z");
589 SET(p_streambuf_setlock
, "?setlock@streambuf@@QEAAXXZ");
590 SET(p_streambuf_sgetc
, "?sgetc@streambuf@@QEAAHXZ");
591 SET(p_streambuf_snextc
, "?snextc@streambuf@@QEAAHXZ");
592 SET(p_streambuf_sputc
, "?sputc@streambuf@@QEAAHH@Z");
593 SET(p_streambuf_stossc
, "?stossc@streambuf@@QEAAXXZ");
594 SET(p_streambuf_sync
, "?sync@streambuf@@UEAAHXZ");
595 SET(p_streambuf_unlock
, "?unlock@streambuf@@QEAAXXZ");
596 SET(p_streambuf_xsgetn
, "?xsgetn@streambuf@@UEAAHPEADH@Z");
597 SET(p_streambuf_xsputn
, "?xsputn@streambuf@@UEAAHPEBDH@Z");
599 SET(p_filebuf_fd_ctor
, "??0filebuf@@QEAA@H@Z");
600 SET(p_filebuf_fd_reserve_ctor
, "??0filebuf@@QEAA@HPEADH@Z");
601 SET(p_filebuf_ctor
, "??0filebuf@@QEAA@XZ");
602 SET(p_filebuf_dtor
, "??1filebuf@@UEAA@XZ");
603 SET(p_filebuf_attach
, "?attach@filebuf@@QEAAPEAV1@H@Z");
604 SET(p_filebuf_open
, "?open@filebuf@@QEAAPEAV1@PEBDHH@Z");
605 SET(p_filebuf_close
, "?close@filebuf@@QEAAPEAV1@XZ");
606 SET(p_filebuf_setmode
, "?setmode@filebuf@@QEAAHH@Z");
607 SET(p_filebuf_setbuf
, "?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z");
608 SET(p_filebuf_sync
, "?sync@filebuf@@UEAAHXZ");
609 SET(p_filebuf_overflow
, "?overflow@filebuf@@UEAAHH@Z");
610 SET(p_filebuf_underflow
, "?underflow@filebuf@@UEAAHXZ");
611 SET(p_filebuf_seekoff
, "?seekoff@filebuf@@UEAAJJW4seek_dir@ios@@H@Z");
612 SET(p_filebuf_is_open
, "?is_open@filebuf@@QEBAHXZ");
614 SET(p_strstreambuf_dynamic_ctor
, "??0strstreambuf@@QEAA@H@Z");
615 SET(p_strstreambuf_funcs_ctor
, "??0strstreambuf@@QEAA@P6APEAXJ@ZP6AXPEAX@Z@Z");
616 SET(p_strstreambuf_buffer_ctor
, "??0strstreambuf@@QEAA@PEADH0@Z");
617 SET(p_strstreambuf_ubuffer_ctor
, "??0strstreambuf@@QEAA@PEAEH0@Z");
618 SET(p_strstreambuf_ctor
, "??0strstreambuf@@QEAA@XZ");
619 SET(p_strstreambuf_dtor
, "??1strstreambuf@@UEAA@XZ");
620 SET(p_strstreambuf_doallocate
, "?doallocate@strstreambuf@@MEAAHXZ");
621 SET(p_strstreambuf_freeze
, "?freeze@strstreambuf@@QEAAXH@Z");
622 SET(p_strstreambuf_overflow
, "?overflow@strstreambuf@@UEAAHH@Z");
623 SET(p_strstreambuf_seekoff
, "?seekoff@strstreambuf@@UEAAJJW4seek_dir@ios@@H@Z");
624 SET(p_strstreambuf_setbuf
, "?setbuf@strstreambuf@@UEAAPEAVstreambuf@@PEADH@Z");
625 SET(p_strstreambuf_underflow
, "?underflow@strstreambuf@@UEAAHXZ");
627 SET(p_stdiobuf_file_ctor
, "??0stdiobuf@@QEAA@PEAU_iobuf@@@Z");
628 SET(p_stdiobuf_dtor
, "??1stdiobuf@@UEAA@XZ");
629 SET(p_stdiobuf_overflow
, "?overflow@stdiobuf@@UEAAHH@Z");
630 SET(p_stdiobuf_pbackfail
, "?pbackfail@stdiobuf@@UEAAHH@Z");
631 SET(p_stdiobuf_seekoff
, "?seekoff@stdiobuf@@UEAAJJW4seek_dir@ios@@H@Z");
632 SET(p_stdiobuf_setrwbuf
, "?setrwbuf@stdiobuf@@QEAAHHH@Z");
633 SET(p_stdiobuf_sync
, "?sync@stdiobuf@@UEAAHXZ");
634 SET(p_stdiobuf_underflow
, "?underflow@stdiobuf@@UEAAHXZ");
636 SET(p_ios_copy_ctor
, "??0ios@@IEAA@AEBV0@@Z");
637 SET(p_ios_ctor
, "??0ios@@IEAA@XZ");
638 SET(p_ios_sb_ctor
, "??0ios@@QEAA@PEAVstreambuf@@@Z");
639 SET(p_ios_assign
, "??4ios@@IEAAAEAV0@AEBV0@@Z");
640 SET(p_ios_init
, "?init@ios@@IEAAXPEAVstreambuf@@@Z");
641 SET(p_ios_dtor
, "??1ios@@UEAA@XZ");
642 SET(p_ios_clrlock
, "?clrlock@ios@@QEAAXXZ");
643 SET(p_ios_setlock
, "?setlock@ios@@QEAAXXZ");
644 SET(p_ios_lock
, "?lock@ios@@QEAAXXZ");
645 SET(p_ios_unlock
, "?unlock@ios@@QEAAXXZ");
646 SET(p_ios_lockbuf
, "?lockbuf@ios@@QEAAXXZ");
647 SET(p_ios_unlockbuf
, "?unlockbuf@ios@@QEAAXXZ");
648 SET(p_ios_flags_set
, "?flags@ios@@QEAAJJ@Z");
649 SET(p_ios_flags_get
, "?flags@ios@@QEBAJXZ");
650 SET(p_ios_setf
, "?setf@ios@@QEAAJJ@Z");
651 SET(p_ios_setf_mask
, "?setf@ios@@QEAAJJJ@Z");
652 SET(p_ios_unsetf
, "?unsetf@ios@@QEAAJJ@Z");
653 SET(p_ios_good
, "?good@ios@@QEBAHXZ");
654 SET(p_ios_bad
, "?bad@ios@@QEBAHXZ");
655 SET(p_ios_eof
, "?eof@ios@@QEBAHXZ");
656 SET(p_ios_fail
, "?fail@ios@@QEBAHXZ");
657 SET(p_ios_clear
, "?clear@ios@@QEAAXH@Z");
658 SET(p_ios_iword
, "?iword@ios@@QEBAAEAJH@Z");
659 SET(p_ios_pword
, "?pword@ios@@QEBAAEAPEAXH@Z");
661 SET(p_ostream_copy_ctor
, "??0ostream@@IEAA@AEBV0@@Z");
662 SET(p_ostream_sb_ctor
, "??0ostream@@QEAA@PEAVstreambuf@@@Z");
663 SET(p_ostream_ctor
, "??0ostream@@IEAA@XZ");
664 SET(p_ostream_dtor
, "??1ostream@@UEAA@XZ");
665 SET(p_ostream_assign
, "??4ostream@@IEAAAEAV0@AEBV0@@Z");
666 SET(p_ostream_assign_sb
, "??4ostream@@IEAAAEAV0@PEAVstreambuf@@@Z");
667 SET(p_ostream_vbase_dtor
, "??_Dostream@@QEAAXXZ");
668 SET(p_ostream_flush
, "?flush@ostream@@QEAAAEAV1@XZ");
669 SET(p_ostream_opfx
, "?opfx@ostream@@QEAAHXZ");
670 SET(p_ostream_osfx
, "?osfx@ostream@@QEAAXXZ");
671 SET(p_ostream_put_char
, "?put@ostream@@QEAAAEAV1@D@Z");
672 SET(p_ostream_write_char
, "?write@ostream@@QEAAAEAV1@PEBDH@Z");
673 SET(p_ostream_seekp_offset
, "?seekp@ostream@@QEAAAEAV1@JW4seek_dir@ios@@@Z");
674 SET(p_ostream_seekp
, "?seekp@ostream@@QEAAAEAV1@J@Z");
675 SET(p_ostream_tellp
, "?tellp@ostream@@QEAAJXZ");
676 SET(p_ostream_writepad
, "?writepad@ostream@@AEAAAEAV1@PEBD0@Z");
677 SET(p_ostream_print_char
, "??6ostream@@QEAAAEAV0@D@Z");
678 SET(p_ostream_print_str
, "??6ostream@@QEAAAEAV0@PEBD@Z");
679 SET(p_ostream_print_int
, "??6ostream@@QEAAAEAV0@H@Z");
680 SET(p_ostream_print_float
, "??6ostream@@QEAAAEAV0@M@Z");
681 SET(p_ostream_print_double
, "??6ostream@@QEAAAEAV0@N@Z");
682 SET(p_ostream_print_ptr
, "??6ostream@@QEAAAEAV0@PEBX@Z");
683 SET(p_ostream_print_streambuf
, "??6ostream@@QEAAAEAV0@PEAVstreambuf@@@Z");
685 SET(p_ostream_withassign_sb_ctor
, "??0ostream_withassign@@QEAA@PEAVstreambuf@@@Z");
686 SET(p_ostream_withassign_copy_ctor
, "??0ostream_withassign@@QEAA@AEBV0@@Z");
687 SET(p_ostream_withassign_ctor
, "??0ostream_withassign@@QEAA@XZ");
688 SET(p_ostream_withassign_dtor
, "??1ostream_withassign@@UEAA@XZ");
689 SET(p_ostream_withassign_vbase_dtor
, "??_Dostream_withassign@@QEAAXXZ");
690 SET(p_ostream_withassign_assign_sb
, "??4ostream_withassign@@QEAAAEAVostream@@PEAVstreambuf@@@Z");
691 SET(p_ostream_withassign_assign_os
, "??4ostream_withassign@@QEAAAEAVostream@@AEBV1@@Z");
692 SET(p_ostream_withassign_assign
, "??4ostream_withassign@@QEAAAEAV0@AEBV0@@Z");
694 SET(p_ostrstream_copy_ctor
, "??0ostrstream@@QEAA@AEBV0@@Z");
695 SET(p_ostrstream_buffer_ctor
, "??0ostrstream@@QEAA@PEADHH@Z");
696 SET(p_ostrstream_ctor
, "??0ostrstream@@QEAA@XZ");
697 SET(p_ostrstream_dtor
, "??1ostrstream@@UEAA@XZ");
698 SET(p_ostrstream_vbase_dtor
, "??_Dostrstream@@QEAAXXZ");
699 SET(p_ostrstream_assign
, "??4ostrstream@@QEAAAEAV0@AEBV0@@Z");
700 SET(p_ostrstream_pcount
, "?pcount@ostrstream@@QEBAHXZ");
702 SET(p_ofstream_copy_ctor
, "??0ofstream@@QEAA@AEBV0@@Z");
703 SET(p_ofstream_buffer_ctor
, "??0ofstream@@QEAA@HPEADH@Z");
704 SET(p_ofstream_fd_ctor
, "??0ofstream@@QEAA@H@Z");
705 SET(p_ofstream_open_ctor
, "??0ofstream@@QEAA@PEBDHH@Z");
706 SET(p_ofstream_ctor
, "??0ofstream@@QEAA@XZ");
707 SET(p_ofstream_dtor
, "??1ofstream@@UEAA@XZ");
708 SET(p_ofstream_vbase_dtor
, "??_Dofstream@@QEAAXXZ");
709 SET(p_ofstream_attach
, "?attach@ofstream@@QEAAXH@Z");
710 SET(p_ofstream_close
, "?close@ofstream@@QEAAXXZ");
711 SET(p_ofstream_fd
, "?fd@ofstream@@QEBAHXZ");
712 SET(p_ofstream_is_open
, "?is_open@ofstream@@QEBAHXZ");
713 SET(p_ofstream_open
, "?open@ofstream@@QEAAXPEBDHH@Z");
714 SET(p_ofstream_rdbuf
, "?rdbuf@ofstream@@QEBAPEAVfilebuf@@XZ");
715 SET(p_ofstream_setbuf
, "?setbuf@ofstream@@QEAAPEAVstreambuf@@PEADH@Z");
716 SET(p_ofstream_setmode
, "?setmode@ofstream@@QEAAHH@Z");
718 SET(p_istream_copy_ctor
, "??0istream@@IEAA@AEBV0@@Z");
719 SET(p_istream_ctor
, "??0istream@@IEAA@XZ");
720 SET(p_istream_sb_ctor
, "??0istream@@QEAA@PEAVstreambuf@@@Z");
721 SET(p_istream_dtor
, "??1istream@@UEAA@XZ");
722 SET(p_istream_assign_sb
, "??4istream@@IEAAAEAV0@PEAVstreambuf@@@Z");
723 SET(p_istream_assign
, "??4istream@@IEAAAEAV0@AEBV0@@Z");
724 SET(p_istream_vbase_dtor
, "??_Distream@@QEAAXXZ");
725 SET(p_istream_eatwhite
, "?eatwhite@istream@@QEAAXXZ");
726 SET(p_istream_ipfx
, "?ipfx@istream@@QEAAHH@Z");
727 SET(p_istream_get_str_delim
, "?get@istream@@IEAAAEAV1@PEADHH@Z");
728 SET(p_istream_get_str
, "?get@istream@@QEAAAEAV1@PEADHD@Z");
729 SET(p_istream_get
, "?get@istream@@QEAAHXZ");
730 SET(p_istream_get_char
, "?get@istream@@QEAAAEAV1@AEAD@Z");
731 SET(p_istream_get_sb
, "?get@istream@@QEAAAEAV1@AEAVstreambuf@@D@Z");
732 SET(p_istream_getline
, "?getline@istream@@QEAAAEAV1@PEADHD@Z");
733 SET(p_istream_ignore
, "?ignore@istream@@QEAAAEAV1@HH@Z");
734 SET(p_istream_peek
, "?peek@istream@@QEAAHXZ");
735 SET(p_istream_putback
, "?putback@istream@@QEAAAEAV1@D@Z");
736 SET(p_istream_read
, "?read@istream@@QEAAAEAV1@PEADH@Z");
737 SET(p_istream_seekg
, "?seekg@istream@@QEAAAEAV1@J@Z");
738 SET(p_istream_seekg_offset
, "?seekg@istream@@QEAAAEAV1@JW4seek_dir@ios@@@Z");
739 SET(p_istream_sync
, "?sync@istream@@QEAAHXZ");
740 SET(p_istream_tellg
, "?tellg@istream@@QEAAJXZ");
741 SET(p_istream_getint
, "?getint@istream@@AEAAHPEAD@Z");
742 SET(p_istream_getdouble
, "?getdouble@istream@@AEAAHPEADH@Z");
743 SET(p_istream_read_char
, "??5istream@@QEAAAEAV0@AEAD@Z");
744 SET(p_istream_read_str
, "??5istream@@QEAAAEAV0@PEAD@Z");
745 SET(p_istream_read_short
, "??5istream@@QEAAAEAV0@AEAF@Z");
746 SET(p_istream_read_unsigned_short
, "??5istream@@QEAAAEAV0@AEAG@Z");
747 SET(p_istream_read_int
, "??5istream@@QEAAAEAV0@AEAH@Z");
748 SET(p_istream_read_unsigned_int
, "??5istream@@QEAAAEAV0@AEAI@Z");
749 SET(p_istream_read_long
, "??5istream@@QEAAAEAV0@AEAJ@Z");
750 SET(p_istream_read_unsigned_long
, "??5istream@@QEAAAEAV0@AEAK@Z");
751 SET(p_istream_read_float
, "??5istream@@QEAAAEAV0@AEAM@Z");
752 SET(p_istream_read_double
, "??5istream@@QEAAAEAV0@AEAN@Z");
753 SET(p_istream_read_long_double
, "??5istream@@QEAAAEAV0@AEAO@Z");
754 SET(p_istream_read_streambuf
, "??5istream@@QEAAAEAV0@PEAVstreambuf@@@Z");
756 SET(p_istream_withassign_sb_ctor
, "??0istream_withassign@@QEAA@PEAVstreambuf@@@Z");
757 SET(p_istream_withassign_copy_ctor
, "??0istream_withassign@@QEAA@AEBV0@@Z");
758 SET(p_istream_withassign_ctor
, "??0istream_withassign@@QEAA@XZ");
759 SET(p_istream_withassign_dtor
, "??1ostream_withassign@@UEAA@XZ");
760 SET(p_istream_withassign_vbase_dtor
, "??_Distream_withassign@@QEAAXXZ");
761 SET(p_istream_withassign_assign_sb
, "??4istream_withassign@@QEAAAEAVistream@@PEAVstreambuf@@@Z");
762 SET(p_istream_withassign_assign_is
, "??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z");
763 SET(p_istream_withassign_assign
, "??4istream_withassign@@QEAAAEAV0@AEBV0@@Z");
765 SET(p_istrstream_copy_ctor
, "??0istrstream@@QEAA@AEBV0@@Z");
766 SET(p_istrstream_str_ctor
, "??0istrstream@@QEAA@PEAD@Z");
767 SET(p_istrstream_buffer_ctor
, "??0istrstream@@QEAA@PEADH@Z");
768 SET(p_istrstream_dtor
, "??1istrstream@@UEAA@XZ");
769 SET(p_istrstream_vbase_dtor
, "??_Distrstream@@QEAAXXZ");
770 SET(p_istrstream_assign
, "??4istrstream@@QEAAAEAV0@AEBV0@@Z");
772 SET(p_iostream_copy_ctor
, "??0iostream@@IEAA@AEBV0@@Z");
773 SET(p_iostream_sb_ctor
, "??0iostream@@QEAA@PEAVstreambuf@@@Z");
774 SET(p_iostream_ctor
, "??0iostream@@IEAA@XZ");
775 SET(p_iostream_dtor
, "??1iostream@@UEAA@XZ");
776 SET(p_iostream_vbase_dtor
, "??_Diostream@@QEAAXXZ");
777 SET(p_iostream_assign_sb
, "??4iostream@@IEAAAEAV0@PEAVstreambuf@@@Z");
778 SET(p_iostream_assign
, "??4iostream@@IEAAAEAV0@AEAV0@@Z");
780 SET(p_ifstream_copy_ctor
, "??0ifstream@@QEAA@AEBV0@@Z");
781 SET(p_ifstream_buffer_ctor
, "??0ifstream@@QEAA@HPEADH@Z");
782 SET(p_ifstream_fd_ctor
, "??0ifstream@@QEAA@H@Z");
783 SET(p_ifstream_open_ctor
, "??0ifstream@@QEAA@PEBDHH@Z");
784 SET(p_ifstream_ctor
, "??0ifstream@@QEAA@XZ");
785 SET(p_ifstream_dtor
, "??1ifstream@@UEAA@XZ");
786 SET(p_ifstream_vbase_dtor
, "??_Difstream@@QEAAXXZ");
787 SET(p_ifstream_attach
, "?attach@ifstream@@QEAAXH@Z");
788 SET(p_ifstream_close
, "?close@ifstream@@QEAAXXZ");
789 SET(p_ifstream_fd
, "?fd@ifstream@@QEBAHXZ");
790 SET(p_ifstream_is_open
, "?is_open@ifstream@@QEBAHXZ");
791 SET(p_ifstream_open
, "?open@ifstream@@QEAAXPEBDHH@Z");
792 SET(p_ifstream_rdbuf
, "?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ");
793 SET(p_ifstream_setbuf
, "?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z");
794 SET(p_ifstream_setmode
, "?setmode@ifstream@@QEAAHH@Z");
796 SET(p_strstream_copy_ctor
, "??0strstream@@QEAA@AEBV0@@Z");
797 SET(p_strstream_buffer_ctor
, "??0strstream@@QEAA@PEADHH@Z");
798 SET(p_strstream_ctor
, "??0strstream@@QEAA@XZ");
799 SET(p_strstream_dtor
, "??1strstream@@UEAA@XZ");
800 SET(p_strstream_vbase_dtor
, "??_Dstrstream@@QEAAXXZ");
801 SET(p_strstream_assign
, "??4strstream@@QEAAAEAV0@AEAV0@@Z");
803 SET(p_stdiostream_copy_ctor
, "??0stdiostream@@QEAA@AEBV0@@Z");
804 SET(p_stdiostream_file_ctor
, "??0stdiostream@@QEAA@PEAU_iobuf@@@Z");
805 SET(p_stdiostream_dtor
, "??1stdiostream@@UEAA@XZ");
806 SET(p_stdiostream_vbase_dtor
, "??_Dstdiostream@@QEAAXXZ");
807 SET(p_stdiostream_assign
, "??4stdiostream@@QEAAAEAV0@AEAV0@@Z");
809 SET(p_fstream_copy_ctor
, "??0fstream@@QEAA@AEBV0@@Z");
810 SET(p_fstream_buffer_ctor
, "??0fstream@@QEAA@HPEADH@Z");
811 SET(p_fstream_fd_ctor
, "??0fstream@@QEAA@H@Z");
812 SET(p_fstream_open_ctor
, "??0fstream@@QEAA@PEBDHH@Z");
813 SET(p_fstream_ctor
, "??0fstream@@QEAA@XZ");
814 SET(p_fstream_dtor
, "??1fstream@@UEAA@XZ");
815 SET(p_fstream_vbase_dtor
, "??_Dfstream@@QEAAXXZ");
816 SET(p_fstream_attach
, "?attach@fstream@@QEAAXH@Z");
817 SET(p_fstream_close
, "?close@fstream@@QEAAXXZ");
818 SET(p_fstream_fd
, "?fd@fstream@@QEBAHXZ");
819 SET(p_fstream_is_open
, "?is_open@fstream@@QEBAHXZ");
820 SET(p_fstream_open
, "?open@fstream@@QEAAXPEBDHH@Z");
821 SET(p_fstream_rdbuf
, "?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ");
822 SET(p_fstream_setbuf
, "?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z");
823 SET(p_fstream_setmode
, "?setmode@fstream@@QEAAHH@Z");
825 SET(p_Iostream_init_ios_ctor
, "??0Iostream_init@@QEAA@AEAVios@@H@Z");
827 SET(p_exception_ctor
, "??0exception@@QEAA@AEBQEBD@Z");
828 SET(p_exception_dtor
, "??1exception@@UEAA@XZ");
829 SET(p_exception_what
, "?what@exception@@UEBAPEBDXZ");
831 SET(p_logic_error_ctor
, "??0logic_error@@QEAA@AEBQEBD@Z");
832 SET(p_logic_error_dtor
, "??1logic_error@@UEAA@XZ");
834 p_operator_new
= (void*)GetProcAddress(msvcrt
, "??2@YAPAXI@Z");
835 p_operator_delete
= (void*)GetProcAddress(msvcrt
, "??3@YAXPAX@Z");
837 SET(p_streambuf_reserve_ctor
, "??0streambuf@@IAE@PADH@Z");
838 SET(p_streambuf_ctor
, "??0streambuf@@IAE@XZ");
839 SET(p_streambuf_dtor
, "??1streambuf@@UAE@XZ");
840 SET(p_streambuf_allocate
, "?allocate@streambuf@@IAEHXZ");
841 SET(p_streambuf_clrclock
, "?clrlock@streambuf@@QAEXXZ");
842 SET(p_streambuf_doallocate
, "?doallocate@streambuf@@MAEHXZ");
843 SET(p_streambuf_gbump
, "?gbump@streambuf@@IAEXH@Z");
844 SET(p_streambuf_in_avail
, "?in_avail@streambuf@@QBEHXZ");
845 SET(p_streambuf_lock
, "?lock@streambuf@@QAEXXZ");
846 SET(p_streambuf_out_waiting
, "?out_waiting@streambuf@@QBEHXZ");
847 SET(p_streambuf_pbackfail
, "?pbackfail@streambuf@@UAEHH@Z");
848 SET(p_streambuf_pbump
, "?pbump@streambuf@@IAEXH@Z");
849 SET(p_streambuf_sbumpc
, "?sbumpc@streambuf@@QAEHXZ");
850 SET(p_streambuf_setb
, "?setb@streambuf@@IAEXPAD0H@Z");
851 SET(p_streambuf_setbuf
, "?setbuf@streambuf@@UAEPAV1@PADH@Z");
852 SET(p_streambuf_setlock
, "?setlock@streambuf@@QAEXXZ");
853 SET(p_streambuf_sgetc
, "?sgetc@streambuf@@QAEHXZ");
854 SET(p_streambuf_snextc
, "?snextc@streambuf@@QAEHXZ");
855 SET(p_streambuf_sputc
, "?sputc@streambuf@@QAEHH@Z");
856 SET(p_streambuf_stossc
, "?stossc@streambuf@@QAEXXZ");
857 SET(p_streambuf_sync
, "?sync@streambuf@@UAEHXZ");
858 SET(p_streambuf_unlock
, "?unlock@streambuf@@QAEXXZ");
859 SET(p_streambuf_xsgetn
, "?xsgetn@streambuf@@UAEHPADH@Z");
860 SET(p_streambuf_xsputn
, "?xsputn@streambuf@@UAEHPBDH@Z");
862 SET(p_filebuf_fd_ctor
, "??0filebuf@@QAE@H@Z");
863 SET(p_filebuf_fd_reserve_ctor
, "??0filebuf@@QAE@HPADH@Z");
864 SET(p_filebuf_ctor
, "??0filebuf@@QAE@XZ");
865 SET(p_filebuf_dtor
, "??1filebuf@@UAE@XZ");
866 SET(p_filebuf_attach
, "?attach@filebuf@@QAEPAV1@H@Z");
867 SET(p_filebuf_open
, "?open@filebuf@@QAEPAV1@PBDHH@Z");
868 SET(p_filebuf_close
, "?close@filebuf@@QAEPAV1@XZ");
869 SET(p_filebuf_setmode
, "?setmode@filebuf@@QAEHH@Z");
870 SET(p_filebuf_setbuf
, "?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z");
871 SET(p_filebuf_sync
, "?sync@filebuf@@UAEHXZ");
872 SET(p_filebuf_overflow
, "?overflow@filebuf@@UAEHH@Z");
873 SET(p_filebuf_underflow
, "?underflow@filebuf@@UAEHXZ");
874 SET(p_filebuf_seekoff
, "?seekoff@filebuf@@UAEJJW4seek_dir@ios@@H@Z");
875 SET(p_filebuf_is_open
, "?is_open@filebuf@@QBEHXZ");
877 SET(p_strstreambuf_dynamic_ctor
, "??0strstreambuf@@QAE@H@Z");
878 SET(p_strstreambuf_funcs_ctor
, "??0strstreambuf@@QAE@P6APAXJ@ZP6AXPAX@Z@Z");
879 SET(p_strstreambuf_buffer_ctor
, "??0strstreambuf@@QAE@PADH0@Z");
880 SET(p_strstreambuf_ubuffer_ctor
, "??0strstreambuf@@QAE@PAEH0@Z");
881 SET(p_strstreambuf_ctor
, "??0strstreambuf@@QAE@XZ");
882 SET(p_strstreambuf_dtor
, "??1strstreambuf@@UAE@XZ");
883 SET(p_strstreambuf_doallocate
, "?doallocate@strstreambuf@@MAEHXZ");
884 SET(p_strstreambuf_freeze
, "?freeze@strstreambuf@@QAEXH@Z");
885 SET(p_strstreambuf_overflow
, "?overflow@strstreambuf@@UAEHH@Z");
886 SET(p_strstreambuf_seekoff
, "?seekoff@strstreambuf@@UAEJJW4seek_dir@ios@@H@Z");
887 SET(p_strstreambuf_setbuf
, "?setbuf@strstreambuf@@UAEPAVstreambuf@@PADH@Z");
888 SET(p_strstreambuf_underflow
, "?underflow@strstreambuf@@UAEHXZ");
890 SET(p_stdiobuf_file_ctor
, "??0stdiobuf@@QAE@PAU_iobuf@@@Z");
891 SET(p_stdiobuf_dtor
, "??1stdiobuf@@UAE@XZ");
892 SET(p_stdiobuf_overflow
, "?overflow@stdiobuf@@UAEHH@Z");
893 SET(p_stdiobuf_pbackfail
, "?pbackfail@stdiobuf@@UAEHH@Z");
894 SET(p_stdiobuf_seekoff
, "?seekoff@stdiobuf@@UAEJJW4seek_dir@ios@@H@Z");
895 SET(p_stdiobuf_setrwbuf
, "?setrwbuf@stdiobuf@@QAEHHH@Z");
896 SET(p_stdiobuf_sync
, "?sync@stdiobuf@@UAEHXZ");
897 SET(p_stdiobuf_underflow
, "?underflow@stdiobuf@@UAEHXZ");
899 SET(p_ios_copy_ctor
, "??0ios@@IAE@ABV0@@Z");
900 SET(p_ios_ctor
, "??0ios@@IAE@XZ");
901 SET(p_ios_sb_ctor
, "??0ios@@QAE@PAVstreambuf@@@Z");
902 SET(p_ios_assign
, "??4ios@@IAEAAV0@ABV0@@Z");
903 SET(p_ios_init
, "?init@ios@@IAEXPAVstreambuf@@@Z");
904 SET(p_ios_dtor
, "??1ios@@UAE@XZ");
905 SET(p_ios_clrlock
, "?clrlock@ios@@QAAXXZ");
906 SET(p_ios_setlock
, "?setlock@ios@@QAAXXZ");
907 SET(p_ios_lock
, "?lock@ios@@QAAXXZ");
908 SET(p_ios_unlock
, "?unlock@ios@@QAAXXZ");
909 SET(p_ios_lockbuf
, "?lockbuf@ios@@QAAXXZ");
910 SET(p_ios_unlockbuf
, "?unlockbuf@ios@@QAAXXZ");
911 SET(p_ios_flags_set
, "?flags@ios@@QAEJJ@Z");
912 SET(p_ios_flags_get
, "?flags@ios@@QBEJXZ");
913 SET(p_ios_setf
, "?setf@ios@@QAEJJ@Z");
914 SET(p_ios_setf_mask
, "?setf@ios@@QAEJJJ@Z");
915 SET(p_ios_unsetf
, "?unsetf@ios@@QAEJJ@Z");
916 SET(p_ios_good
, "?good@ios@@QBEHXZ");
917 SET(p_ios_bad
, "?bad@ios@@QBEHXZ");
918 SET(p_ios_eof
, "?eof@ios@@QBEHXZ");
919 SET(p_ios_fail
, "?fail@ios@@QBEHXZ");
920 SET(p_ios_clear
, "?clear@ios@@QAEXH@Z");
921 SET(p_ios_iword
, "?iword@ios@@QBEAAJH@Z");
922 SET(p_ios_pword
, "?pword@ios@@QBEAAPAXH@Z");
924 SET(p_ostream_copy_ctor
, "??0ostream@@IAE@ABV0@@Z");
925 SET(p_ostream_sb_ctor
, "??0ostream@@QAE@PAVstreambuf@@@Z");
926 SET(p_ostream_ctor
, "??0ostream@@IAE@XZ");
927 SET(p_ostream_dtor
, "??1ostream@@UAE@XZ");
928 SET(p_ostream_assign
, "??4ostream@@IAEAAV0@ABV0@@Z");
929 SET(p_ostream_assign_sb
, "??4ostream@@IAEAAV0@PAVstreambuf@@@Z");
930 SET(p_ostream_vbase_dtor
, "??_Dostream@@QAEXXZ");
931 SET(p_ostream_flush
, "?flush@ostream@@QAEAAV1@XZ");
932 SET(p_ostream_opfx
, "?opfx@ostream@@QAEHXZ");
933 SET(p_ostream_osfx
, "?osfx@ostream@@QAEXXZ");
934 SET(p_ostream_put_char
, "?put@ostream@@QAEAAV1@D@Z");
935 SET(p_ostream_write_char
, "?write@ostream@@QAEAAV1@PBDH@Z");
936 SET(p_ostream_seekp_offset
, "?seekp@ostream@@QAEAAV1@JW4seek_dir@ios@@@Z");
937 SET(p_ostream_seekp
, "?seekp@ostream@@QAEAAV1@J@Z");
938 SET(p_ostream_tellp
, "?tellp@ostream@@QAEJXZ");
939 SET(p_ostream_writepad
, "?writepad@ostream@@AAEAAV1@PBD0@Z");
940 SET(p_ostream_print_char
, "??6ostream@@QAEAAV0@D@Z");
941 SET(p_ostream_print_str
, "??6ostream@@QAEAAV0@PBD@Z");
942 SET(p_ostream_print_int
, "??6ostream@@QAEAAV0@H@Z");
943 SET(p_ostream_print_float
, "??6ostream@@QAEAAV0@M@Z");
944 SET(p_ostream_print_double
, "??6ostream@@QAEAAV0@N@Z");
945 SET(p_ostream_print_ptr
, "??6ostream@@QAEAAV0@PBX@Z");
946 SET(p_ostream_print_streambuf
, "??6ostream@@QAEAAV0@PAVstreambuf@@@Z");
948 SET(p_ostream_withassign_sb_ctor
, "??0ostream_withassign@@QAE@PAVstreambuf@@@Z");
949 SET(p_ostream_withassign_copy_ctor
, "??0ostream_withassign@@QAE@ABV0@@Z");
950 SET(p_ostream_withassign_ctor
, "??0ostream_withassign@@QAE@XZ");
951 SET(p_ostream_withassign_dtor
, "??1ostream_withassign@@UAE@XZ");
952 SET(p_ostream_withassign_vbase_dtor
, "??_Dostream_withassign@@QAEXXZ");
953 SET(p_ostream_withassign_assign_sb
, "??4ostream_withassign@@QAEAAVostream@@PAVstreambuf@@@Z");
954 SET(p_ostream_withassign_assign_os
, "??4ostream_withassign@@QAEAAVostream@@ABV1@@Z");
955 SET(p_ostream_withassign_assign
, "??4ostream_withassign@@QAEAAV0@ABV0@@Z");
957 SET(p_ostrstream_copy_ctor
, "??0ostrstream@@QAE@ABV0@@Z");
958 SET(p_ostrstream_buffer_ctor
, "??0ostrstream@@QAE@PADHH@Z");
959 SET(p_ostrstream_ctor
, "??0ostrstream@@QAE@XZ");
960 SET(p_ostrstream_dtor
, "??1ostrstream@@UAE@XZ");
961 SET(p_ostrstream_vbase_dtor
, "??_Dostrstream@@QAEXXZ");
962 SET(p_ostrstream_assign
, "??4ostrstream@@QAEAAV0@ABV0@@Z");
963 SET(p_ostrstream_pcount
, "?pcount@ostrstream@@QBEHXZ");
965 SET(p_ofstream_copy_ctor
, "??0ofstream@@QAE@ABV0@@Z");
966 SET(p_ofstream_fd_ctor
, "??0ofstream@@QAE@H@Z");
967 SET(p_ofstream_buffer_ctor
, "??0ofstream@@QAE@HPADH@Z");
968 SET(p_ofstream_open_ctor
, "??0ofstream@@QAE@PBDHH@Z");
969 SET(p_ofstream_ctor
, "??0ofstream@@QAE@XZ");
970 SET(p_ofstream_dtor
, "??1ofstream@@UAE@XZ");
971 SET(p_ofstream_vbase_dtor
, "??_Dofstream@@QAEXXZ");
972 SET(p_ofstream_attach
, "?attach@ofstream@@QAEXH@Z");
973 SET(p_ofstream_close
, "?close@ofstream@@QAEXXZ");
974 SET(p_ofstream_fd
, "?fd@ofstream@@QBEHXZ");
975 SET(p_ofstream_is_open
, "?is_open@ofstream@@QBEHXZ");
976 SET(p_ofstream_open
, "?open@ofstream@@QAEXPBDHH@Z");
977 SET(p_ofstream_rdbuf
, "?rdbuf@ofstream@@QBEPAVfilebuf@@XZ");
978 SET(p_ofstream_setbuf
, "?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z");
979 SET(p_ofstream_setmode
, "?setmode@ofstream@@QAEHH@Z");
981 SET(p_istream_copy_ctor
, "??0istream@@IAE@ABV0@@Z");
982 SET(p_istream_ctor
, "??0istream@@IAE@XZ");
983 SET(p_istream_sb_ctor
, "??0istream@@QAE@PAVstreambuf@@@Z");
984 SET(p_istream_dtor
, "??1istream@@UAE@XZ");
985 SET(p_istream_assign_sb
, "??4istream@@IAEAAV0@PAVstreambuf@@@Z");
986 SET(p_istream_assign
, "??4istream@@IAEAAV0@ABV0@@Z");
987 SET(p_istream_vbase_dtor
, "??_Distream@@QAEXXZ");
988 SET(p_istream_eatwhite
, "?eatwhite@istream@@QAEXXZ");
989 SET(p_istream_ipfx
, "?ipfx@istream@@QAEHH@Z");
990 SET(p_istream_get_str_delim
, "?get@istream@@IAEAAV1@PADHH@Z");
991 SET(p_istream_get_str
, "?get@istream@@QAEAAV1@PADHD@Z");
992 SET(p_istream_get
, "?get@istream@@QAEHXZ");
993 SET(p_istream_get_char
, "?get@istream@@QAEAAV1@AAD@Z");
994 SET(p_istream_get_sb
, "?get@istream@@QAEAAV1@AAVstreambuf@@D@Z");
995 SET(p_istream_getline
, "?getline@istream@@QAEAAV1@PADHD@Z");
996 SET(p_istream_ignore
, "?ignore@istream@@QAEAAV1@HH@Z");
997 SET(p_istream_peek
, "?peek@istream@@QAEHXZ");
998 SET(p_istream_putback
, "?putback@istream@@QAEAAV1@D@Z");
999 SET(p_istream_read
, "?read@istream@@QAEAAV1@PADH@Z");
1000 SET(p_istream_seekg
, "?seekg@istream@@QAEAAV1@J@Z");
1001 SET(p_istream_seekg_offset
, "?seekg@istream@@QAEAAV1@JW4seek_dir@ios@@@Z");
1002 SET(p_istream_sync
, "?sync@istream@@QAEHXZ");
1003 SET(p_istream_tellg
, "?tellg@istream@@QAEJXZ");
1004 SET(p_istream_getint
, "?getint@istream@@AAEHPAD@Z");
1005 SET(p_istream_getdouble
, "?getdouble@istream@@AAEHPADH@Z");
1006 SET(p_istream_read_char
, "??5istream@@QAEAAV0@AAD@Z");
1007 SET(p_istream_read_str
, "??5istream@@QAEAAV0@PAD@Z");
1008 SET(p_istream_read_short
, "??5istream@@QAEAAV0@AAF@Z");
1009 SET(p_istream_read_unsigned_short
, "??5istream@@QAEAAV0@AAG@Z");
1010 SET(p_istream_read_int
, "??5istream@@QAEAAV0@AAH@Z");
1011 SET(p_istream_read_unsigned_int
, "??5istream@@QAEAAV0@AAI@Z");
1012 SET(p_istream_read_long
, "??5istream@@QAEAAV0@AAJ@Z");
1013 SET(p_istream_read_unsigned_long
, "??5istream@@QAEAAV0@AAK@Z");
1014 SET(p_istream_read_float
, "??5istream@@QAEAAV0@AAM@Z");
1015 SET(p_istream_read_double
, "??5istream@@QAEAAV0@AAN@Z");
1016 SET(p_istream_read_long_double
, "??5istream@@QAEAAV0@AAO@Z");
1017 SET(p_istream_read_streambuf
, "??5istream@@QAEAAV0@PAVstreambuf@@@Z");
1019 SET(p_istream_withassign_sb_ctor
, "??0istream_withassign@@QAE@PAVstreambuf@@@Z");
1020 SET(p_istream_withassign_copy_ctor
, "??0istream_withassign@@QAE@ABV0@@Z");
1021 SET(p_istream_withassign_ctor
, "??0istream_withassign@@QAE@XZ");
1022 SET(p_istream_withassign_dtor
, "??1istream_withassign@@UAE@XZ");
1023 SET(p_istream_withassign_vbase_dtor
, "??_Distream_withassign@@QAEXXZ");
1024 SET(p_istream_withassign_assign_sb
, "??4istream_withassign@@QAEAAVistream@@PAVstreambuf@@@Z");
1025 SET(p_istream_withassign_assign_is
, "??4istream_withassign@@QAEAAVistream@@ABV1@@Z");
1026 SET(p_istream_withassign_assign
, "??4istream_withassign@@QAEAAV0@ABV0@@Z");
1028 SET(p_istrstream_copy_ctor
, "??0istrstream@@QAE@ABV0@@Z");
1029 SET(p_istrstream_str_ctor
, "??0istrstream@@QAE@PAD@Z");
1030 SET(p_istrstream_buffer_ctor
, "??0istrstream@@QAE@PADH@Z");
1031 SET(p_istrstream_dtor
, "??1istrstream@@UAE@XZ");
1032 SET(p_istrstream_vbase_dtor
, "??_Distrstream@@QAEXXZ");
1033 SET(p_istrstream_assign
, "??4istrstream@@QAEAAV0@ABV0@@Z");
1035 SET(p_iostream_copy_ctor
, "??0iostream@@IAE@ABV0@@Z");
1036 SET(p_iostream_sb_ctor
, "??0iostream@@QAE@PAVstreambuf@@@Z");
1037 SET(p_iostream_ctor
, "??0iostream@@IAE@XZ");
1038 SET(p_iostream_dtor
, "??1iostream@@UAE@XZ");
1039 SET(p_iostream_vbase_dtor
, "??_Diostream@@QAEXXZ");
1040 SET(p_iostream_assign_sb
, "??4iostream@@IAEAAV0@PAVstreambuf@@@Z");
1041 SET(p_iostream_assign
, "??4iostream@@IAEAAV0@AAV0@@Z");
1043 SET(p_ifstream_copy_ctor
, "??0ifstream@@QAE@ABV0@@Z");
1044 SET(p_ifstream_fd_ctor
, "??0ifstream@@QAE@H@Z");
1045 SET(p_ifstream_buffer_ctor
, "??0ifstream@@QAE@HPADH@Z");
1046 SET(p_ifstream_open_ctor
, "??0ifstream@@QAE@PBDHH@Z");
1047 SET(p_ifstream_ctor
, "??0ifstream@@QAE@XZ");
1048 SET(p_ifstream_dtor
, "??1ifstream@@UAE@XZ");
1049 SET(p_ifstream_vbase_dtor
, "??_Difstream@@QAEXXZ");
1050 SET(p_ifstream_attach
, "?attach@ifstream@@QAEXH@Z");
1051 SET(p_ifstream_close
, "?close@ifstream@@QAEXXZ");
1052 SET(p_ifstream_fd
, "?fd@ifstream@@QBEHXZ");
1053 SET(p_ifstream_is_open
, "?is_open@ifstream@@QBEHXZ");
1054 SET(p_ifstream_open
, "?open@ifstream@@QAEXPBDHH@Z");
1055 SET(p_ifstream_rdbuf
, "?rdbuf@ifstream@@QBEPAVfilebuf@@XZ");
1056 SET(p_ifstream_setbuf
, "?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z");
1057 SET(p_ifstream_setmode
, "?setmode@ifstream@@QAEHH@Z");
1059 SET(p_strstream_copy_ctor
, "??0strstream@@QAE@ABV0@@Z");
1060 SET(p_strstream_buffer_ctor
, "??0strstream@@QAE@PADHH@Z");
1061 SET(p_strstream_ctor
, "??0strstream@@QAE@XZ");
1062 SET(p_strstream_dtor
, "??1strstream@@UAE@XZ");
1063 SET(p_strstream_vbase_dtor
, "??_Dstrstream@@QAEXXZ");
1064 SET(p_strstream_assign
, "??4strstream@@QAEAAV0@AAV0@@Z");
1066 SET(p_stdiostream_copy_ctor
, "??0stdiostream@@QAE@ABV0@@Z");
1067 SET(p_stdiostream_file_ctor
, "??0stdiostream@@QAE@PAU_iobuf@@@Z");
1068 SET(p_stdiostream_dtor
, "??1stdiostream@@UAE@XZ");
1069 SET(p_stdiostream_vbase_dtor
, "??_Dstdiostream@@QAEXXZ");
1070 SET(p_stdiostream_assign
, "??4stdiostream@@QAEAAV0@AAV0@@Z");
1072 SET(p_fstream_copy_ctor
, "??0fstream@@QAE@ABV0@@Z");
1073 SET(p_fstream_fd_ctor
, "??0fstream@@QAE@H@Z");
1074 SET(p_fstream_buffer_ctor
, "??0fstream@@QAE@HPADH@Z");
1075 SET(p_fstream_open_ctor
, "??0fstream@@QAE@PBDHH@Z");
1076 SET(p_fstream_ctor
, "??0fstream@@QAE@XZ");
1077 SET(p_fstream_dtor
, "??1fstream@@UAE@XZ");
1078 SET(p_fstream_vbase_dtor
, "??_Dfstream@@QAEXXZ");
1079 SET(p_fstream_attach
, "?attach@fstream@@QAEXH@Z");
1080 SET(p_fstream_close
, "?close@fstream@@QAEXXZ");
1081 SET(p_fstream_fd
, "?fd@fstream@@QBEHXZ");
1082 SET(p_fstream_is_open
, "?is_open@fstream@@QBEHXZ");
1083 SET(p_fstream_open
, "?open@fstream@@QAEXPBDHH@Z");
1084 SET(p_fstream_rdbuf
, "?rdbuf@fstream@@QBEPAVfilebuf@@XZ");
1085 SET(p_fstream_setbuf
, "?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z");
1086 SET(p_fstream_setmode
, "?setmode@fstream@@QAEHH@Z");
1088 SET(p_Iostream_init_ios_ctor
, "??0Iostream_init@@QAE@AAVios@@H@Z");
1090 SET(p_exception_ctor
, "??0exception@@QAE@ABQBD@Z");
1091 SET(p_exception_dtor
, "??1exception@@UAE@XZ");
1092 SET(p_exception_what
, "?what@exception@@UBEPBDXZ");
1094 SET(p_logic_error_ctor
, "??0logic_error@@QAE@ABQBD@Z");
1095 SET(p_logic_error_dtor
, "??1logic_error@@UAE@XZ");
1097 SET(p_ios_static_lock
, "?x_lockc@ios@@0U_CRT_CRITICAL_SECTION@@A");
1098 SET(p_ios_lockc
, "?lockc@ios@@KAXXZ");
1099 SET(p_ios_unlockc
, "?unlockc@ios@@KAXXZ");
1100 SET(p_ios_maxbit
, "?x_maxbit@ios@@0JA");
1101 SET(p_ios_bitalloc
, "?bitalloc@ios@@SAJXZ");
1102 SET(p_ios_curindex
, "?x_curindex@ios@@0HA");
1103 SET(p_ios_statebuf
, "?x_statebuf@ios@@0PAJA");
1104 SET(p_ios_xalloc
, "?xalloc@ios@@SAHXZ");
1105 SET(p_ios_sync_with_stdio
, "?sync_with_stdio@ios@@SAXXZ");
1106 SET(p_ios_sunk_with_stdio
, "?sunk_with_stdio@ios@@0HA");
1107 SET(p_ios_fLockcInit
, "?fLockcInit@ios@@0HA");
1108 SET(p_cin
, "?cin@@3Vistream_withassign@@A");
1109 SET(p_cout
, "?cout@@3Vostream_withassign@@A");
1110 SET(p_cerr
, "?cerr@@3Vostream_withassign@@A");
1111 SET(p_clog
, "?clog@@3Vostream_withassign@@A");
1113 SET(p__mtlock
, "_mtlock");
1114 SET(p__mtunlock
, "_mtunlock");
1116 init_thiscall_thunk();
1120 static int overflow_count
, underflow_count
;
1121 static streambuf
*test_this
;
1122 static char test_get_buffer
[24];
1123 static int buffer_pos
, get_end
;
1126 static int __thiscall
test_streambuf_overflow(int ch
)
1128 static int __thiscall
test_streambuf_overflow(streambuf
*this, int ch
)
1132 if (ch
== 'L') /* simulate a failure */
1134 if (!test_this
->unbuffered
)
1135 test_this
->pptr
= test_this
->pbase
+ 5;
1136 return (unsigned char)ch
;
1140 static int __thiscall
test_streambuf_underflow(void)
1142 static int __thiscall
test_streambuf_underflow(streambuf
*this)
1146 if (test_this
->unbuffered
) {
1147 return (buffer_pos
< 23) ? (unsigned char)test_get_buffer
[buffer_pos
++] : EOF
;
1148 } else if (test_this
->gptr
< test_this
->egptr
) {
1149 return (unsigned char)*test_this
->gptr
;
1151 return get_end
? EOF
: (unsigned char)*(test_this
->gptr
= test_this
->eback
);
1155 struct streambuf_lock_arg
1162 static DWORD WINAPI
lock_streambuf(void *arg
)
1164 struct streambuf_lock_arg
*lock_arg
= arg
;
1165 call_func1(p_streambuf_lock
, lock_arg
->sb
);
1166 SetEvent(lock_arg
->lock
[0]);
1167 WaitForSingleObject(lock_arg
->test
[0], INFINITE
);
1168 call_func1(p_streambuf_lock
, lock_arg
->sb
);
1169 SetEvent(lock_arg
->lock
[1]);
1170 WaitForSingleObject(lock_arg
->test
[1], INFINITE
);
1171 call_func1(p_streambuf_lock
, lock_arg
->sb
);
1172 SetEvent(lock_arg
->lock
[2]);
1173 WaitForSingleObject(lock_arg
->test
[2], INFINITE
);
1174 call_func1(p_streambuf_unlock
, lock_arg
->sb
);
1175 SetEvent(lock_arg
->lock
[3]);
1176 WaitForSingleObject(lock_arg
->test
[3], INFINITE
);
1177 call_func1(p_streambuf_unlock
, lock_arg
->sb
);
1181 static void test_streambuf(void)
1183 streambuf sb
, sb2
, sb3
, *psb
;
1184 vtable_ptr test_streambuf_vtbl
[11];
1185 struct streambuf_lock_arg lock_arg
;
1191 memset(&sb
, 0xab, sizeof(streambuf
));
1192 memset(&sb2
, 0xab, sizeof(streambuf
));
1193 memset(&sb3
, 0xab, sizeof(streambuf
));
1196 call_func1(p_streambuf_ctor
, &sb
);
1197 ok(sb
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", sb
.allocated
);
1198 ok(sb
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb
.unbuffered
);
1199 ok(sb
.base
== NULL
, "wrong base pointer, expected %p got %p\n", NULL
, sb
.base
);
1200 ok(sb
.ebuf
== NULL
, "wrong ebuf pointer, expected %p got %p\n", NULL
, sb
.ebuf
);
1201 ok(sb
.lock
.LockCount
== -1, "wrong critical section state, expected -1 got %d\n", sb
.lock
.LockCount
);
1202 call_func3(p_streambuf_reserve_ctor
, &sb2
, reserve
, 16);
1203 ok(sb2
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", sb2
.allocated
);
1204 ok(sb2
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb2
.unbuffered
);
1205 ok(sb2
.base
== reserve
, "wrong base pointer, expected %p got %p\n", reserve
, sb2
.base
);
1206 ok(sb2
.ebuf
== reserve
+16, "wrong ebuf pointer, expected %p got %p\n", reserve
+16, sb2
.ebuf
);
1207 ok(sb
.lock
.LockCount
== -1, "wrong critical section state, expected -1 got %d\n", sb
.lock
.LockCount
);
1208 call_func1(p_streambuf_ctor
, &sb3
);
1209 ok(sb3
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", sb3
.allocated
);
1210 ok(sb3
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb3
.unbuffered
);
1211 ok(sb3
.base
== NULL
, "wrong base pointer, expected %p got %p\n", NULL
, sb3
.base
);
1212 ok(sb3
.ebuf
== NULL
, "wrong ebuf pointer, expected %p got %p\n", NULL
, sb3
.ebuf
);
1214 memcpy(test_streambuf_vtbl
, sb
.vtable
, sizeof(test_streambuf_vtbl
));
1215 test_streambuf_vtbl
[7] = (vtable_ptr
)&test_streambuf_overflow
;
1216 test_streambuf_vtbl
[8] = (vtable_ptr
)&test_streambuf_underflow
;
1217 sb2
.vtable
= test_streambuf_vtbl
;
1218 sb3
.vtable
= test_streambuf_vtbl
;
1219 overflow_count
= underflow_count
= 0;
1220 strcpy(test_get_buffer
, "CompuGlobalHyperMegaNet");
1221 buffer_pos
= get_end
= 0;
1224 ok(sb
.do_lock
== -1, "expected do_lock value -1, got %d\n", sb
.do_lock
);
1225 call_func1(p_streambuf_setlock
, &sb
);
1226 ok(sb
.do_lock
== -2, "expected do_lock value -2, got %d\n", sb
.do_lock
);
1227 call_func1(p_streambuf_setlock
, &sb
);
1228 ok(sb
.do_lock
== -3, "expected do_lock value -3, got %d\n", sb
.do_lock
);
1230 call_func1(p_streambuf_setlock
, &sb
);
1231 ok(sb
.do_lock
== 2, "expected do_lock value 2, got %d\n", sb
.do_lock
);
1235 call_func1(p_streambuf_clrclock
, &sb
);
1236 ok(sb
.do_lock
== -1, "expected do_lock value -1, got %d\n", sb
.do_lock
);
1237 call_func1(p_streambuf_clrclock
, &sb
);
1238 ok(sb
.do_lock
== 0, "expected do_lock value 0, got %d\n", sb
.do_lock
);
1239 call_func1(p_streambuf_clrclock
, &sb
);
1240 ok(sb
.do_lock
== 1, "expected do_lock value 1, got %d\n", sb
.do_lock
);
1241 call_func1(p_streambuf_clrclock
, &sb
);
1242 ok(sb
.do_lock
== 1, "expected do_lock value 1, got %d\n", sb
.do_lock
);
1246 for (i
= 0; i
< 4; i
++) {
1247 lock_arg
.lock
[i
] = CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
1248 ok(lock_arg
.lock
[i
] != NULL
, "CreateEventW failed\n");
1249 lock_arg
.test
[i
] = CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
1250 ok(lock_arg
.test
[i
] != NULL
, "CreateEventW failed\n");
1254 thread
= CreateThread(NULL
, 0, lock_streambuf
, (void*)&lock_arg
, 0, NULL
);
1255 ok(thread
!= NULL
, "CreateThread failed\n");
1256 WaitForSingleObject(lock_arg
.lock
[0], INFINITE
);
1257 locked
= TryEnterCriticalSection(&sb
.lock
);
1258 ok(locked
!= 0, "could not lock the streambuf\n");
1259 LeaveCriticalSection(&sb
.lock
);
1262 SetEvent(lock_arg
.test
[0]);
1263 WaitForSingleObject(lock_arg
.lock
[1], INFINITE
);
1264 locked
= TryEnterCriticalSection(&sb
.lock
);
1265 ok(locked
!= 0, "could not lock the streambuf\n");
1266 LeaveCriticalSection(&sb
.lock
);
1269 SetEvent(lock_arg
.test
[1]);
1270 WaitForSingleObject(lock_arg
.lock
[2], INFINITE
);
1271 locked
= TryEnterCriticalSection(&sb
.lock
);
1272 ok(locked
== 0, "the streambuf was not locked before\n");
1275 SetEvent(lock_arg
.test
[2]);
1276 WaitForSingleObject(lock_arg
.lock
[3], INFINITE
);
1277 locked
= TryEnterCriticalSection(&sb
.lock
);
1278 ok(locked
== 0, "the streambuf was not locked before\n");
1283 call_func4(p_streambuf_setb
, &sb
, reserve
, reserve
+16, 0);
1284 ok(sb
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", sb
.unbuffered
);
1285 ok(sb
.base
== reserve
, "wrong base pointer, expected %p got %p\n", reserve
, sb
.base
);
1286 ok(sb
.ebuf
== reserve
+16, "wrong ebuf pointer, expected %p got %p\n", reserve
+16, sb
.ebuf
);
1287 call_func4(p_streambuf_setb
, &sb
, reserve
, reserve
+16, 4);
1288 ok(sb
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", sb
.unbuffered
);
1289 ok(sb
.allocated
== 4, "wrong allocate value, expected 4 got %d\n", sb
.allocated
);
1292 call_func4(p_streambuf_setb
, &sb
, NULL
, NULL
, 3);
1293 ok(sb
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb
.unbuffered
);
1294 ok(sb
.allocated
== 3, "wrong allocate value, expected 3 got %d\n", sb
.allocated
);
1298 psb
= call_func3(p_streambuf_setbuf
, &sb
, NULL
, 5);
1299 ok(psb
== &sb
, "wrong return value, expected %p got %p\n", &sb
, psb
);
1300 ok(sb
.allocated
== 3, "wrong allocate value, expected 3 got %d\n", sb
.allocated
);
1301 ok(sb
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", sb
.unbuffered
);
1302 ok(sb
.base
== NULL
, "wrong base pointer, expected %p got %p\n", NULL
, sb
.base
);
1303 ok(sb
.ebuf
== NULL
, "wrong ebuf pointer, expected %p got %p\n", NULL
, sb
.ebuf
);
1304 psb
= call_func3(p_streambuf_setbuf
, &sb
, reserve
, 0);
1305 ok(psb
== &sb
, "wrong return value, expected %p got %p\n", &sb
, psb
);
1306 ok(sb
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", sb
.unbuffered
);
1307 ok(sb
.base
== NULL
, "wrong base pointer, expected %p got %p\n", NULL
, sb
.base
);
1308 ok(sb
.ebuf
== NULL
, "wrong ebuf pointer, expected %p got %p\n", NULL
, sb
.ebuf
);
1309 psb
= call_func3(p_streambuf_setbuf
, &sb
, reserve
, 16);
1310 ok(psb
== &sb
, "wrong return value, expected %p got %p\n", &sb
, psb
);
1311 ok(sb
.allocated
== 3, "wrong allocate value, expected 3 got %d\n", sb
.allocated
);
1312 ok(sb
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb
.unbuffered
);
1313 ok(sb
.base
== reserve
, "wrong base pointer, expected %p got %p\n", reserve
, sb
.base
);
1314 ok(sb
.ebuf
== reserve
+16, "wrong ebuf pointer, expected %p got %p\n", reserve
+16, sb
.ebuf
);
1315 psb
= call_func3(p_streambuf_setbuf
, &sb
, NULL
, 8);
1316 ok(psb
== NULL
, "wrong return value, expected %p got %p\n", NULL
, psb
);
1317 ok(sb
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", sb
.unbuffered
);
1318 ok(sb
.base
== reserve
, "wrong base pointer, expected %p got %p\n", reserve
, sb
.base
);
1319 ok(sb
.ebuf
== reserve
+16, "wrong ebuf pointer, expected %p got %p\n", reserve
+16, sb
.ebuf
);
1322 ret
= (int) call_func1(p_streambuf_allocate
, &sb
);
1323 ok(ret
== 0, "wrong return value, expected 0 got %d\n", ret
);
1325 ret
= (int) call_func1(p_streambuf_allocate
, &sb
);
1326 ok(ret
== 1, "wrong return value, expected 1 got %d\n", ret
);
1327 ok(sb
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", sb
.allocated
);
1328 ok(sb
.ebuf
- sb
.base
== 512 , "wrong reserve area size, expected 512 got %p-%p\n", sb
.ebuf
, sb
.base
);
1331 ret
= (int) call_func1(p_streambuf_doallocate
, &sb2
);
1332 ok(ret
== 1, "doallocate failed, got %d\n", ret
);
1333 ok(sb2
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", sb2
.allocated
);
1334 ok(sb2
.ebuf
- sb2
.base
== 512 , "wrong reserve area size, expected 512 got %p-%p\n", sb2
.ebuf
, sb2
.base
);
1335 ret
= (int) call_func1(p_streambuf_doallocate
, &sb3
);
1336 ok(ret
== 1, "doallocate failed, got %d\n", ret
);
1337 ok(sb3
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", sb3
.allocated
);
1338 ok(sb3
.ebuf
- sb3
.base
== 512 , "wrong reserve area size, expected 512 got %p-%p\n", sb3
.ebuf
, sb3
.base
);
1340 /* sb: buffered, space available */
1341 sb
.eback
= sb
.gptr
= sb
.base
;
1342 sb
.egptr
= sb
.base
+ 256;
1343 sb
.pbase
= sb
.pptr
= sb
.base
+ 256;
1344 sb
.epptr
= sb
.base
+ 512;
1345 /* sb2: buffered, no space available */
1346 sb2
.eback
= sb2
.base
;
1347 sb2
.gptr
= sb2
.egptr
= sb2
.base
+ 256;
1348 sb2
.pbase
= sb2
.base
+ 256;
1349 sb2
.pptr
= sb2
.epptr
= sb2
.base
+ 512;
1350 /* sb3: unbuffered */
1354 call_func2(p_streambuf_gbump
, &sb
, 10);
1355 ok(sb
.gptr
== sb
.eback
+ 10, "advance get pointer failed, expected %p got %p\n", sb
.eback
+ 10, sb
.gptr
);
1356 call_func2(p_streambuf_gbump
, &sb
, -15);
1357 ok(sb
.gptr
== sb
.eback
- 5, "advance get pointer failed, expected %p got %p\n", sb
.eback
- 5, sb
.gptr
);
1361 call_func2(p_streambuf_pbump
, &sb
, -2);
1362 ok(sb
.pptr
== sb
.pbase
- 2, "advance put pointer failed, expected %p got %p\n", sb
.pbase
- 2, sb
.pptr
);
1363 call_func2(p_streambuf_pbump
, &sb
, 20);
1364 ok(sb
.pptr
== sb
.pbase
+ 18, "advance put pointer failed, expected %p got %p\n", sb
.pbase
+ 18, sb
.pptr
);
1368 ret
= (int) call_func1(p_streambuf_sync
, &sb
);
1369 ok(ret
== EOF
, "sync failed, expected EOF got %d\n", ret
);
1371 ret
= (int) call_func1(p_streambuf_sync
, &sb
);
1372 ok(ret
== 0, "sync failed, expected 0 got %d\n", ret
);
1373 sb
.gptr
= sb
.egptr
+ 1;
1374 ret
= (int) call_func1(p_streambuf_sync
, &sb
);
1375 ok(ret
== 0, "sync failed, expected 0 got %d\n", ret
);
1377 ret
= (int) call_func1(p_streambuf_sync
, &sb2
);
1378 ok(ret
== EOF
, "sync failed, expected EOF got %d\n", ret
);
1379 sb2
.pptr
= sb2
.pbase
;
1380 ret
= (int) call_func1(p_streambuf_sync
, &sb2
);
1381 ok(ret
== 0, "sync failed, expected 0 got %d\n", ret
);
1382 sb2
.pptr
= sb2
.pbase
- 1;
1383 ret
= (int) call_func1(p_streambuf_sync
, &sb2
);
1384 ok(ret
== 0, "sync failed, expected 0 got %d\n", ret
);
1385 sb2
.pptr
= sb2
.epptr
;
1386 ret
= (int) call_func1(p_streambuf_sync
, &sb3
);
1387 ok(ret
== 0, "sync failed, expected 0 got %d\n", ret
);
1390 strcpy(sb2
.eback
, "WorstTestEver");
1392 ret
= (int) call_func1(p_streambuf_sgetc
, &sb2
);
1393 ok(ret
== 'W', "expected 'W' got '%c'\n", ret
);
1394 ok(underflow_count
== 1, "expected call to underflow\n");
1395 ok(sb2
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb2
.stored_char
);
1397 ret
= (int) call_func1(p_streambuf_sgetc
, &sb2
);
1398 ok(ret
== 'o', "expected 'o' got '%c'\n", ret
);
1399 ok(underflow_count
== 2, "expected call to underflow\n");
1400 ok(sb2
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb2
.stored_char
);
1401 sb2
.gptr
= sb2
.egptr
;
1403 ret
= (int) call_func1(p_streambuf_sgetc
, &sb3
);
1404 ok(ret
== 'C', "expected 'C' got '%c'\n", ret
);
1405 ok(underflow_count
== 3, "expected call to underflow\n");
1406 ok(sb3
.stored_char
== 'C', "wrong stored character, expected 'C' got %c\n", sb3
.stored_char
);
1407 sb3
.stored_char
= 'b';
1408 ret
= (int) call_func1(p_streambuf_sgetc
, &sb3
);
1409 ok(ret
== 'b', "expected 'b' got '%c'\n", ret
);
1410 ok(underflow_count
== 3, "no call to underflow expected\n");
1411 ok(sb3
.stored_char
== 'b', "wrong stored character, expected 'b' got %c\n", sb3
.stored_char
);
1415 ret
= (int) call_func2(p_streambuf_sputc
, &sb
, 'c');
1416 ok(ret
== 'c', "wrong return value, expected 'c' got %d\n", ret
);
1417 ok(overflow_count
== 0, "no call to overflow expected\n");
1418 ok(*sb
.pbase
== 'c', "expected 'c' in the put area, got %c\n", *sb
.pbase
);
1419 ok(sb
.pptr
== sb
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", sb
.pbase
+ 1, sb
.pptr
);
1421 ret
= (int) call_func2(p_streambuf_sputc
, &sb
, 150);
1422 ok(ret
== 150, "wrong return value, expected 150 got %d\n", ret
);
1423 ok(overflow_count
== 0, "no call to overflow expected\n");
1424 ok((signed char)*sb
.pbase
== -106, "expected -106 in the put area, got %d\n", *sb
.pbase
);
1425 ok(sb
.pptr
== sb
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", sb
.pbase
+ 1, sb
.pptr
);
1427 ret
= (int) call_func2(p_streambuf_sputc
, &sb
, -50);
1428 ok(ret
== 206, "wrong return value, expected 206 got %d\n", ret
);
1429 ok(overflow_count
== 0, "no call to overflow expected\n");
1430 ok((signed char)*sb
.pbase
== -50, "expected -50 in the put area, got %d\n", *sb
.pbase
);
1431 ok(sb
.pptr
== sb
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", sb
.pbase
+ 1, sb
.pptr
);
1433 ret
= (int) call_func2(p_streambuf_sputc
, &sb2
, 'c');
1434 ok(ret
== 'c', "wrong return value, expected 'c' got %d\n", ret
);
1435 ok(overflow_count
== 1, "expected call to overflow\n");
1436 ok(sb2
.pptr
== sb2
.pbase
+ 5, "wrong put pointer, expected %p got %p\n", sb2
.pbase
+ 5, sb2
.pptr
);
1438 ret
= (int) call_func2(p_streambuf_sputc
, &sb3
, 'c');
1439 ok(ret
== 'c', "wrong return value, expected 'c' got %d\n", ret
);
1440 ok(overflow_count
== 2, "expected call to overflow\n");
1441 sb3
.pbase
= sb3
.pptr
= sb3
.base
;
1442 sb3
.epptr
= sb3
.ebuf
;
1443 ret
= (int) call_func2(p_streambuf_sputc
, &sb3
, 'c');
1444 ok(ret
== 'c', "wrong return value, expected 'c' got %d\n", ret
);
1445 ok(overflow_count
== 2, "no call to overflow expected\n");
1446 ok(*sb3
.pbase
== 'c', "expected 'c' in the put area, got %c\n", *sb3
.pbase
);
1447 sb3
.pbase
= sb3
.pptr
= sb3
.epptr
= NULL
;
1450 sb2
.gptr
= sb2
.egptr
= sb2
.eback
+ 13;
1452 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb2
, reserve
, 5);
1453 ok(ret
== 5, "wrong return value, expected 5 got %d\n", ret
);
1454 ok(!strncmp(reserve
, "Worst", 5), "expected 'Worst' got %s\n", reserve
);
1455 ok(sb2
.gptr
== sb2
.eback
+ 5, "wrong get pointer, expected %p got %p\n", sb2
.eback
+ 5, sb2
.gptr
);
1456 ok(underflow_count
== 4, "expected call to underflow\n");
1457 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb2
, reserve
, 4);
1458 ok(ret
== 4, "wrong return value, expected 4 got %d\n", ret
);
1459 ok(!strncmp(reserve
, "Test", 4), "expected 'Test' got %s\n", reserve
);
1460 ok(sb2
.gptr
== sb2
.eback
+ 9, "wrong get pointer, expected %p got %p\n", sb2
.eback
+ 9, sb2
.gptr
);
1461 ok(underflow_count
== 5, "expected call to underflow\n");
1463 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb2
, reserve
, 16);
1464 ok(ret
== 4, "wrong return value, expected 4 got %d\n", ret
);
1465 ok(!strncmp(reserve
, "Ever", 4), "expected 'Ever' got %s\n", reserve
);
1466 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1467 ok(underflow_count
== 7, "expected 2 calls to underflow, got %d\n", underflow_count
- 5);
1469 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb3
, reserve
, 11);
1470 ok(ret
== 11, "wrong return value, expected 11 got %d\n", ret
);
1471 ok(!strncmp(reserve
, "bompuGlobal", 11), "expected 'bompuGlobal' got %s\n", reserve
);
1472 ok(sb3
.stored_char
== 'H', "wrong stored character, expected 'H' got %c\n", sb3
.stored_char
);
1473 ok(underflow_count
== 18, "expected 11 calls to underflow, got %d\n", underflow_count
- 7);
1474 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb3
, reserve
, 16);
1475 ok(ret
== 12, "wrong return value, expected 12 got %d\n", ret
);
1476 ok(!strncmp(reserve
, "HyperMegaNet", 12), "expected 'HyperMegaNet' got %s\n", reserve
);
1477 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1478 ok(underflow_count
== 30, "expected 12 calls to underflow, got %d\n", underflow_count
- 18);
1479 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb3
, reserve
, 3);
1480 ok(ret
== 0, "wrong return value, expected 0 got %d\n", ret
);
1481 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1482 ok(underflow_count
== 31, "expected call to underflow\n");
1484 ret
= (int) call_func3(p_streambuf_xsgetn
, &sb3
, reserve
, 5);
1485 ok(ret
== 5, "wrong return value, expected 5 got %d\n", ret
);
1486 ok(!strncmp(reserve
, "Compu", 5), "expected 'Compu' got %s\n", reserve
);
1487 ok(sb3
.stored_char
== 'G', "wrong stored character, expected 'G' got %c\n", sb3
.stored_char
);
1488 ok(underflow_count
== 37, "expected 6 calls to underflow, got %d\n", underflow_count
- 31);
1491 ret
= (int) call_func3(p_streambuf_xsputn
, &sb
, "Test\0ing", 8);
1492 ok(ret
== 8, "wrong return value, expected 8 got %d\n", ret
);
1493 ok(sb
.pptr
== sb
.pbase
+ 9, "wrong put pointer, expected %p got %p\n", sb
.pbase
+ 9, sb
.pptr
);
1495 sb2
.pptr
= sb2
.epptr
- 7;
1496 ret
= (int) call_func3(p_streambuf_xsputn
, &sb2
, "Testing", 7);
1497 ok(ret
== 7, "wrong return value, expected 7 got %d\n", ret
);
1498 ok(sb2
.pptr
== sb2
.epptr
, "wrong put pointer, expected %p got %p\n", sb2
.epptr
, sb2
.pptr
);
1499 ok(overflow_count
== 2, "no call to overflow expected\n");
1500 sb2
.pptr
= sb2
.epptr
- 5;
1502 ret
= (int) call_func3(p_streambuf_xsputn
, &sb2
, "Testing", 7);
1503 ok(ret
== 7, "wrong return value, expected 7 got %d\n", ret
);
1504 ok(sb2
.pbase
[5] == 'g', "expected 'g' got %c\n", sb2
.pbase
[5]);
1505 ok(sb2
.pptr
== sb2
.pbase
+ 6, "wrong put pointer, expected %p got %p\n", sb2
.pbase
+ 6, sb2
.pptr
);
1506 ok(overflow_count
== 3, "expected call to overflow\n");
1507 sb2
.pptr
= sb2
.epptr
- 4;
1508 ret
= (int) call_func3(p_streambuf_xsputn
, &sb2
, "TestLing", 8);
1509 ok(ret
== 4, "wrong return value, expected 4 got %d\n", ret
);
1510 ok(sb2
.pptr
== sb2
.epptr
, "wrong put pointer, expected %p got %p\n", sb2
.epptr
, sb2
.pptr
);
1511 ok(overflow_count
== 4, "expected call to overflow\n");
1513 ret
= (int) call_func3(p_streambuf_xsputn
, &sb3
, "Testing", 7);
1514 ok(ret
== 7, "wrong return value, expected 7 got %d\n", ret
);
1515 ok(sb3
.stored_char
== 'G', "wrong stored character, expected 'G' got %c\n", sb3
.stored_char
);
1516 ok(overflow_count
== 11, "expected 7 calls to overflow, got %d\n", overflow_count
- 4);
1517 ret
= (int) call_func3(p_streambuf_xsputn
, &sb3
, "TeLephone", 9);
1518 ok(ret
== 2, "wrong return value, expected 2 got %d\n", ret
);
1519 ok(sb3
.stored_char
== 'G', "wrong stored character, expected 'G' got %c\n", sb3
.stored_char
);
1520 ok(overflow_count
== 14, "expected 3 calls to overflow, got %d\n", overflow_count
- 11);
1523 strcpy(sb
.eback
, "Test");
1524 ret
= (int) call_func1(p_streambuf_snextc
, &sb
);
1525 ok(ret
== 'e', "expected 'e' got '%c'\n", ret
);
1526 ok(sb
.gptr
== sb
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 1, sb
.gptr
);
1528 ret
= (int) call_func1(p_streambuf_snextc
, &sb
);
1529 ok(ret
== 206, "expected 206 got %d\n", ret
);
1530 ok(sb
.gptr
== sb
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 1, sb
.gptr
);
1532 ret
= (int) call_func1(p_streambuf_snextc
, &sb2
);
1533 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1534 ok(sb2
.gptr
== sb2
.egptr
+ 1, "wrong get pointer, expected %p got %p\n", sb2
.egptr
+ 1, sb2
.gptr
);
1535 ok(underflow_count
== 39, "expected 2 calls to underflow, got %d\n", underflow_count
- 37);
1536 sb2
.gptr
= sb2
.egptr
- 1;
1537 ret
= (int) call_func1(p_streambuf_snextc
, &sb2
);
1538 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1539 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1540 ok(underflow_count
== 40, "expected call to underflow\n");
1542 ret
= (int) call_func1(p_streambuf_snextc
, &sb2
);
1543 ok(ret
== 'o', "expected 'o' got '%c'\n", ret
);
1544 ok(sb2
.gptr
== sb2
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb2
.eback
+ 1, sb2
.gptr
);
1545 ok(underflow_count
== 41, "expected call to underflow\n");
1546 sb2
.gptr
= sb2
.egptr
- 1;
1547 ret
= (int) call_func1(p_streambuf_snextc
, &sb2
);
1548 ok(ret
== 'W', "expected 'W' got '%c'\n", ret
);
1549 ok(sb2
.gptr
== sb2
.eback
, "wrong get pointer, expected %p got %p\n", sb2
.eback
, sb2
.gptr
);
1550 ok(underflow_count
== 42, "expected call to underflow\n");
1551 sb2
.gptr
= sb2
.egptr
;
1553 ret
= (int) call_func1(p_streambuf_snextc
, &sb3
);
1554 ok(ret
== 'l', "expected 'l' got '%c'\n", ret
);
1555 ok(sb3
.stored_char
== 'l', "wrong stored character, expected 'l' got %c\n", sb3
.stored_char
);
1556 ok(underflow_count
== 43, "expected call to underflow\n");
1558 ret
= (int) call_func1(p_streambuf_snextc
, &sb3
);
1559 ok(ret
== 't', "expected 't' got '%c'\n", ret
);
1560 ok(sb3
.stored_char
== 't', "wrong stored character, expected 't' got %c\n", sb3
.stored_char
);
1561 ok(underflow_count
== 44, "expected call to underflow\n");
1562 ret
= (int) call_func1(p_streambuf_snextc
, &sb3
);
1563 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1564 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1565 ok(underflow_count
== 45, "expected call to underflow\n");
1567 ret
= (int) call_func1(p_streambuf_snextc
, &sb3
);
1568 ok(ret
== 'o', "expected 'o' got '%c'\n", ret
);
1569 ok(sb3
.stored_char
== 'o', "wrong stored character, expected 'o' got %c\n", sb3
.stored_char
);
1570 ok(underflow_count
== 47, "expected 2 calls to underflow, got %d\n", underflow_count
- 45);
1571 sb3
.stored_char
= EOF
;
1572 ret
= (int) call_func1(p_streambuf_snextc
, &sb3
);
1573 ok(ret
== 'p', "expected 'p' got '%c'\n", ret
);
1574 ok(sb3
.stored_char
== 'p', "wrong stored character, expected 'p' got %c\n", sb3
.stored_char
);
1575 ok(underflow_count
== 49, "expected 2 calls to underflow, got %d\n", underflow_count
- 47);
1579 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb
);
1580 ok(ret
== 'T', "expected 'T' got '%c'\n", ret
);
1581 ok(sb
.gptr
== sb
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 1, sb
.gptr
);
1582 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb
);
1583 ok(ret
== 206, "expected 206 got %d\n", ret
);
1584 ok(sb
.gptr
== sb
.eback
+ 2, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 2, sb
.gptr
);
1586 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb2
);
1587 ok(ret
== 'W', "expected 'W' got '%c'\n", ret
);
1588 ok(sb2
.gptr
== sb2
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb2
.eback
+ 1, sb2
.gptr
);
1589 ok(underflow_count
== 50, "expected call to underflow\n");
1590 sb2
.gptr
= sb2
.egptr
- 1;
1592 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb2
);
1593 ok(ret
== 't', "expected 't' got '%c'\n", ret
);
1594 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1595 ok(underflow_count
== 50, "no call to underflow expected\n");
1597 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb2
);
1598 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1599 ok(sb2
.gptr
== sb2
.egptr
+ 1, "wrong get pointer, expected %p got %p\n", sb2
.egptr
+ 1, sb2
.gptr
);
1600 ok(underflow_count
== 51, "expected call to underflow\n");
1601 sb2
.gptr
= sb2
.egptr
;
1603 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb3
);
1604 ok(ret
== 'p', "expected 'p' got '%c'\n", ret
);
1605 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1606 ok(underflow_count
== 51, "no call to underflow expected\n");
1607 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb3
);
1608 ok(ret
== 'u', "expected 'u' got '%c'\n", ret
);
1609 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1610 ok(underflow_count
== 52, "expected call to underflow\n");
1612 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb3
);
1613 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1614 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1615 ok(underflow_count
== 53, "expected call to underflow\n");
1617 ret
= (int) call_func1(p_streambuf_sbumpc
, &sb3
);
1618 ok(ret
== 'C', "expected 'C' got '%c'\n", ret
);
1619 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1620 ok(underflow_count
== 54, "expected call to underflow\n");
1623 call_func1(p_streambuf_stossc
, &sb
);
1624 ok(sb
.gptr
== sb
.eback
+ 3, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 3, sb
.gptr
);
1626 call_func1(p_streambuf_stossc
, &sb2
);
1627 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1628 ok(underflow_count
== 55, "expected call to underflow\n");
1630 call_func1(p_streambuf_stossc
, &sb2
);
1631 ok(sb2
.gptr
== sb2
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb2
.eback
+ 1, sb2
.gptr
);
1632 ok(underflow_count
== 56, "expected call to underflow\n");
1633 sb2
.gptr
= sb2
.egptr
- 1;
1634 call_func1(p_streambuf_stossc
, &sb2
);
1635 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1636 ok(underflow_count
== 56, "no call to underflow expected\n");
1638 call_func1(p_streambuf_stossc
, &sb3
);
1639 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1640 ok(underflow_count
== 57, "expected call to underflow\n");
1641 sb3
.stored_char
= 'a';
1642 call_func1(p_streambuf_stossc
, &sb3
);
1643 ok(sb3
.stored_char
== EOF
, "wrong stored character, expected EOF got %c\n", sb3
.stored_char
);
1644 ok(underflow_count
== 57, "no call to underflow expected\n");
1647 ret
= (int) call_func2(p_streambuf_pbackfail
, &sb
, 'A');
1648 ok(ret
== 'A', "expected 'A' got '%c'\n", ret
);
1649 ok(sb
.gptr
== sb
.eback
+ 2, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 2, sb
.gptr
);
1650 ok(*sb
.gptr
== 'A', "expected 'A' in the get area, got %c\n", *sb
.gptr
);
1651 ret
= (int) call_func2(p_streambuf_pbackfail
, &sb
, EOF
);
1652 ok(ret
== (char)EOF
, "expected EOF got %d\n", ret
);
1653 ok(sb
.gptr
== sb
.eback
+ 1, "wrong get pointer, expected %p got %p\n", sb
.eback
+ 1, sb
.gptr
);
1654 ok((signed char)*sb
.gptr
== EOF
, "expected EOF in the get area, got %c\n", *sb
.gptr
);
1656 ret
= (int) call_func2(p_streambuf_pbackfail
, &sb
, 'Z');
1657 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1658 ok(sb
.gptr
== sb
.eback
, "wrong get pointer, expected %p got %p\n", sb
.eback
, sb
.gptr
);
1659 ok(*sb
.gptr
== 'T', "expected 'T' in the get area, got %c\n", *sb
.gptr
);
1660 ret
= (int) call_func2(p_streambuf_pbackfail
, &sb
, EOF
);
1661 ok(ret
== EOF
, "expected EOF got '%c'\n", ret
);
1662 ok(sb
.gptr
== sb
.eback
, "wrong get pointer, expected %p got %p\n", sb
.eback
, sb
.gptr
);
1663 ok(*sb
.gptr
== 'T', "expected 'T' in the get area, got %c\n", *sb
.gptr
);
1664 sb2
.gptr
= sb2
.egptr
+ 1;
1665 ret
= (int) call_func2(p_streambuf_pbackfail
, &sb2
, 'X');
1666 ok(ret
== 'X', "expected 'X' got '%c'\n", ret
);
1667 ok(sb2
.gptr
== sb2
.egptr
, "wrong get pointer, expected %p got %p\n", sb2
.egptr
, sb2
.gptr
);
1668 ok(*sb2
.gptr
== 'X', "expected 'X' in the get area, got %c\n", *sb2
.gptr
);
1671 ret
= (int) call_func1(p_streambuf_out_waiting
, &sb
);
1672 ok(ret
== 9, "expected 9 got %d\n", ret
);
1674 ret
= (int) call_func1(p_streambuf_out_waiting
, &sb
);
1675 ok(ret
== 0, "expected 0 got %d\n", ret
);
1676 sb
.pptr
= sb
.pbase
- 1;
1677 ret
= (int) call_func1(p_streambuf_out_waiting
, &sb
);
1678 ok(ret
== 0, "expected 0 got %d\n", ret
);
1680 ret
= (int) call_func1(p_streambuf_out_waiting
, &sb
);
1681 ok(ret
== 0, "expected 0 got %d\n", ret
);
1684 ret
= (int) call_func1(p_streambuf_out_waiting
, &sb
);
1685 ok(ret
== (int)(sb
.pptr
- sb
.pbase
), "expected %d got %d\n", (int)(sb
.pptr
- sb
.pbase
), ret
);
1688 ret
= (int) call_func1(p_streambuf_in_avail
, &sb
);
1689 ok(ret
== 256, "expected 256 got %d\n", ret
);
1691 ret
= (int) call_func1(p_streambuf_in_avail
, &sb
);
1692 ok(ret
== 0, "expected 0 got %d\n", ret
);
1693 sb
.gptr
= sb
.egptr
+ 1;
1694 ret
= (int) call_func1(p_streambuf_in_avail
, &sb
);
1695 ok(ret
== 0, "expected 0 got %d\n", ret
);
1697 ret
= (int) call_func1(p_streambuf_in_avail
, &sb
);
1698 ok(ret
== 0, "expected 0 got %d\n", ret
);
1700 SetEvent(lock_arg
.test
[3]);
1701 WaitForSingleObject(thread
, INFINITE
);
1703 call_func1(p_streambuf_dtor
, &sb
);
1704 call_func1(p_streambuf_dtor
, &sb2
);
1705 call_func1(p_streambuf_dtor
, &sb3
);
1706 for (i
= 0; i
< 4; i
++) {
1707 CloseHandle(lock_arg
.lock
[i
]);
1708 CloseHandle(lock_arg
.test
[i
]);
1710 CloseHandle(thread
);
1713 struct filebuf_lock_arg
1715 filebuf
*fb1
, *fb2
, *fb3
;
1720 static DWORD WINAPI
lock_filebuf(void *arg
)
1722 struct filebuf_lock_arg
*lock_arg
= arg
;
1723 call_func1(p_streambuf_lock
, &lock_arg
->fb1
->base
);
1724 call_func1(p_streambuf_lock
, &lock_arg
->fb2
->base
);
1725 call_func1(p_streambuf_lock
, &lock_arg
->fb3
->base
);
1726 SetEvent(lock_arg
->lock
);
1727 WaitForSingleObject(lock_arg
->test
, INFINITE
);
1728 call_func1(p_streambuf_unlock
, &lock_arg
->fb1
->base
);
1729 call_func1(p_streambuf_unlock
, &lock_arg
->fb2
->base
);
1730 call_func1(p_streambuf_unlock
, &lock_arg
->fb3
->base
);
1734 static void test_filebuf(void)
1736 filebuf fb1
, fb2
, fb3
, *pret
;
1737 struct filebuf_lock_arg lock_arg
;
1739 const char filename1
[] = "test1";
1740 const char filename2
[] = "test2";
1741 const char filename3
[] = "test3";
1742 char read_buffer
[16];
1745 memset(&fb1
, 0xab, sizeof(filebuf
));
1746 memset(&fb2
, 0xab, sizeof(filebuf
));
1747 memset(&fb3
, 0xab, sizeof(filebuf
));
1750 call_func2(p_filebuf_fd_ctor
, &fb1
, 1);
1751 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1752 ok(fb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fb1
.base
.unbuffered
);
1753 ok(fb1
.fd
== 1, "wrong fd, expected 1 got %d\n", fb1
.fd
);
1754 ok(fb1
.close
== 0, "wrong value, expected 0 got %d\n", fb1
.close
);
1755 call_func4(p_filebuf_fd_reserve_ctor
, &fb2
, 4, NULL
, 0);
1756 ok(fb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb2
.base
.allocated
);
1757 ok(fb2
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb2
.base
.unbuffered
);
1758 ok(fb2
.fd
== 4, "wrong fd, expected 4 got %d\n", fb2
.fd
);
1759 ok(fb2
.close
== 0, "wrong value, expected 0 got %d\n", fb2
.close
);
1760 call_func1(p_filebuf_ctor
, &fb3
);
1761 ok(fb3
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb3
.base
.allocated
);
1762 ok(fb3
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fb3
.base
.unbuffered
);
1763 ok(fb3
.fd
== -1, "wrong fd, expected -1 got %d\n", fb3
.fd
);
1764 ok(fb3
.close
== 0, "wrong value, expected 0 got %d\n", fb3
.close
);
1766 lock_arg
.fb1
= &fb1
;
1767 lock_arg
.fb2
= &fb2
;
1768 lock_arg
.fb3
= &fb3
;
1769 lock_arg
.lock
= CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
1770 ok(lock_arg
.lock
!= NULL
, "CreateEventW failed\n");
1771 lock_arg
.test
= CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
1772 ok(lock_arg
.test
!= NULL
, "CreateEventW failed\n");
1773 thread
= CreateThread(NULL
, 0, lock_filebuf
, (void*)&lock_arg
, 0, NULL
);
1774 ok(thread
!= NULL
, "CreateThread failed\n");
1775 WaitForSingleObject(lock_arg
.lock
, INFINITE
);
1778 fb1
.base
.do_lock
= 0;
1779 fb1
.fd
= -1; /* closed */
1780 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1781 ok(fb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fb1
.base
.unbuffered
);
1782 ok(fb1
.fd
== -1, "wrong fd, expected -1 got %d\n", fb1
.fd
);
1783 fb1
.base
.unbuffered
= 1;
1784 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
, 16);
1785 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1786 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1787 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1788 ok(fb1
.base
.base
== read_buffer
, "wrong buffer, expected %p got %p\n", read_buffer
, fb1
.base
.base
);
1789 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1790 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1791 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
+ 8, 8);
1792 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", NULL
, pret
);
1793 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1794 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1795 ok(fb1
.base
.base
== read_buffer
+ 8, "wrong buffer, expected %p got %p\n", read_buffer
+ 8, fb1
.base
.base
);
1796 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1797 fb1
.base
.unbuffered
= 0;
1798 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, NULL
, 0);
1799 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1800 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1801 ok(fb1
.base
.base
== read_buffer
+ 8, "wrong buffer, expected %p got %p\n", read_buffer
+ 8, fb1
.base
.base
);
1802 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1803 ok((int) call_func1(p_streambuf_doallocate
, &fb1
.base
) == 1, "failed to allocate buffer\n");
1804 ok(fb1
.base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", fb1
.base
.allocated
);
1805 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1806 ok(fb1
.base
.base
!= NULL
, "wrong buffer, expected not NULL got %p\n", fb1
.base
.base
);
1807 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
+ 2, 14);
1808 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1809 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1810 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1811 ok(fb1
.base
.base
== read_buffer
+ 2, "wrong buffer, expected %p got %p\n", read_buffer
+ 2, fb1
.base
.base
);
1812 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1813 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1814 fb1
.fd
= 1; /* opened */
1815 fb1
.base
.unbuffered
= 1;
1816 fb1
.base
.base
= fb1
.base
.ebuf
= NULL
;
1817 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
, 16);
1818 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1819 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1820 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1821 ok(fb1
.base
.base
== read_buffer
, "wrong buffer, expected %p got %p\n", read_buffer
, fb1
.base
.base
);
1822 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1823 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
+ 8, 8);
1824 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1825 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1826 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1827 ok(fb1
.base
.base
== read_buffer
, "wrong buffer, expected %p got %p\n", read_buffer
, fb1
.base
.base
);
1828 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1829 fb1
.base
.unbuffered
= 0;
1830 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, NULL
, 0);
1831 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1832 ok(fb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fb1
.base
.unbuffered
);
1833 ok(fb1
.base
.base
== read_buffer
, "wrong buffer, expected %p got %p\n", read_buffer
, fb1
.base
.base
);
1834 ok(fb1
.base
.pbase
== NULL
, "wrong put area, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
1835 fb1
.base
.unbuffered
= 1;
1836 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
;
1837 fb1
.base
.epptr
= fb1
.base
.ebuf
;
1838 fb1
.base
.do_lock
= -1;
1839 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
, 16);
1840 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1841 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1842 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1843 ok(fb1
.base
.base
== read_buffer
, "wrong buffer, expected %p got %p\n", read_buffer
, fb1
.base
.base
);
1844 ok(fb1
.base
.pbase
== read_buffer
, "wrong put area, expected %p got %p\n", read_buffer
, fb1
.base
.pbase
);
1845 fb1
.base
.base
= fb1
.base
.ebuf
= NULL
;
1846 fb1
.base
.do_lock
= 0;
1847 fb1
.base
.unbuffered
= 0;
1848 pret
= (filebuf
*) call_func3(p_filebuf_setbuf
, &fb1
, read_buffer
, 0);
1849 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1850 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1851 ok(fb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fb1
.base
.unbuffered
);
1852 ok(fb1
.base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, fb1
.base
.base
);
1853 ok(fb1
.base
.pbase
== read_buffer
, "wrong put area, expected %p got %p\n", read_buffer
, fb1
.base
.pbase
);
1854 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.epptr
= NULL
;
1855 fb1
.base
.unbuffered
= 0;
1856 fb1
.base
.do_lock
= -1;
1859 pret
= call_func2(p_filebuf_attach
, &fb1
, 2);
1860 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1861 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1862 ok(fb1
.fd
== 1, "wrong fd, expected 1 got %d\n", fb1
.fd
);
1864 fb2
.base
.do_lock
= 0;
1865 pret
= call_func2(p_filebuf_attach
, &fb2
, 3);
1866 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
1867 ok(fb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb2
.base
.allocated
);
1868 ok(fb2
.fd
== 3, "wrong fd, expected 3 got %d\n", fb2
.fd
);
1869 fb2
.base
.do_lock
= -1;
1870 fb3
.base
.do_lock
= 0;
1871 pret
= call_func2(p_filebuf_attach
, &fb3
, 2);
1872 ok(pret
== &fb3
, "wrong return, expected %p got %p\n", &fb3
, pret
);
1873 ok(fb3
.base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", fb3
.base
.allocated
);
1874 ok(fb3
.fd
== 2, "wrong fd, expected 2 got %d\n", fb3
.fd
);
1875 fb3
.base
.do_lock
= -1;
1878 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_out
, filebuf_openprot
);
1879 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1881 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
,
1882 OPENMODE_ate
|OPENMODE_nocreate
|OPENMODE_noreplace
|OPENMODE_binary
, filebuf_openprot
);
1883 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1884 ok(fb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", fb1
.base
.allocated
);
1885 fb1
.base
.do_lock
= 0;
1886 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_out
, filebuf_openprot
);
1887 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1888 ok(fb1
.base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", fb1
.base
.allocated
);
1889 ok(_write(fb1
.fd
, "testing", 7) == 7, "_write failed\n");
1890 pret
= call_func1(p_filebuf_close
, &fb1
);
1891 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1892 ok(fb1
.fd
== -1, "wrong fd, expected -1 got %d\n", fb1
.fd
);
1893 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_out
, filebuf_openprot
);
1894 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1895 ok(_read(fb1
.fd
, read_buffer
, 1) == -1, "file should not be open for reading\n");
1896 pret
= call_func1(p_filebuf_close
, &fb1
);
1897 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1898 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_app
, filebuf_openprot
);
1899 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1900 ok(_read(fb1
.fd
, read_buffer
, 1) == -1, "file should not be open for reading\n");
1901 ok(_write(fb1
.fd
, "testing", 7) == 7, "_write failed\n");
1902 ok(_lseek(fb1
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
1903 ok(_write(fb1
.fd
, "append", 6) == 6, "_write failed\n");
1904 pret
= call_func1(p_filebuf_close
, &fb1
);
1905 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1906 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_out
|OPENMODE_ate
, filebuf_openprot
);
1907 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1908 ok(_read(fb1
.fd
, read_buffer
, 1) == -1, "file should not be open for reading\n");
1909 ok(_lseek(fb1
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
1910 ok(_write(fb1
.fd
, "ate", 3) == 3, "_write failed\n");
1911 pret
= call_func1(p_filebuf_close
, &fb1
);
1912 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1913 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_in
, filebuf_openprot
);
1914 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1915 ok(_read(fb1
.fd
, read_buffer
, 13) == 13, "read failed\n");
1916 read_buffer
[13] = 0;
1917 ok(!strncmp(read_buffer
, "atetingappend", 13), "wrong contents, expected 'atetingappend' got '%s'\n", read_buffer
);
1918 pret
= call_func1(p_filebuf_close
, &fb1
);
1919 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1920 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_in
|OPENMODE_trunc
, filebuf_openprot
);
1921 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1922 ok(_read(fb1
.fd
, read_buffer
, 1) == 0, "read failed\n");
1923 ok(_write(fb1
.fd
, "file1", 5) == 5, "_write failed\n");
1924 pret
= call_func1(p_filebuf_close
, &fb1
);
1925 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1926 pret
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_in
|OPENMODE_app
, filebuf_openprot
);
1927 ok(pret
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pret
);
1928 ok(_write(fb1
.fd
, "app", 3) == 3, "_write failed\n");
1929 ok(_read(fb1
.fd
, read_buffer
, 1) == 0, "read failed\n");
1930 ok(_lseek(fb1
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
1931 ok(_read(fb1
.fd
, read_buffer
, 8) == 8, "read failed\n");
1933 ok(!strncmp(read_buffer
, "file1app", 8), "wrong contents, expected 'file1app' got '%s'\n", read_buffer
);
1934 fb1
.base
.do_lock
= -1;
1937 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_out
|OPENMODE_nocreate
, filebuf_openprot
);
1938 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1939 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_in
|OPENMODE_nocreate
, filebuf_openprot
);
1940 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1941 fb2
.base
.do_lock
= 0;
1942 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_in
, filebuf_openprot
);
1943 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
1944 ok(_read(fb1
.fd
, read_buffer
, 1) == 0, "read failed\n");
1945 pret
= call_func1(p_filebuf_close
, &fb2
);
1946 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
1947 fb2
.base
.do_lock
= -1;
1948 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_in
|OPENMODE_noreplace
, filebuf_openprot
);
1949 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1950 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_trunc
|OPENMODE_noreplace
, filebuf_openprot
);
1951 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1952 pret
= call_func4(p_filebuf_open
, &fb2
, filename3
, OPENMODE_out
|OPENMODE_nocreate
|OPENMODE_noreplace
, filebuf_openprot
);
1953 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1955 /* open protection*/
1957 fb3
.base
.do_lock
= 0;
1958 pret
= call_func4(p_filebuf_open
, &fb3
, filename3
, OPENMODE_in
|OPENMODE_out
, filebuf_openprot
);
1959 ok(pret
== &fb3
, "wrong return, expected %p got %p\n", &fb3
, pret
);
1960 ok(_write(fb3
.fd
, "You wouldn't\nget this from\nany other guy", 40) == 40, "_write failed\n");
1961 fb2
.base
.do_lock
= 0;
1962 pret
= call_func4(p_filebuf_open
, &fb2
, filename3
, OPENMODE_in
|OPENMODE_out
, filebuf_openprot
);
1963 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
1964 pret
= call_func1(p_filebuf_close
, &fb2
);
1965 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
1966 fb2
.base
.do_lock
= -1;
1967 pret
= call_func1(p_filebuf_close
, &fb3
);
1968 ok(pret
== &fb3
, "wrong return, expected %p got %p\n", &fb3
, pret
);
1969 pret
= call_func4(p_filebuf_open
, &fb3
, filename3
, OPENMODE_in
, filebuf_sh_none
);
1970 ok(pret
== &fb3
, "wrong return, expected %p got %p\n", &fb3
, pret
);
1971 pret
= call_func4(p_filebuf_open
, &fb2
, filename3
, OPENMODE_in
, filebuf_openprot
);
1972 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
1973 fb3
.base
.do_lock
= -1;
1976 fb1
.base
.do_lock
= 0;
1977 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
;
1978 fb1
.base
.epptr
= fb1
.base
.ebuf
;
1979 ret
= (int) call_func2(p_filebuf_setmode
, &fb1
, filebuf_binary
);
1980 ok(ret
== filebuf_text
, "wrong return, expected %d got %d\n", filebuf_text
, ret
);
1981 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
1982 ret
= (int) call_func2(p_filebuf_setmode
, &fb1
, filebuf_binary
);
1983 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
1984 fb1
.base
.do_lock
= -1;
1985 ret
= (int) call_func2(p_filebuf_setmode
, &fb1
, 0x9000);
1986 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
1987 fb2
.base
.do_lock
= 0;
1988 ret
= (int) call_func2(p_filebuf_setmode
, &fb2
, filebuf_text
);
1989 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
1990 fb2
.base
.do_lock
= -1;
1993 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
1994 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
1995 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
1996 fb1
.base
.egptr
= fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
+ 256;
1997 fb1
.base
.epptr
= fb1
.base
.ebuf
;
1998 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "We're no strangers to love\n", 27);
1999 ok(ret
== 27, "wrong return, expected 27 got %d\n", ret
);
2000 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2001 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
2002 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2003 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2004 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.egptr
= NULL
;
2005 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
;
2006 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2007 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "You know the rules and so do I\n", 31);
2008 ok(ret
== 31, "wrong return, expected 31 got %d\n", ret
);
2009 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2010 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2011 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2012 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2013 fb1
.base
.eback
= fb1
.base
.base
;
2014 fb1
.base
.gptr
= fb1
.base
.base
+ 190;
2015 fb1
.base
.egptr
= fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
+ 256;
2016 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2017 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2018 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2019 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2020 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2021 ok(_tell(fb1
.fd
) == 0, "_tell failed\n");
2022 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
;
2023 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2024 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2025 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
2026 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2027 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2028 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2029 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2030 ok(fb1
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb1
.base
.epptr
);
2031 fb1
.base
.pbase
= fb1
.base
.base
;
2032 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2033 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2034 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
2035 fb1
.base
.pbase
= fb1
.base
.base
;
2036 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2037 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2038 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2039 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
2040 ok(fb1
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb1
.base
.epptr
);
2041 fb1
.base
.eback
= fb1
.base
.base
;
2042 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2043 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2044 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
2045 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2046 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2047 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2048 ok(fb1
.base
.gptr
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2049 fb1
.base
.gptr
= fb1
.base
.base
;
2050 fb1
.base
.egptr
= fb1
.base
.base
+ 100;
2051 fb1
.base
.pbase
= fb1
.base
.base
;
2052 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2053 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
2054 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2055 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 100, "wrong get base, expected %p got %p\n", fb1
.base
.base
+ 100, fb1
.base
.egptr
);
2056 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
2057 fb1
.base
.egptr
= NULL
;
2058 ret
= (int) call_func1(p_filebuf_sync
, &fb1
);
2059 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2060 ok(fb1
.base
.gptr
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2061 ok(fb1
.base
.egptr
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
2062 ret
= (int) call_func1(p_filebuf_sync
, &fb2
);
2063 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
2064 fb3
.base
.eback
= fb3
.base
.base
;
2065 fb3
.base
.gptr
= fb3
.base
.egptr
= fb3
.base
.pbase
= fb3
.base
.pptr
= fb3
.base
.base
+ 256;
2066 fb3
.base
.epptr
= fb3
.base
.ebuf
;
2067 ret
= (int) call_func3(p_streambuf_xsputn
, &fb3
.base
, "A full commitment's what I'm thinking of\n", 41);
2068 ok(ret
== 41, "wrong return, expected 41 got %d\n", ret
);
2069 ret
= (int) call_func1(p_filebuf_sync
, &fb3
);
2070 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
2071 ok(fb3
.base
.gptr
== fb3
.base
.base
+ 256, "wrong get pointer, expected %p got %p\n", fb3
.base
.base
+ 256, fb3
.base
.gptr
);
2072 ok(fb3
.base
.pptr
== fb3
.base
.base
+ 297, "wrong put pointer, expected %p got %p\n", fb3
.base
.base
+ 297, fb3
.base
.pptr
);
2073 fb3
.base
.eback
= fb3
.base
.base
;
2074 fb3
.base
.gptr
= fb3
.base
.egptr
= fb3
.base
.pbase
= fb3
.base
.pptr
= fb3
.base
.base
+ 256;
2075 fb3
.base
.epptr
= fb3
.base
.ebuf
;
2076 ret
= (int) call_func1(p_filebuf_sync
, &fb3
);
2077 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2078 ok(fb3
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb3
.base
.gptr
);
2079 ok(fb3
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb3
.base
.pptr
);
2080 fb3
.base
.eback
= fb3
.base
.base
;
2081 fb3
.base
.gptr
= fb3
.base
.base
+ 216;
2082 fb3
.base
.egptr
= fb3
.base
.pbase
= fb3
.base
.pptr
= fb3
.base
.base
+ 256;
2083 fb3
.base
.epptr
= fb3
.base
.ebuf
;
2084 ok(_read(fb3
.fd
, fb3
.base
.gptr
, 42) == 40, "read failed\n");
2085 ret
= (int) call_func1(p_filebuf_sync
, &fb3
);
2086 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
2087 ok(fb3
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb3
.base
.gptr
);
2088 ok(fb3
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb3
.base
.pptr
);
2089 ok(_tell(fb3
.fd
) == 0, "_tell failed\n");
2090 fb3
.base
.eback
= fb3
.base
.gptr
= fb3
.base
.egptr
= NULL
;
2091 fb3
.base
.pbase
= fb3
.base
.pptr
= fb3
.base
.epptr
= NULL
;
2094 ret
= (int) call_func2(p_filebuf_overflow
, &fb1
, EOF
);
2095 ok(ret
== 1, "wrong return, expected 1 got %d\n", ret
);
2096 fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.epptr
= NULL
;
2097 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2098 fb1
.base
.egptr
= fb1
.base
.ebuf
;
2099 ret
= (int) call_func2(p_filebuf_overflow
, &fb1
, 'a');
2100 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2101 fb1
.base
.gptr
= fb1
.base
.egptr
= fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
+ 256;
2102 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2103 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "I just want to tell you how I'm feeling", 39);
2104 ok(ret
== 39, "wrong return, expected 39 got %d\n", ret
);
2105 ret
= (int) call_func2(p_filebuf_overflow
, &fb1
, '\n');
2106 ok(ret
== 1, "wrong return, expected 1 got %d\n", ret
);
2107 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2108 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
2109 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 1, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 1, fb1
.base
.pptr
);
2110 ok(fb1
.base
.epptr
== fb1
.base
.ebuf
, "wrong put end pointer, expected %p got %p\n", fb1
.base
.ebuf
, fb1
.base
.epptr
);
2111 ok(*fb1
.base
.pbase
== '\n', "wrong character, expected '\\n' got '%c'\n", *fb1
.base
.pbase
);
2112 ret
= (int) call_func2(p_filebuf_overflow
, &fb1
, EOF
);
2113 ok(ret
== 1, "wrong return, expected 1 got %d\n", ret
);
2114 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2115 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
2116 ok(fb1
.base
.pptr
== fb1
.base
.base
, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pptr
);
2117 ok(fb1
.base
.epptr
== fb1
.base
.ebuf
, "wrong put end pointer, expected %p got %p\n", fb1
.base
.ebuf
, fb1
.base
.epptr
);
2118 ret
= (int) call_func2(p_filebuf_overflow
, &fb2
, EOF
);
2119 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2120 fb2
.base
.do_lock
= 0;
2121 pret
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_in
|OPENMODE_out
, filebuf_openprot
);
2122 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
2123 fb2
.base
.do_lock
= -1;
2124 ret
= (int) call_func2(p_filebuf_overflow
, &fb2
, EOF
);
2125 ok(ret
== 1, "wrong return, expected 1 got %d\n", ret
);
2128 ret
= (int) call_func1(p_filebuf_underflow
, &fb1
);
2129 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2130 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2131 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2132 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2133 fb1
.base
.egptr
= fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
+ 256;
2134 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2135 *fb1
.base
.gptr
= 'A';
2136 ret
= (int) call_func1(p_filebuf_underflow
, &fb1
);
2137 ok(ret
== 'A', "wrong return, expected 'A' got %d\n", ret
);
2138 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2139 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 256, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 256, fb1
.base
.pptr
);
2140 *fb1
.base
.gptr
= -50;
2141 ret
= (int) call_func1(p_filebuf_underflow
, &fb1
);
2142 ok(ret
== 206, "wrong return, expected 206 got %d\n", ret
);
2143 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2144 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 256, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 256, fb1
.base
.pptr
);
2145 fb1
.base
.gptr
= fb1
.base
.ebuf
;
2146 ret
= (int) call_func1(p_filebuf_underflow
, &fb1
);
2147 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2148 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2149 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2150 ok(_lseek(fb1
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
2151 ret
= (int) call_func1(p_filebuf_underflow
, &fb1
);
2152 ok(ret
== 'f', "wrong return, expected 'f' got %d\n", ret
);
2153 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
2154 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2155 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 106, "wrong get end pointer, expected %p got %p\n", fb1
.base
.base
+ 106, fb1
.base
.egptr
);
2156 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2157 ret
= (int) call_func1(p_filebuf_underflow
, &fb2
);
2158 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2159 ok(_write(fb2
.fd
, "A\n", 2) == 2, "_write failed\n");
2160 ok(_lseek(fb2
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
2161 ret
= (int) call_func1(p_filebuf_underflow
, &fb2
);
2162 ok(ret
== 'A', "wrong return, expected 'A' got %d\n", ret
);
2163 ret
= (int) call_func1(p_filebuf_underflow
, &fb2
);
2164 ok(ret
== '\n', "wrong return, expected '\\n' got %d\n", ret
);
2165 ok(_lseek(fb2
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
2166 ok(_write(fb2
.fd
, "\xCE\n", 2) == 2, "_write failed\n");
2167 ok(_lseek(fb2
.fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
2168 ret
= (int) call_func1(p_filebuf_underflow
, &fb2
);
2169 ok(ret
== 206, "wrong return, expected 206 got %d\n", ret
);
2170 fb2
.base
.do_lock
= 0;
2171 pret
= call_func1(p_filebuf_close
, &fb2
);
2172 ok(pret
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pret
);
2173 fb2
.base
.do_lock
= -1;
2174 ret
= (int) call_func1(p_filebuf_underflow
, &fb2
);
2175 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2178 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 5, SEEKDIR_beg
, 0);
2179 ok(ret
== 5, "wrong return, expected 5 got %d\n", ret
);
2180 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2181 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2182 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2183 fb1
.base
.egptr
= fb1
.base
.ebuf
;
2184 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 0, SEEKDIR_beg
, 0);
2185 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2186 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.egptr
= NULL
;
2187 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 10, SEEKDIR_beg
, OPENMODE_in
|OPENMODE_out
);
2188 ok(ret
== 10, "wrong return, expected 10 got %d\n", ret
);
2189 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 0, SEEKDIR_cur
, 0);
2190 ok(ret
== 10, "wrong return, expected 10 got %d\n", ret
);
2191 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 200, SEEKDIR_cur
, OPENMODE_in
);
2192 ok(ret
== 210, "wrong return, expected 210 got %d\n", ret
);
2193 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, -60, SEEKDIR_cur
, 0);
2194 ok(ret
== 150, "wrong return, expected 150 got %d\n", ret
);
2195 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 0, SEEKDIR_end
, 0);
2196 ok(ret
== 106, "wrong return, expected 106 got %d\n", ret
);
2197 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 20, SEEKDIR_end
, OPENMODE_out
);
2198 ok(ret
== 126, "wrong return, expected 126 got %d\n", ret
);
2199 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, -150, SEEKDIR_end
, -1);
2200 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2201 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 10, 3, 0);
2202 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2203 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 16, SEEKDIR_beg
, 0);
2204 ok(ret
== 16, "wrong return, expected 16 got %d\n", ret
);
2207 ret
= (int) call_func2(p_streambuf_pbackfail
, &fb1
.base
, 'B');
2208 ok(ret
== 'B', "wrong return, expected 'B' got %d\n", ret
);
2209 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2210 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2211 ok(_tell(fb1
.fd
) == 15, "_tell failed\n");
2212 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2213 fb1
.base
.egptr
= fb1
.base
.pbase
= fb1
.base
.pptr
= fb1
.base
.base
+ 256;
2214 fb1
.base
.epptr
= fb1
.base
.ebuf
;
2215 ret
= (int) call_func2(p_streambuf_pbackfail
, &fb1
.base
, 'C');
2216 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2217 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2218 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2219 ok(_tell(fb1
.fd
) == 15, "_tell failed\n");
2220 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2221 fb1
.base
.egptr
= fb1
.base
.base
+ 2;
2222 ret
= (int) call_func2(p_streambuf_pbackfail
, &fb1
.base
, 'C');
2223 ok(ret
== 'C', "wrong return, expected 'C' got %d\n", ret
);
2224 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
2225 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2226 ok(_tell(fb1
.fd
) == 12, "_tell failed\n");
2227 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
2228 fb1
.base
.egptr
= fb1
.base
.ebuf
;
2229 *fb1
.base
.gptr
++ = 'D';
2230 ret
= (int) call_func2(p_streambuf_pbackfail
, &fb1
.base
, 'C');
2231 ok(ret
== 'C', "wrong return, expected 'C' got %d\n", ret
);
2232 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
2233 ok(*fb1
.base
.gptr
== 'C', "wrong character, expected 'C' got '%c'\n", *fb1
.base
.gptr
);
2234 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
2235 ok(_tell(fb1
.fd
) == 12, "_tell failed\n");
2236 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.egptr
= NULL
;
2239 pret
= call_func1(p_filebuf_close
, &fb2
);
2240 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
2241 fb3
.base
.do_lock
= 0;
2242 pret
= call_func1(p_filebuf_close
, &fb3
);
2243 ok(pret
== &fb3
, "wrong return, expected %p got %p\n", &fb3
, pret
);
2244 ok(fb3
.fd
== -1, "wrong fd, expected -1 got %d\n", fb3
.fd
);
2246 pret
= call_func1(p_filebuf_close
, &fb3
);
2247 ok(pret
== NULL
, "wrong return, expected %p got %p\n", NULL
, pret
);
2248 ok(fb3
.fd
== 5, "wrong fd, expected 5 got %d\n", fb3
.fd
);
2249 fb3
.base
.do_lock
= -1;
2251 SetEvent(lock_arg
.test
);
2252 WaitForSingleObject(thread
, INFINITE
);
2255 call_func1(p_filebuf_dtor
, &fb1
);
2256 ok(fb1
.fd
== -1, "wrong fd, expected -1 got %d\n", fb1
.fd
);
2257 call_func1(p_filebuf_dtor
, &fb2
);
2258 call_func1(p_filebuf_dtor
, &fb3
);
2260 ok(_unlink(filename1
) == 0, "Couldn't unlink file named '%s'\n", filename1
);
2261 ok(_unlink(filename2
) == 0, "Couldn't unlink file named '%s'\n", filename2
);
2262 ok(_unlink(filename3
) == 0, "Couldn't unlink file named '%s'\n", filename3
);
2263 CloseHandle(lock_arg
.lock
);
2264 CloseHandle(lock_arg
.test
);
2265 CloseHandle(thread
);
2268 static void test_strstreambuf(void)
2270 strstreambuf ssb1
, ssb2
;
2272 char buffer
[64], *pbuffer
;
2275 memset(&ssb1
, 0xab, sizeof(strstreambuf
));
2276 memset(&ssb2
, 0xab, sizeof(strstreambuf
));
2278 /* constructors/destructor */
2279 call_func2(p_strstreambuf_dynamic_ctor
, &ssb1
, 64);
2280 ok(ssb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb1
.base
.allocated
);
2281 ok(ssb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb1
.base
.unbuffered
);
2282 ok(ssb1
.dynamic
== 1, "expected 1, got %d\n", ssb1
.dynamic
);
2283 ok(ssb1
.increase
== 64, "expected 64, got %d\n", ssb1
.increase
);
2284 ok(ssb1
.constant
== 0, "expected 0, got %d\n", ssb1
.constant
);
2285 ok(ssb1
.f_alloc
== NULL
, "expected %p, got %p\n", NULL
, ssb1
.f_alloc
);
2286 ok(ssb1
.f_free
== NULL
, "expected %p, got %p\n", NULL
, ssb1
.f_free
);
2287 call_func1(p_strstreambuf_dtor
, &ssb1
);
2288 call_func3(p_strstreambuf_funcs_ctor
, &ssb2
, (allocFunction
)p_operator_new
, p_operator_delete
);
2289 ok(ssb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb2
.base
.allocated
);
2290 ok(ssb2
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb2
.base
.unbuffered
);
2291 ok(ssb2
.dynamic
== 1, "expected 1, got %d\n", ssb2
.dynamic
);
2292 ok(ssb2
.increase
== 1, "expected 1, got %d\n", ssb2
.increase
);
2293 ok(ssb2
.constant
== 0, "expected 0, got %d\n", ssb2
.constant
);
2294 ok(ssb2
.f_alloc
== (allocFunction
)p_operator_new
, "expected %p, got %p\n", p_operator_new
, ssb2
.f_alloc
);
2295 ok(ssb2
.f_free
== p_operator_delete
, "expected %p, got %p\n", p_operator_delete
, ssb2
.f_free
);
2296 call_func1(p_strstreambuf_dtor
, &ssb2
);
2297 memset(&ssb1
, 0xab, sizeof(strstreambuf
));
2298 memset(&ssb2
, 0xab, sizeof(strstreambuf
));
2299 call_func4(p_strstreambuf_buffer_ctor
, &ssb1
, buffer
, 64, buffer
+ 20);
2300 ok(ssb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb1
.base
.allocated
);
2301 ok(ssb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb1
.base
.unbuffered
);
2302 ok(ssb1
.base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ssb1
.base
.base
);
2303 ok(ssb1
.base
.ebuf
== buffer
+ 64, "wrong buffer end, expected %p got %p\n", buffer
+ 64, ssb1
.base
.ebuf
);
2304 ok(ssb1
.base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, ssb1
.base
.eback
);
2305 ok(ssb1
.base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, ssb1
.base
.gptr
);
2306 ok(ssb1
.base
.egptr
== buffer
+ 20, "wrong get end, expected %p got %p\n", buffer
+ 20, ssb1
.base
.egptr
);
2307 ok(ssb1
.base
.pbase
== buffer
+ 20, "wrong put base, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pbase
);
2308 ok(ssb1
.base
.pptr
== buffer
+ 20, "wrong put pointer, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pptr
);
2309 ok(ssb1
.base
.epptr
== buffer
+ 64, "wrong put end, expected %p got %p\n", buffer
+ 64, ssb1
.base
.epptr
);
2310 ok(ssb1
.dynamic
== 0, "expected 0, got %d\n", ssb1
.dynamic
);
2311 ok(ssb1
.constant
== 1, "expected 1, got %d\n", ssb1
.constant
);
2312 call_func1(p_strstreambuf_dtor
, &ssb1
);
2313 strcpy(buffer
, "Test");
2314 call_func4(p_strstreambuf_buffer_ctor
, &ssb2
, buffer
, 0, buffer
+ 20);
2315 ok(ssb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb2
.base
.allocated
);
2316 ok(ssb2
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb2
.base
.unbuffered
);
2317 ok(ssb2
.base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ssb2
.base
.base
);
2318 ok(ssb2
.base
.ebuf
== buffer
+ 4, "wrong buffer end, expected %p got %p\n", buffer
+ 4, ssb2
.base
.ebuf
);
2319 ok(ssb2
.base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, ssb2
.base
.eback
);
2320 ok(ssb2
.base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, ssb2
.base
.gptr
);
2321 ok(ssb2
.base
.egptr
== buffer
+ 20, "wrong get end, expected %p got %p\n", buffer
+ 20, ssb2
.base
.egptr
);
2322 ok(ssb2
.base
.pbase
== buffer
+ 20, "wrong put base, expected %p got %p\n", buffer
+ 20, ssb2
.base
.pbase
);
2323 ok(ssb2
.base
.pptr
== buffer
+ 20, "wrong put pointer, expected %p got %p\n", buffer
+ 20, ssb2
.base
.pptr
);
2324 ok(ssb2
.base
.epptr
== buffer
+ 4, "wrong put end, expected %p got %p\n", buffer
+ 4, ssb2
.base
.epptr
);
2325 ok(ssb2
.dynamic
== 0, "expected 0, got %d\n", ssb2
.dynamic
);
2326 ok(ssb2
.constant
== 1, "expected 1, got %d\n", ssb2
.constant
);
2327 call_func1(p_strstreambuf_dtor
, &ssb2
);
2328 memset(&ssb1
, 0xab, sizeof(strstreambuf
));
2329 memset(&ssb2
, 0xab, sizeof(strstreambuf
));
2330 call_func4(p_strstreambuf_buffer_ctor
, &ssb1
, NULL
, 16, buffer
+ 20);
2331 ok(ssb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb1
.base
.allocated
);
2332 ok(ssb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb1
.base
.unbuffered
);
2333 ok(ssb1
.base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, ssb1
.base
.base
);
2334 ok(ssb1
.base
.ebuf
== (char*)16, "wrong buffer end, expected %p got %p\n", (char*)16, ssb1
.base
.ebuf
);
2335 ok(ssb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, ssb1
.base
.eback
);
2336 ok(ssb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, ssb1
.base
.gptr
);
2337 ok(ssb1
.base
.egptr
== buffer
+ 20, "wrong get end, expected %p got %p\n", buffer
+ 20, ssb1
.base
.egptr
);
2338 ok(ssb1
.base
.pbase
== buffer
+ 20, "wrong put base, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pbase
);
2339 ok(ssb1
.base
.pptr
== buffer
+ 20, "wrong put pointer, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pptr
);
2340 ok(ssb1
.base
.epptr
== (char*)16, "wrong put end, expected %p got %p\n", (char*)16, ssb1
.base
.epptr
);
2341 ok(ssb1
.dynamic
== 0, "expected 0, got %d\n", ssb1
.dynamic
);
2342 ok(ssb1
.constant
== 1, "expected 1, got %d\n", ssb1
.constant
);
2343 call_func1(p_strstreambuf_dtor
, &ssb1
);
2344 call_func4(p_strstreambuf_buffer_ctor
, &ssb2
, buffer
, 0, NULL
);
2345 ok(ssb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb2
.base
.allocated
);
2346 ok(ssb2
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb2
.base
.unbuffered
);
2347 ok(ssb2
.base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ssb2
.base
.base
);
2348 ok(ssb2
.base
.ebuf
== buffer
+ 4, "wrong buffer end, expected %p got %p\n", buffer
+ 4, ssb2
.base
.ebuf
);
2349 ok(ssb2
.base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, ssb2
.base
.eback
);
2350 ok(ssb2
.base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, ssb2
.base
.gptr
);
2351 ok(ssb2
.base
.egptr
== buffer
+ 4, "wrong get end, expected %p got %p\n", buffer
+ 4, ssb2
.base
.egptr
);
2352 ok(ssb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, ssb2
.base
.pbase
);
2353 ok(ssb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, ssb2
.base
.pptr
);
2354 ok(ssb2
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, ssb2
.base
.epptr
);
2355 ok(ssb2
.dynamic
== 0, "expected 0, got %d\n", ssb2
.dynamic
);
2356 ok(ssb2
.constant
== 1, "expected 1, got %d\n", ssb2
.constant
);
2357 call_func1(p_strstreambuf_dtor
, &ssb2
);
2358 memset(&ssb1
, 0xab, sizeof(strstreambuf
));
2359 memset(&ssb2
, 0xab, sizeof(strstreambuf
));
2360 call_func4(p_strstreambuf_buffer_ctor
, &ssb1
, buffer
, -5, buffer
+ 20);
2361 ok(ssb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb1
.base
.allocated
);
2362 ok(ssb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb1
.base
.unbuffered
);
2363 ok(ssb1
.base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ssb1
.base
.base
);
2364 ok(ssb1
.base
.ebuf
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || ssb1
.base
.ebuf
== (char*)-1,
2365 "wrong buffer end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, ssb1
.base
.ebuf
);
2366 ok(ssb1
.base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, ssb1
.base
.eback
);
2367 ok(ssb1
.base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, ssb1
.base
.gptr
);
2368 ok(ssb1
.base
.egptr
== buffer
+ 20, "wrong get end, expected %p got %p\n", buffer
+ 20, ssb1
.base
.egptr
);
2369 ok(ssb1
.base
.pbase
== buffer
+ 20, "wrong put base, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pbase
);
2370 ok(ssb1
.base
.pptr
== buffer
+ 20, "wrong put pointer, expected %p got %p\n", buffer
+ 20, ssb1
.base
.pptr
);
2371 ok(ssb1
.base
.epptr
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || ssb1
.base
.epptr
== (char*)-1,
2372 "wrong put end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, ssb1
.base
.epptr
);
2373 ok(ssb1
.dynamic
== 0, "expected 0, got %d\n", ssb1
.dynamic
);
2374 ok(ssb1
.constant
== 1, "expected 1, got %d\n", ssb1
.constant
);
2375 call_func1(p_strstreambuf_ctor
, &ssb2
);
2376 ok(ssb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", ssb2
.base
.allocated
);
2377 ok(ssb2
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ssb2
.base
.unbuffered
);
2378 ok(ssb2
.dynamic
== 1, "expected 1, got %d\n", ssb2
.dynamic
);
2379 ok(ssb2
.increase
== 1, "expected 1, got %d\n", ssb2
.increase
);
2380 ok(ssb2
.constant
== 0, "expected 0, got %d\n", ssb2
.constant
);
2381 ok(ssb2
.f_alloc
== NULL
, "expected %p, got %p\n", NULL
, ssb2
.f_alloc
);
2382 ok(ssb2
.f_free
== NULL
, "expected %p, got %p\n", NULL
, ssb2
.f_free
);
2385 call_func2(p_strstreambuf_freeze
, &ssb1
, 0);
2386 ok(ssb1
.dynamic
== 0, "expected 0, got %d\n", ssb1
.dynamic
);
2388 call_func2(p_strstreambuf_freeze
, &ssb1
, 0);
2389 ok(ssb1
.dynamic
== 1, "expected 1, got %d\n", ssb1
.dynamic
);
2390 call_func2(p_strstreambuf_freeze
, &ssb1
, 3);
2391 ok(ssb1
.dynamic
== 0, "expected 0, got %d\n", ssb1
.dynamic
);
2393 call_func2(p_strstreambuf_freeze
, &ssb2
, 5);
2394 ok(ssb2
.dynamic
== 0, "expected 0, got %d\n", ssb2
.dynamic
);
2395 call_func2(p_strstreambuf_freeze
, &ssb2
, 0);
2396 ok(ssb2
.dynamic
== 1, "expected 1, got %d\n", ssb2
.dynamic
);
2401 ret
= (int) call_func1(p_strstreambuf_doallocate
, &ssb2
);
2402 ok(ret
== 1, "return value %d\n", ret
);
2403 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 5, "expected %p, got %p\n", ssb2
.base
.base
+ 5, ssb2
.base
.ebuf
);
2404 ssb2
.base
.eback
= ssb2
.base
.base
;
2405 ssb2
.base
.gptr
= ssb2
.base
.base
+ 2;
2406 ssb2
.base
.egptr
= ssb2
.base
.base
+ 4;
2407 strcpy(ssb2
.base
.base
, "Check");
2408 ret
= (int) call_func1(p_strstreambuf_doallocate
, &ssb2
);
2409 ok(ret
== 1, "return value %d\n", ret
);
2410 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 10, "expected %p, got %p\n", ssb2
.base
.base
+ 10, ssb2
.base
.ebuf
);
2411 ok(ssb2
.base
.eback
== ssb2
.base
.base
, "wrong get base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.eback
);
2412 ok(ssb2
.base
.gptr
== ssb2
.base
.base
+ 2, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
+ 2, ssb2
.base
.gptr
);
2413 ok(ssb2
.base
.egptr
== ssb2
.base
.base
+ 4, "wrong get end, expected %p got %p\n", ssb2
.base
.base
+ 4, ssb2
.base
.egptr
);
2414 ok(!strncmp(ssb2
.base
.base
, "Check", 5), "strings are not equal\n");
2415 ssb2
.base
.pbase
= ssb2
.base
.pptr
= ssb2
.base
.base
+ 4;
2416 ssb2
.base
.epptr
= ssb2
.base
.ebuf
;
2418 ret
= (int) call_func1(p_strstreambuf_doallocate
, &ssb2
);
2419 ok(ret
== 1, "return value %d\n", ret
);
2420 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 11, "expected %p, got %p\n", ssb2
.base
.base
+ 11, ssb2
.base
.ebuf
);
2421 ok(ssb2
.base
.pbase
== ssb2
.base
.base
+ 4, "wrong put base, expected %p got %p\n", ssb2
.base
.base
+ 4, ssb2
.base
.pbase
);
2422 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 4, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 4, ssb2
.base
.pptr
);
2423 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 10, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 10, ssb2
.base
.epptr
);
2424 ok(!strncmp(ssb2
.base
.base
, "Check", 5), "strings are not equal\n");
2428 pret
= call_func3(p_strstreambuf_setbuf
, &ssb1
, buffer
+ 16, 16);
2429 ok(pret
== &ssb1
.base
, "expected %p got %p\n", &ssb1
.base
, pret
);
2430 ok(ssb1
.base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ssb1
.base
.base
);
2431 ok(ssb1
.increase
== 16, "expected 16, got %d\n", ssb1
.increase
);
2432 pret
= call_func3(p_strstreambuf_setbuf
, &ssb2
, NULL
, 2);
2433 ok(pret
== &ssb2
.base
, "expected %p got %p\n", &ssb2
.base
, pret
);
2434 ok(ssb2
.increase
== 2, "expected 2, got %d\n", ssb2
.increase
);
2435 pret
= call_func3(p_strstreambuf_setbuf
, &ssb2
, buffer
, 0);
2436 ok(pret
== &ssb2
.base
, "expected %p got %p\n", &ssb2
.base
, pret
);
2437 ok(ssb2
.increase
== 2, "expected 2, got %d\n", ssb2
.increase
);
2438 pret
= call_func3(p_strstreambuf_setbuf
, &ssb2
, NULL
, -2);
2439 ok(pret
== &ssb2
.base
, "expected %p got %p\n", &ssb2
.base
, pret
);
2440 ok(ssb2
.increase
== -2, "expected -2, got %d\n", ssb2
.increase
);
2443 ssb1
.base
.epptr
= ssb1
.base
.ebuf
= ssb1
.base
.base
+ 64;
2444 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb1
);
2445 ok(ret
== 'T', "expected 'T' got %d\n", ret
);
2446 ssb1
.base
.gptr
= ssb1
.base
.egptr
;
2447 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb1
);
2448 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2449 ret
= (int) call_func3(p_streambuf_xsputn
, &ssb1
.base
, "Gotta make you understand", 5);
2450 ok(ret
== 5, "expected 5 got %d\n", ret
);
2451 ok(ssb1
.base
.pptr
== buffer
+ 25, "wrong put pointer, expected %p got %p\n", buffer
+ 25, ssb1
.base
.pptr
);
2452 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb1
);
2453 ok(ret
== 'G', "expected 'G' got %d\n", ret
);
2454 ok(ssb1
.base
.egptr
== buffer
+ 25, "wrong get end, expected %p got %p\n", buffer
+ 25, ssb1
.base
.egptr
);
2455 *ssb1
.base
.gptr
= -50;
2456 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb1
);
2457 ok(ret
== 206, "expected 206 got %d\n", ret
);
2458 ok(ssb1
.base
.egptr
== buffer
+ 25, "wrong get end, expected %p got %p\n", buffer
+ 25, ssb1
.base
.egptr
);
2459 ssb1
.base
.gptr
= ssb1
.base
.egptr
= ssb1
.base
.pptr
= ssb1
.base
.epptr
;
2460 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb1
);
2461 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2462 ssb2
.base
.eback
= ssb2
.base
.gptr
= ssb2
.base
.egptr
= NULL
;
2463 ssb2
.base
.pbase
= ssb2
.base
.pptr
= ssb2
.base
.epptr
= NULL
;
2464 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2465 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2466 ssb2
.base
.pbase
= ssb2
.base
.pptr
= ssb2
.base
.base
;
2467 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2468 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2469 ok(ssb2
.base
.eback
== ssb2
.base
.base
, "wrong get base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.eback
);
2470 ok(ssb2
.base
.gptr
== ssb2
.base
.base
, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.gptr
);
2471 ok(ssb2
.base
.egptr
== ssb2
.base
.base
, "wrong get end, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.egptr
);
2472 ssb2
.base
.pptr
= ssb2
.base
.base
+ 3;
2473 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2474 ok(ret
== 'C', "expected 'C' got %d\n", ret
);
2475 ok(ssb2
.base
.eback
== ssb2
.base
.base
, "wrong get base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.eback
);
2476 ok(ssb2
.base
.gptr
== ssb2
.base
.base
, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.gptr
);
2477 ok(ssb2
.base
.egptr
== ssb2
.base
.base
+ 3, "wrong get end, expected %p got %p\n", ssb2
.base
.base
+ 3, ssb2
.base
.egptr
);
2478 ssb2
.base
.gptr
= ssb2
.base
.base
+ 2;
2479 ssb2
.base
.egptr
= NULL
;
2480 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2481 ok(ret
== 'e', "expected 'e' got %d\n", ret
);
2482 ok(ssb2
.base
.eback
== ssb2
.base
.base
, "wrong get base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.eback
);
2483 ok(ssb2
.base
.gptr
== ssb2
.base
.base
+ 2, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.gptr
);
2484 ok(ssb2
.base
.egptr
== ssb2
.base
.base
+ 3, "wrong get end, expected %p got %p\n", ssb2
.base
.base
+ 3, ssb2
.base
.egptr
);
2485 ssb2
.base
.eback
= ssb2
.base
.egptr
= ssb2
.base
.base
+ 1;
2486 ssb2
.base
.gptr
= ssb2
.base
.base
+ 3;
2487 ssb2
.base
.pptr
= ssb2
.base
.base
+ 5;
2488 *(ssb2
.base
.base
+ 2) = -50;
2489 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2490 ok(ret
== 206, "expected 206 got %d\n", ret
);
2491 ok(ssb2
.base
.eback
== ssb2
.base
.base
, "wrong get base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.eback
);
2492 ok(ssb2
.base
.gptr
== ssb2
.base
.base
+ 2, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.gptr
);
2493 ok(ssb2
.base
.egptr
== ssb2
.base
.base
+ 5, "wrong get end, expected %p got %p\n", ssb2
.base
.base
+ 5, ssb2
.base
.egptr
);
2494 ssb2
.base
.eback
= ssb2
.base
.base
;
2495 ssb2
.base
.gptr
= ssb2
.base
.egptr
= ssb2
.base
.ebuf
;
2496 ssb2
.base
.pbase
= ssb2
.base
.pptr
= NULL
;
2497 ret
= (int) call_func1(p_strstreambuf_underflow
, &ssb2
);
2498 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2501 ssb1
.base
.pptr
= ssb1
.base
.epptr
- 1;
2502 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb1
, EOF
);
2503 ok(ret
== 1, "expected 1 got %d\n", ret
);
2504 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb1
, 'A');
2505 ok(ret
== 1, "expected 1 got %d\n", ret
);
2506 ok(ssb1
.base
.pptr
== ssb1
.base
.epptr
, "wrong put pointer, expected %p got %p\n", ssb1
.base
.epptr
, ssb1
.base
.pptr
);
2507 ok(*(ssb1
.base
.pptr
- 1) == 'A', "expected 'A' got %d\n", *(ssb1
.base
.pptr
- 1));
2508 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb1
, 'B');
2509 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2510 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb1
, EOF
);
2511 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2513 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'C');
2514 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2516 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'C');
2517 ok(ret
== 1, "expected 1 got %d\n", ret
);
2518 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 12, "expected %p got %p\n", ssb2
.base
.base
+ 12, ssb2
.base
.ebuf
);
2519 ok(ssb2
.base
.gptr
== ssb2
.base
.base
+ 11, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
+ 11, ssb2
.base
.gptr
);
2520 ok(ssb2
.base
.pbase
== ssb2
.base
.base
+ 11, "wrong put base, expected %p got %p\n", ssb2
.base
.base
+ 11, ssb2
.base
.pbase
);
2521 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 12, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 12, ssb2
.base
.pptr
);
2522 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 12, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 12, ssb2
.base
.epptr
);
2523 ok(*(ssb2
.base
.pptr
- 1) == 'C', "expected 'C' got %d\n", *(ssb2
.base
.pptr
- 1));
2525 ssb2
.base
.eback
= ssb2
.base
.gptr
= ssb2
.base
.egptr
= NULL
;
2526 ssb2
.base
.pbase
= ssb2
.base
.pptr
= ssb2
.base
.epptr
= NULL
;
2527 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'D');
2528 ok(ret
== 1, "expected 1 got %d\n", ret
);
2529 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 16, "expected %p got %p\n", ssb2
.base
.base
+ 16, ssb2
.base
.ebuf
);
2530 ok(ssb2
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, ssb2
.base
.gptr
);
2531 ok(ssb2
.base
.pbase
== ssb2
.base
.base
, "wrong put base, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.pbase
);
2532 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 1, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 1, ssb2
.base
.pptr
);
2533 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 16, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 16, ssb2
.base
.epptr
);
2534 ok(*(ssb2
.base
.pptr
- 1) == 'D', "expected 'D' got %d\n", *(ssb2
.base
.pptr
- 1));
2535 ssb2
.base
.pbase
= ssb2
.base
.base
+ 3;
2536 ssb2
.base
.pptr
= ssb2
.base
.epptr
+ 5;
2537 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'E');
2538 ok(ret
== 1, "expected 1 got %d\n", ret
);
2539 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 20, "expected %p got %p\n", ssb2
.base
.base
+ 20, ssb2
.base
.ebuf
);
2540 ok(ssb2
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, ssb2
.base
.gptr
);
2541 ok(ssb2
.base
.pbase
== ssb2
.base
.base
+ 3, "wrong put base, expected %p got %p\n", ssb2
.base
.base
+ 3, ssb2
.base
.pbase
);
2542 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 22, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 22, ssb2
.base
.pptr
);
2543 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 20, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 20, ssb2
.base
.epptr
);
2544 ok(*(ssb2
.base
.pptr
- 1) == 'E', "expected 'E' got %d\n", *(ssb2
.base
.pptr
- 1));
2545 ssb2
.base
.egptr
= ssb2
.base
.base
+ 2;
2546 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'F');
2547 ok(ret
== 1, "expected 1 got %d\n", ret
);
2548 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 24, "expected %p got %p\n", ssb2
.base
.base
+ 24, ssb2
.base
.ebuf
);
2549 ok(ssb2
.base
.gptr
!= NULL
, "wrong get pointer, expected != NULL\n");
2550 ok(ssb2
.base
.pbase
== ssb2
.base
.base
+ 3, "wrong put base, expected %p got %p\n", ssb2
.base
.base
+ 3, ssb2
.base
.pbase
);
2551 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 23, ssb2
.base
.pptr
);
2552 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 24, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 24, ssb2
.base
.epptr
);
2553 ok(*(ssb2
.base
.pptr
- 1) == 'F', "expected 'F' got %d\n", *(ssb2
.base
.pptr
- 1));
2554 ssb2
.base
.eback
= ssb2
.base
.gptr
= ssb2
.base
.base
;
2555 ssb2
.base
.epptr
= NULL
;
2556 ret
= (int) call_func2(p_strstreambuf_overflow
, &ssb2
, 'G');
2557 ok(ret
== 1, "expected 1 got %d\n", ret
);
2558 ok(ssb2
.base
.ebuf
== ssb2
.base
.base
+ 28, "expected %p got %p\n", ssb2
.base
.base
+ 28, ssb2
.base
.ebuf
);
2559 ok(ssb2
.base
.gptr
== ssb2
.base
.base
, "wrong get pointer, expected %p got %p\n", ssb2
.base
.base
, ssb2
.base
.gptr
);
2560 ok(ssb2
.base
.pbase
== ssb2
.base
.base
+ 2, "wrong put base, expected %p got %p\n", ssb2
.base
.base
+ 2, ssb2
.base
.pbase
);
2561 ok(ssb2
.base
.pptr
== ssb2
.base
.base
+ 3, "wrong put pointer, expected %p got %p\n", ssb2
.base
.base
+ 3, ssb2
.base
.pptr
);
2562 ok(ssb2
.base
.epptr
== ssb2
.base
.base
+ 28, "wrong put end, expected %p got %p\n", ssb2
.base
.base
+ 28, ssb2
.base
.epptr
);
2563 ok(*(ssb2
.base
.pptr
- 1) == 'G', "expected 'G' got %d\n", *(ssb2
.base
.pptr
- 1));
2566 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 0, SEEKDIR_beg
, OPENMODE_in
);
2567 ok(ret
== 0, "expected 0 got %d\n", ret
);
2568 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
, ssb1
.base
.gptr
);
2569 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 3, SEEKDIR_beg
, OPENMODE_in
);
2570 ok(ret
== 3, "expected 3 got %d\n", ret
);
2571 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 3, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 3, ssb1
.base
.gptr
);
2572 ssb1
.base
.egptr
= ssb1
.base
.pbase
;
2573 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 25, SEEKDIR_beg
, OPENMODE_in
);
2574 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2575 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 3, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 3, ssb1
.base
.gptr
);
2576 ssb1
.base
.gptr
= ssb1
.base
.egptr
;
2577 ssb1
.base
.pptr
= ssb1
.base
.pbase
+ 10;
2578 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 25, SEEKDIR_beg
, OPENMODE_in
);
2579 ok(ret
== 25, "expected 25 got %d\n", ret
);
2580 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 25, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 25, ssb1
.base
.gptr
);
2581 ok(ssb1
.base
.egptr
== ssb1
.base
.pptr
, "wrong get end, expected %p got %p\n", ssb1
.base
.pptr
, ssb1
.base
.egptr
);
2582 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -24, SEEKDIR_cur
, OPENMODE_in
);
2583 ok(ret
== 1, "expected 1 got %d\n", ret
);
2584 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 1, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 1, ssb1
.base
.gptr
);
2585 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -5, SEEKDIR_cur
, OPENMODE_in
);
2586 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2587 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 1, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 1, ssb1
.base
.gptr
);
2588 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 0, SEEKDIR_end
, OPENMODE_in
);
2589 ok(ret
== 30, "expected 30 got %d\n", ret
);
2590 ok(ssb1
.base
.gptr
== ssb1
.base
.egptr
, "wrong get pointer, expected %p got %p\n", ssb1
.base
.egptr
, ssb1
.base
.gptr
);
2591 ssb1
.base
.gptr
= ssb1
.base
.eback
;
2592 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -2, SEEKDIR_end
, OPENMODE_in
);
2593 ok(ret
== 28, "expected 28 got %d\n", ret
);
2594 ok(ssb1
.base
.gptr
== ssb1
.base
.egptr
- 2, "wrong get pointer, expected %p got %p\n", ssb1
.base
.egptr
- 2, ssb1
.base
.gptr
);
2595 ssb1
.base
.gptr
= ssb1
.base
.egptr
;
2596 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -5, SEEKDIR_end
, OPENMODE_in
);
2597 ok(ret
== 25, "expected 25 got %d\n", ret
);
2598 ok(ssb1
.base
.gptr
== ssb1
.base
.egptr
- 5, "wrong get pointer, expected %p got %p\n", ssb1
.base
.egptr
- 5, ssb1
.base
.gptr
);
2599 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 1, SEEKDIR_end
, OPENMODE_in
);
2600 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2601 ok(ssb1
.base
.gptr
== ssb1
.base
.egptr
- 5, "wrong get pointer, expected %p got %p\n", ssb1
.base
.egptr
- 5, ssb1
.base
.gptr
);
2602 ssb1
.base
.gptr
= ssb1
.base
.egptr
;
2603 ssb1
.base
.pptr
= ssb1
.base
.egptr
+ 5;
2604 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 1, SEEKDIR_end
, OPENMODE_in
);
2605 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2606 ok(ssb1
.base
.gptr
== ssb1
.base
.egptr
- 5, "wrong get pointer, expected %p got %p\n", ssb1
.base
.egptr
- 5, ssb1
.base
.gptr
);
2607 ok(ssb1
.base
.egptr
== ssb1
.base
.pptr
, "wrong get end, expected %p got %p\n", ssb1
.base
.pptr
, ssb1
.base
.egptr
);
2608 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 3, SEEKDIR_beg
, OPENMODE_out
);
2609 ok(ret
== 3, "expected 3 got %d\n", ret
);
2610 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 3, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 3, ssb1
.base
.pptr
);
2611 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -2, SEEKDIR_beg
, OPENMODE_out
);
2612 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2613 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 3, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 3, ssb1
.base
.pptr
);
2614 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 50, SEEKDIR_beg
, OPENMODE_out
);
2615 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2616 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 3, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 3, ssb1
.base
.pptr
);
2617 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 5, SEEKDIR_cur
, OPENMODE_out
);
2618 ok(ret
== 8, "expected 8 got %d\n", ret
);
2619 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 8, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 8, ssb1
.base
.pptr
);
2620 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, -2, SEEKDIR_end
, OPENMODE_out
);
2621 ok(ret
== 42, "expected 42 got %d\n", ret
);
2622 ok(ssb1
.base
.pptr
== ssb1
.base
.epptr
- 2, "wrong put pointer, expected %p got %p\n", ssb1
.base
.epptr
- 2, ssb1
.base
.pptr
);
2623 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 0, SEEKDIR_end
, OPENMODE_out
);
2624 ok(ret
== 44, "expected 44 got %d\n", ret
);
2625 ok(ssb1
.base
.pptr
== ssb1
.base
.epptr
, "wrong put pointer, expected %p got %p\n", ssb1
.base
.epptr
, ssb1
.base
.pptr
);
2626 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 5, SEEKDIR_beg
, OPENMODE_in
|OPENMODE_out
);
2627 ok(ret
== 5, "expected 5 got %d\n", ret
);
2628 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 5, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 5, ssb1
.base
.gptr
);
2629 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 5, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 5, ssb1
.base
.pptr
);
2630 ssb1
.base
.egptr
= ssb1
.base
.pbase
;
2631 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 21, SEEKDIR_beg
, OPENMODE_in
|OPENMODE_out
);
2632 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2633 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 5, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 5, ssb1
.base
.gptr
);
2634 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 5, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 5, ssb1
.base
.pptr
);
2635 ssb1
.base
.egptr
= ssb1
.base
.epptr
;
2636 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 50, SEEKDIR_beg
, OPENMODE_in
|OPENMODE_out
);
2637 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2638 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 50, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 50, ssb1
.base
.gptr
);
2639 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 5, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 5, ssb1
.base
.pptr
);
2640 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb1
, 2, SEEKDIR_cur
, OPENMODE_in
|OPENMODE_out
);
2641 ok(ret
== 7, "expected 7 got %d\n", ret
);
2642 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 52, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 52, ssb1
.base
.gptr
);
2643 ok(ssb1
.base
.pptr
== ssb1
.base
.pbase
+ 7, "wrong put pointer, expected %p got %p\n", ssb1
.base
.pbase
+ 7, ssb1
.base
.pptr
);
2644 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb2
, 0, SEEKDIR_beg
, OPENMODE_in
|OPENMODE_out
);
2645 ok(ret
== 0, "expected 0 got %d\n", ret
);
2646 ok(ssb2
.base
.gptr
== ssb2
.base
.eback
, "wrong get pointer, expected %p got %p\n", ssb2
.base
.eback
, ssb2
.base
.gptr
);
2647 ok(ssb2
.base
.pptr
== ssb2
.base
.pbase
, "wrong put pointer, expected %p got %p\n", ssb2
.base
.pbase
, ssb2
.base
.pptr
);
2648 ssb2
.base
.gptr
= ssb2
.base
.egptr
;
2649 ssb2
.base
.pptr
+= 10;
2650 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb2
, 5, SEEKDIR_cur
, OPENMODE_in
|OPENMODE_out
);
2651 ok(ret
== 15, "expected 15 got %d\n", ret
);
2652 ok(ssb2
.base
.gptr
== ssb2
.base
.eback
+ 7, "wrong get pointer, expected %p got %p\n", ssb2
.base
.eback
+ 7, ssb2
.base
.gptr
);
2653 ok(ssb2
.base
.egptr
== ssb2
.base
.eback
+ 12, "wrong get end, expected %p got %p\n", ssb2
.base
.eback
+ 12, ssb2
.base
.egptr
);
2654 ok(ssb2
.base
.pptr
== ssb2
.base
.pbase
+ 15, "wrong put pointer, expected %p got %p\n", ssb2
.base
.pbase
+ 15, ssb2
.base
.pptr
);
2655 ssb2
.base
.pptr
= ssb2
.base
.epptr
;
2656 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb2
, -1, SEEKDIR_cur
, OPENMODE_in
|OPENMODE_out
);
2657 ok(ret
== 25, "expected 25 got %d\n", ret
);
2658 ok(ssb2
.base
.gptr
== ssb2
.base
.eback
+ 6, "wrong get pointer, expected %p got %p\n", ssb2
.base
.eback
+ 6, ssb2
.base
.gptr
);
2659 ok(ssb2
.base
.pptr
== ssb2
.base
.pbase
+ 25, "wrong put pointer, expected %p got %p\n", ssb2
.base
.pbase
+ 25, ssb2
.base
.pptr
);
2660 pbuffer
= ssb2
.base
.pbase
;
2661 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb2
, 50, SEEKDIR_beg
, OPENMODE_out
);
2662 ok(ret
== 50, "expected 50 got %d\n", ret
);
2663 ok(ssb2
.base
.gptr
== ssb2
.base
.eback
+ 6, "wrong get pointer, expected %p got %p\n", ssb2
.base
.eback
+ 6, ssb2
.base
.gptr
);
2664 ok(ssb2
.base
.pptr
== pbuffer
+ 50, "wrong put pointer, expected %p got %p\n", pbuffer
+ 50, ssb2
.base
.pptr
);
2665 ok(ssb2
.increase
== 50, "expected 50 got %d\n", ssb2
.increase
);
2666 ssb2
.base
.epptr
= NULL
;
2668 ret
= (int) call_func4(p_strstreambuf_seekoff
, &ssb2
, 0, SEEKDIR_end
, OPENMODE_out
);
2669 ok(ret
== 74, "expected 74 got %d\n", ret
);
2670 ok(ssb2
.base
.pptr
== ssb2
.base
.epptr
, "wrong put pointer, expected %p got %p\n", ssb2
.base
.epptr
, ssb2
.base
.pptr
);
2673 *(ssb1
.base
.gptr
-1) = 'A';
2674 ret
= (int) call_func2(p_streambuf_pbackfail
, &ssb1
.base
, 'X');
2675 ok(ret
== 'X', "wrong return, expected 'X' got %d\n", ret
);
2676 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
+ 51, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
+ 51, ssb1
.base
.gptr
);
2677 ok(*ssb1
.base
.gptr
== 'X', "expected 'X' got '%c'\n", *ssb1
.base
.gptr
);
2678 ssb1
.base
.gptr
= ssb1
.base
.eback
;
2679 ret
= (int) call_func2(p_streambuf_pbackfail
, &ssb1
.base
, 'Y');
2680 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
2681 ssb1
.base
.gptr
= ssb1
.base
.eback
+ 1;
2682 ret
= (int) call_func2(p_streambuf_pbackfail
, &ssb1
.base
, EOF
);
2683 ok(ret
== (char)EOF
, "wrong return, expected EOF got %d\n", ret
);
2684 ok(ssb1
.base
.gptr
== ssb1
.base
.eback
, "wrong get pointer, expected %p got %p\n", ssb1
.base
.eback
, ssb1
.base
.gptr
);
2685 ok((signed char)*ssb1
.base
.gptr
== EOF
, "expected EOF got '%c'\n", *ssb1
.base
.gptr
);
2687 call_func1(p_strstreambuf_dtor
, &ssb1
);
2688 call_func1(p_strstreambuf_dtor
, &ssb2
);
2691 static void test_stdiobuf(void)
2693 stdiobuf stb1
, stb2
;
2694 FILE *file1
, *file2
;
2695 const char filename1
[] = "stdiobuf_test1";
2696 const char filename2
[] = "stdiobuf_test2";
2700 memset(&stb1
, 0xab, sizeof(stdiobuf
));
2701 memset(&stb2
, 0xab, sizeof(stdiobuf
));
2703 file1
= fopen(filename1
, "w");
2704 fputs("Never gonna give you up, never gonna let you down", file1
);
2706 file1
= fopen(filename1
, "r");
2707 ok(file1
!= NULL
, "Couldn't open the file named '%s'\n", filename1
);
2708 file2
= fopen(filename2
, "w+");
2709 ok(file2
!= NULL
, "Couldn't open the file named '%s'\n", filename2
);
2711 /* constructors/destructor */
2712 call_func2(p_stdiobuf_file_ctor
, &stb1
, NULL
);
2713 ok(stb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", stb1
.base
.allocated
);
2714 ok(stb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", stb1
.base
.unbuffered
);
2715 ok(stb1
.file
== NULL
, "wrong file pointer, expected %p got %p\n", NULL
, stb1
.file
);
2716 call_func1(p_stdiobuf_dtor
, &stb1
);
2717 call_func2(p_stdiobuf_file_ctor
, &stb1
, file1
);
2718 ok(stb1
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", stb1
.base
.allocated
);
2719 ok(stb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", stb1
.base
.unbuffered
);
2720 ok(stb1
.file
== file1
, "wrong file pointer, expected %p got %p\n", file1
, stb1
.file
);
2721 call_func2(p_stdiobuf_file_ctor
, &stb2
, file2
);
2722 ok(stb2
.base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", stb2
.base
.allocated
);
2723 ok(stb2
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", stb2
.base
.unbuffered
);
2724 ok(stb2
.file
== file2
, "wrong file pointer, expected %p got %p\n", file2
, stb2
.file
);
2727 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, EOF
);
2728 ok(ret
== 1, "expected 1 got %d\n", ret
);
2729 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, 'a');
2730 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2731 stb1
.base
.unbuffered
= 0;
2732 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, 'a');
2733 ok(ret
== 1, "expected 1 got %d\n", ret
);
2734 ok(stb1
.base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", stb1
.base
.allocated
);
2735 ok(stb1
.base
.ebuf
== stb1
.base
.base
+ 512, "expected %p got %p\n", stb1
.base
.base
+ 512, stb1
.base
.ebuf
);
2736 ok(stb1
.base
.pbase
== stb1
.base
.base
+ 256, "wrong put base, expected %p got %p\n", stb1
.base
.base
+ 256, stb1
.base
.pbase
);
2737 ok(stb1
.base
.pptr
== stb1
.base
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", stb1
.base
.pbase
+ 1, stb1
.base
.pptr
);
2738 ok(stb1
.base
.epptr
== stb1
.base
.ebuf
, "wrong put end, expected %p got %p\n", stb1
.base
.ebuf
, stb1
.base
.epptr
);
2739 ok(*(stb1
.base
.pptr
-1) == 'a', "expected 'a', got '%c'\n", *(stb1
.base
.pptr
-1));
2740 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, EOF
);
2741 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2742 ok(stb1
.base
.pptr
== stb1
.base
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", stb1
.base
.pbase
+ 1, stb1
.base
.pptr
);
2743 stb1
.base
.pptr
= stb1
.base
.pbase
;
2744 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, EOF
);
2745 ok(ret
== 1, "expected 1 got %d\n", ret
);
2746 ok(stb1
.base
.pptr
== stb1
.base
.pbase
, "wrong put pointer, expected %p got %p\n", stb1
.base
.pbase
, stb1
.base
.pptr
);
2747 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb1
, 'b');
2748 ok(ret
== 1, "expected 1 got %d\n", ret
);
2749 ok(stb1
.base
.pptr
== stb1
.base
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", stb1
.base
.pbase
+ 1, stb1
.base
.pptr
);
2750 ok(*(stb1
.base
.pptr
-1) == 'b', "expected 'b', got '%c'\n", *(stb1
.base
.pptr
-1));
2751 stb1
.base
.unbuffered
= 1;
2752 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb2
, EOF
);
2753 ok(ret
== 1, "expected 1 got %d\n", ret
);
2754 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb2
, 'a');
2755 ok(ret
== 'a', "expected 'a' got %d\n", ret
);
2756 stb2
.base
.unbuffered
= 0;
2757 stb2
.base
.base
= buffer
;
2758 stb2
.base
.pbase
= stb2
.base
.pptr
= buffer
+ 32;
2759 stb2
.base
.ebuf
= stb2
.base
.epptr
= buffer
+ 64;
2760 ret
= (int) call_func3(p_streambuf_xsputn
, &stb2
.base
, "Never gonna run around", 22);
2761 ok(ret
== 22, "expected 22 got %d\n", ret
);
2762 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb2
, 'c');
2763 ok(ret
== 1, "expected 1 got %d\n", ret
);
2764 ok(stb2
.base
.pptr
== stb2
.base
.pbase
+ 1, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
+ 1, stb2
.base
.pptr
);
2765 ok(*(stb2
.base
.pptr
-1) == 'c', "expected 'c', got '%c'\n", *(stb2
.base
.pptr
-1));
2766 stb2
.base
.pbase
= stb2
.base
.pptr
+ 3;
2767 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb2
, 'd');
2768 ok(ret
== 1, "expected 1 got %d\n", ret
);
2769 ok(stb2
.base
.pptr
== stb2
.base
.pbase
- 2, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
- 2, stb2
.base
.pptr
);
2770 ok(*(stb2
.base
.pptr
-1) == 'd', "expected 'd', got '%c'\n", *(stb2
.base
.pptr
-1));
2771 stb2
.base
.pbase
= stb2
.base
.pptr
= buffer
+ 32;
2772 stb2
.base
.epptr
= buffer
+ 30;
2773 ret
= (int) call_func2(p_stdiobuf_overflow
, &stb2
, 'd');
2774 ok(ret
== 'd', "expected 'd' got %d\n", ret
);
2775 ok(stb2
.base
.pptr
== stb2
.base
.pbase
, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
, stb2
.base
.pptr
);
2776 stb2
.base
.epptr
= buffer
+ 64;
2777 stb2
.base
.unbuffered
= 1;
2780 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2781 ok(ret
== 'N', "expected 'N' got %d\n", ret
);
2782 stb1
.base
.unbuffered
= 0;
2783 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2784 ok(ret
== 'e', "expected 'e' got %d\n", ret
);
2785 ok(stb1
.base
.eback
== stb1
.base
.base
, "wrong get base, expected %p got %p\n", stb1
.base
.base
, stb1
.base
.eback
);
2786 ok(stb1
.base
.gptr
== stb1
.base
.egptr
- 47, "wrong get pointer, expected %p got %p\n", stb1
.base
.egptr
- 47, stb1
.base
.gptr
);
2787 ok(stb1
.base
.egptr
== stb1
.base
.base
+ 256, "wrong get end, expected %p got %p\n", stb1
.base
.base
+ 256, stb1
.base
.egptr
);
2788 ok(*stb1
.base
.gptr
== 'v', "expected 'v' got '%c'\n", *stb1
.base
.gptr
);
2789 stb1
.base
.pbase
= stb1
.base
.pptr
= stb1
.base
.epptr
= NULL
;
2790 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2791 ok(ret
== 'v', "expected 'v' got %d\n", ret
);
2792 ok(stb1
.base
.gptr
== stb1
.base
.egptr
- 46, "wrong get pointer, expected %p got %p\n", stb1
.base
.egptr
- 46, stb1
.base
.gptr
);
2793 *stb1
.base
.gptr
= -50;
2794 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2795 ok(ret
== 206, "expected 206 got %d\n", ret
);
2796 ok(stb1
.base
.gptr
== stb1
.base
.egptr
- 45, "wrong get pointer, expected %p got %p\n", stb1
.base
.egptr
- 45, stb1
.base
.gptr
);
2797 stb1
.base
.gptr
= stb1
.base
.egptr
;
2798 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2799 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2800 stb1
.base
.unbuffered
= 1;
2801 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb1
);
2802 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2804 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb2
);
2805 ok(ret
== 'a', "expected 'a' got %d\n", ret
);
2806 stb2
.base
.unbuffered
= 0;
2807 stb2
.base
.eback
= stb2
.base
.gptr
= buffer
+ 16;
2808 stb2
.base
.egptr
= buffer
+ 32;
2809 strcpy(buffer
+ 16, "and desert you");
2810 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb2
);
2811 ok(ret
== 'a', "expected 'a' got %d\n", ret
);
2812 ok(stb2
.base
.gptr
== buffer
+ 17, "wrong get pointer, expected %p got %p\n", buffer
+ 17, stb2
.base
.gptr
);
2813 stb2
.base
.eback
= buffer
;
2814 stb2
.base
.gptr
= stb2
.base
.egptr
;
2815 stb2
.base
.pbase
= stb2
.base
.pptr
= stb2
.base
.epptr
= NULL
;
2816 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb2
);
2817 ok(ret
== 'N', "expected 'N' got %d\n", ret
);
2818 ok(stb2
.base
.gptr
== stb2
.base
.egptr
- 22, "wrong get pointer, expected %p got %p\n", stb2
.base
.egptr
- 22, stb2
.base
.gptr
);
2819 ok(ftell(stb2
.file
) == 24, "ftell failed\n");
2820 stb2
.base
.gptr
= stb2
.base
.egptr
;
2821 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb2
);
2822 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2823 stb2
.base
.unbuffered
= 1;
2824 ret
= (int) call_func1(p_stdiobuf_underflow
, &stb2
);
2825 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2828 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2829 ok(ret
== 0, "expected 0 got %d\n", ret
);
2830 stb1
.base
.gptr
= stb1
.base
.eback
;
2831 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2832 ok(ret
== 0, "expected 0 got %d\n", ret
);
2833 stb1
.base
.unbuffered
= 0;
2834 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2835 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2836 ok(stb1
.base
.pbase
== stb1
.base
.base
+ 256, "wrong put base, expected %p got %p\n", stb1
.base
.base
+ 256, stb1
.base
.pbase
);
2837 ok(stb1
.base
.pptr
== stb1
.base
.base
+ 256, "wrong put pointer, expected %p got %p\n", stb1
.base
.base
+ 256, stb1
.base
.pptr
);
2838 ok(stb1
.base
.epptr
== stb1
.base
.base
+ 512, "wrong put end, expected %p got %p\n", stb1
.base
.base
+ 512, stb1
.base
.epptr
);
2839 stb1
.base
.gptr
= stb1
.base
.egptr
;
2840 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2841 ok(ret
== 0, "expected 0 got %d\n", ret
);
2842 stb1
.base
.eback
= stb1
.base
.gptr
= stb1
.base
.egptr
= NULL
;
2843 stb1
.base
.pptr
= stb1
.base
.epptr
;
2844 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2845 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2846 ok(stb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, stb1
.base
.gptr
);
2847 stb1
.base
.pptr
= stb1
.base
.pbase
;
2848 ret
= (int) call_func1(p_stdiobuf_sync
, &stb1
);
2849 ok(ret
== 0, "expected 0 got %d\n", ret
);
2850 ok(stb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, stb1
.base
.gptr
);
2851 stb1
.base
.unbuffered
= 1;
2852 stb2
.base
.unbuffered
= 0;
2853 stb2
.base
.egptr
= stb2
.base
.ebuf
;
2854 ret
= (int) call_func1(p_stdiobuf_sync
, &stb2
);
2855 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2856 ok(stb2
.base
.pbase
== stb2
.base
.base
+ 32, "wrong put base, expected %p got %p\n", stb2
.base
.base
+ 32, stb2
.base
.pbase
);
2857 ok(stb2
.base
.pptr
== stb2
.base
.base
+ 32, "wrong put pointer, expected %p got %p\n", stb2
.base
.base
+ 32, stb2
.base
.pptr
);
2858 ok(stb2
.base
.epptr
== stb2
.base
.base
+ 64, "wrong put end, expected %p got %p\n", stb2
.base
.base
+ 64, stb2
.base
.epptr
);
2859 stb2
.base
.egptr
= stb2
.base
.pbase
;
2860 stb2
.base
.gptr
= stb2
.base
.egptr
- 25;
2861 ret
= (int) call_func1(p_stdiobuf_sync
, &stb2
);
2862 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2863 ret
= (int) call_func3(p_streambuf_xsputn
, &stb2
.base
, "Never gonna make you cry", 24);
2864 ok(ret
== 24, "expected 24 got %d\n", ret
);
2865 ret
= (int) call_func1(p_stdiobuf_sync
, &stb2
);
2866 ok(ret
== 0, "expected 0 got %d\n", ret
);
2867 ok(ftell(stb2
.file
) == 23, "ftell failed\n");
2868 ok(fseek(stb2
.file
, 3, SEEK_SET
) == 0, "fseek failed\n");
2869 stb2
.base
.gptr
= stb2
.base
.egptr
- 3;
2870 strcpy(stb2
.base
.gptr
, "a\nc");
2871 ret
= (int) call_func1(p_stdiobuf_sync
, &stb2
);
2872 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2873 ok(stb2
.base
.gptr
== stb2
.base
.egptr
- 3, "wrong get pointer, expected %p got %p\n", stb2
.base
.egptr
- 3, stb2
.base
.gptr
);
2874 *(stb2
.base
.gptr
+1) = 'b';
2875 ret
= (int) call_func1(p_stdiobuf_sync
, &stb2
);
2876 ok(ret
== 0, "expected 0 got %d\n", ret
);
2877 ok(stb2
.base
.gptr
== stb2
.base
.egptr
, "wrong get pointer, expected %p got %p\n", stb2
.base
.egptr
, stb2
.base
.gptr
);
2878 stb2
.base
.unbuffered
= 1;
2881 ret
= (int) call_func3(p_stdiobuf_setrwbuf
, &stb1
, 100, 60);
2882 ok(ret
== 1, "expected 1 got %d\n", ret
);
2883 ok(stb1
.base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", stb1
.base
.allocated
);
2884 ok(stb1
.base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", stb1
.base
.unbuffered
);
2885 ok(stb1
.base
.ebuf
== stb1
.base
.base
+ 160, "expected %p got %p\n", stb1
.base
.base
+ 160, stb1
.base
.ebuf
);
2886 ok(stb1
.base
.eback
== stb1
.base
.base
, "wrong get base, expected %p got %p\n", stb1
.base
.base
, stb1
.base
.eback
);
2887 ok(stb1
.base
.gptr
== stb1
.base
.base
+ 100, "wrong get pointer, expected %p got %p\n", stb1
.base
.base
+ 100, stb1
.base
.gptr
);
2888 ok(stb1
.base
.egptr
== stb1
.base
.base
+ 100, "wrong get end, expected %p got %p\n", stb1
.base
.base
+ 100, stb1
.base
.egptr
);
2889 ok(stb1
.base
.pbase
== stb1
.base
.base
+ 100, "wrong put base, expected %p got %p\n", stb1
.base
.base
+ 100, stb1
.base
.pbase
);
2890 ok(stb1
.base
.pptr
== stb1
.base
.base
+ 100, "wrong put pointer, expected %p got %p\n", stb1
.base
.base
+ 100, stb1
.base
.pptr
);
2891 ok(stb1
.base
.epptr
== stb1
.base
.base
+ 160, "wrong put end, expected %p got %p\n", stb1
.base
.base
+ 160, stb1
.base
.epptr
);
2892 ret
= (int) call_func3(p_stdiobuf_setrwbuf
, &stb1
, -1, 64);
2893 ok(ret
== 0 || ret
== 1, "expected 0 or 1, got %d\n", ret
);
2894 ret
= (int) call_func3(p_stdiobuf_setrwbuf
, &stb1
, 32, -8);
2895 ok(ret
== 0 || ret
== 1, "expected 0 or 1, got %d\n", ret
);
2896 ret
= (int) call_func3(p_stdiobuf_setrwbuf
, &stb1
, 0, 64);
2897 ok(ret
== 1, "expected 1 got %d\n", ret
);
2898 ok(stb1
.base
.ebuf
== stb1
.base
.base
+ 64, "expected %p got %p\n", stb1
.base
.base
+ 64, stb1
.base
.ebuf
);
2899 ok(stb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, stb1
.base
.eback
);
2900 ok(stb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, stb1
.base
.gptr
);
2901 ok(stb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, stb1
.base
.egptr
);
2902 ok(stb1
.base
.pbase
== stb1
.base
.base
, "wrong put base, expected %p got %p\n", stb1
.base
.base
, stb1
.base
.pbase
);
2903 ok(stb1
.base
.pptr
== stb1
.base
.base
, "wrong put pointer, expected %p got %p\n", stb1
.base
.base
, stb1
.base
.pptr
);
2904 ok(stb1
.base
.epptr
== stb1
.base
.base
+ 64, "wrong put end, expected %p got %p\n", stb1
.base
.base
+ 64, stb1
.base
.epptr
);
2905 ret
= (int) call_func3(p_stdiobuf_setrwbuf
, &stb1
, 0, 0);
2906 ok(ret
== 0, "expected 0 got %d\n", ret
);
2907 ok(stb1
.base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", stb1
.base
.unbuffered
);
2910 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 0, SEEKDIR_beg
, OPENMODE_in
);
2911 ok(ret
== 0, "expected 0 got %d\n", ret
);
2912 stb1
.base
.unbuffered
= 0;
2913 ret
= (int) call_func3(p_streambuf_xsputn
, &stb1
.base
, "Never gonna say goodbye", 22);
2914 ok(ret
== 22, "expected 22 got %d\n", ret
);
2915 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 5, SEEKDIR_beg
, OPENMODE_in
);
2916 ok(ret
== 5, "expected 5 got %d\n", ret
);
2917 ok(stb1
.base
.pptr
== stb1
.base
.pbase
+ 22, "wrong put pointer, expected %p got %p\n", stb1
.base
.pbase
+ 22, stb1
.base
.pptr
);
2918 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 300, SEEKDIR_beg
, OPENMODE_in
);
2919 ok(ret
== 300, "expected 300 got %d\n", ret
);
2920 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, -310, SEEKDIR_cur
, OPENMODE_in
);
2921 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2922 stb1
.base
.eback
= stb1
.base
.base
;
2923 stb1
.base
.gptr
= stb1
.base
.egptr
= stb1
.base
.pbase
= stb1
.base
.base
+ 10;
2924 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, -280, SEEKDIR_cur
, OPENMODE_in
);
2925 ok(ret
== 20, "expected 20 got %d\n", ret
);
2926 stb1
.base
.gptr
= stb1
.base
.eback
;
2927 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 80, SEEKDIR_cur
, OPENMODE_in
);
2928 ok(ret
== 100, "expected 100 got %d\n", ret
);
2929 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 0, SEEKDIR_end
, OPENMODE_in
);
2930 ok(ret
== 49, "expected 49 got %d\n", ret
);
2931 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, 1, SEEKDIR_end
, OPENMODE_in
);
2932 ok(ret
== 50, "expected 50 got %d\n", ret
);
2933 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, -60, SEEKDIR_end
, OPENMODE_in
);
2934 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2935 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb1
, -20, SEEKDIR_end
, OPENMODE_out
);
2936 ok(ret
== 29, "expected 29 got %d\n", ret
);
2937 stb1
.base
.eback
= stb1
.base
.gptr
= stb1
.base
.egptr
= NULL
;
2938 stb1
.base
.pptr
= stb1
.base
.pbase
;
2939 stb1
.base
.unbuffered
= 1;
2940 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, 0, SEEKDIR_beg
, OPENMODE_in
);
2941 ok(ret
== 0, "expected 0 got %d\n", ret
);
2942 stb2
.base
.pptr
+= 10;
2943 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, 20, SEEKDIR_beg
, OPENMODE_in
);
2944 ok(ret
== 20, "expected 20 got %d\n", ret
);
2945 ok(stb2
.base
.pptr
== stb2
.base
.pbase
+ 10, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
+ 10, stb2
.base
.pptr
);
2946 stb2
.base
.unbuffered
= 0;
2947 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, 10, SEEKDIR_cur
, OPENMODE_in
);
2948 ok(ret
== 40, "expected 40 got %d\n", ret
);
2949 ok(stb2
.base
.pptr
== stb2
.base
.pbase
, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
, stb2
.base
.pptr
);
2950 stb2
.base
.gptr
= stb2
.base
.eback
;
2951 stb2
.base
.pptr
+= 5;
2952 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, -50, SEEKDIR_cur
, OPENMODE_in
|OPENMODE_out
);
2953 ok(ret
== EOF
, "expected EOF got %d\n", ret
);
2954 ok(stb2
.base
.pptr
== stb2
.base
.pbase
, "wrong put pointer, expected %p got %p\n", stb2
.base
.pbase
, stb2
.base
.pptr
);
2955 stb2
.base
.pbase
= stb2
.base
.pptr
= stb2
.base
.epptr
= NULL
;
2956 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, 0, SEEKDIR_end
, OPENMODE_in
|OPENMODE_out
);
2957 ok(ret
== 48, "expected 48 got %d\n", ret
);
2958 ok(stb2
.base
.pbase
== stb2
.base
.base
+ 32, "wrong put pointer, expected %p got %p\n", stb2
.base
.base
+ 32, stb2
.base
.pbase
);
2959 ok(stb2
.base
.pptr
== stb2
.base
.base
+ 32, "wrong put pointer, expected %p got %p\n", stb2
.base
.base
+ 32, stb2
.base
.pptr
);
2960 ok(stb2
.base
.epptr
== stb2
.base
.ebuf
, "wrong put pointer, expected %p got %p\n", stb2
.base
.ebuf
, stb2
.base
.epptr
);
2961 ret
= (int) call_func4(p_stdiobuf_seekoff
, &stb2
, -28, SEEKDIR_end
, -1);
2962 ok(ret
== 20, "expected 20 got %d\n", ret
);
2963 stb2
.base
.gptr
= stb2
.base
.egptr
;
2964 stb2
.base
.unbuffered
= 1;
2967 last
= fgetc(stb1
.file
);
2968 ok(last
== 'r', "expected 'r' got %d\n", last
);
2969 ok(ftell(stb1
.file
) == 30, "ftell failed\n");
2970 ret
= (int) call_func2(p_stdiobuf_pbackfail
, &stb1
, 'i');
2971 ok(ret
== 'i', "expected 'i' got %d\n", ret
);
2972 ok(ftell(stb1
.file
) == 29, "ftell failed\n");
2973 last
= fgetc(stb1
.file
);
2974 ok(last
== 'r', "expected 'r' got %d\n", last
);
2975 ok(ftell(stb1
.file
) == 30, "ftell failed\n");
2976 stb1
.base
.eback
= stb1
.base
.base
;
2977 stb1
.base
.gptr
= stb1
.base
.egptr
= stb1
.base
.base
+ 9;
2978 strcpy(stb1
.base
.eback
, "pbackfail");
2979 ret
= (int) call_func2(p_stdiobuf_pbackfail
, &stb1
, 'j');
2980 ok(ret
== 'j', "expected 'j' got %d\n", ret
);
2981 ok(stb1
.base
.gptr
== stb1
.base
.base
+ 8, "wrong get pointer, expected %p got %p\n", stb1
.base
.base
+ 8, stb1
.base
.gptr
);
2982 ok(strncmp(stb1
.base
.eback
, "pbackfaij", 9) == 0, "strncmp failed\n");
2983 ok(ftell(stb1
.file
) == 30, "ftell failed\n");
2984 stb1
.base
.gptr
= stb1
.base
.eback
;
2985 ret
= (int) call_func2(p_stdiobuf_pbackfail
, &stb1
, 'k');
2986 ok(ret
== 'k', "expected 'k' got %d\n", ret
);
2987 ok(stb1
.base
.gptr
== stb1
.base
.base
, "wrong get pointer, expected %p got %p\n", stb1
.base
.base
, stb1
.base
.gptr
);
2988 ok(strncmp(stb1
.base
.eback
, "pbackfaij", 9) == 0, "strncmp failed\n");
2989 ok(ftell(stb1
.file
) == 29, "ftell failed\n");
2990 stb1
.base
.unbuffered
= 0;
2991 ret
= (int) call_func2(p_stdiobuf_pbackfail
, &stb1
, 'l');
2992 ok(ret
== 'l', "expected 'l' got %d\n", ret
);
2993 ok(strncmp(stb1
.base
.eback
, "lpbackfai", 9) == 0, "strncmp failed\n");
2994 ok(ftell(stb1
.file
) == 28, "ftell failed\n");
2995 stb1
.base
.egptr
= NULL
;
2996 ret
= (int) call_func2(p_stdiobuf_pbackfail
, &stb1
, 'm');
2997 ok(ret
== 'm', "expected 'm' got %d\n", ret
);
2998 ok(strncmp(stb1
.base
.eback
, "lpbackfai", 9) == 0, "strncmp failed\n");
2999 ok(ftell(stb1
.file
) == 27, "ftell failed\n");
3000 stb1
.base
.unbuffered
= 1;
3002 call_func1(p_stdiobuf_dtor
, &stb1
);
3003 call_func1(p_stdiobuf_dtor
, &stb2
);
3006 ok(_unlink(filename1
) == 0, "Couldn't unlink file named '%s'\n", filename1
);
3007 ok(_unlink(filename2
) == 0, "Couldn't unlink file named '%s'\n", filename2
);
3017 static DWORD WINAPI
lock_ios(void *arg
)
3019 struct ios_lock_arg
*lock_arg
= arg
;
3020 p_ios_lock(lock_arg
->ios_obj
);
3021 p_ios_lockbuf(lock_arg
->ios_obj
);
3023 SetEvent(lock_arg
->lock
);
3024 WaitForSingleObject(lock_arg
->release
[0], INFINITE
);
3026 WaitForSingleObject(lock_arg
->release
[1], INFINITE
);
3027 p_ios_unlockbuf(lock_arg
->ios_obj
);
3028 WaitForSingleObject(lock_arg
->release
[2], INFINITE
);
3029 p_ios_unlock(lock_arg
->ios_obj
);
3033 static void test_ios(void)
3035 ios ios_obj
, ios_obj2
;
3037 struct ios_lock_arg lock_arg
;
3040 LONG
*pret
, expected
, ret
;
3044 memset(&ios_obj
, 0xab, sizeof(ios
));
3045 memset(&ios_obj2
, 0xab, sizeof(ios
));
3046 psb
= p_operator_new(sizeof(streambuf
));
3047 ok(psb
!= NULL
, "failed to allocate streambuf object\n");
3048 call_func1(p_streambuf_ctor
, psb
);
3050 /* constructor/destructor */
3051 ok(*p_ios_fLockcInit
== 4, "expected 4 got %d\n", *p_ios_fLockcInit
);
3052 call_func2(p_ios_sb_ctor
, &ios_obj
, NULL
);
3053 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3054 ok(ios_obj
.state
== IOSTATE_badbit
, "expected %x got %x\n", IOSTATE_badbit
, ios_obj
.state
);
3055 ok(ios_obj
.special
[0] == 0, "expected 0 got %d\n", ios_obj
.special
[0]);
3056 ok(ios_obj
.special
[1] == 0, "expected 0 got %d\n", ios_obj
.special
[1]);
3057 ok(ios_obj
.delbuf
== 0, "expected 0 got %d\n", ios_obj
.delbuf
);
3058 ok(ios_obj
.tie
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.tie
);
3059 ok(ios_obj
.flags
== 0, "expected 0 got %x\n", ios_obj
.flags
);
3060 ok(ios_obj
.precision
== 6, "expected 6 got %d\n", ios_obj
.precision
);
3061 ok(ios_obj
.fill
== ' ', "expected ' ' got %d\n", ios_obj
.fill
);
3062 ok(ios_obj
.width
== 0, "expected 0 got %d\n", ios_obj
.width
);
3063 ok(ios_obj
.do_lock
== -1, "expected -1 got %d\n", ios_obj
.do_lock
);
3064 ok(ios_obj
.lock
.LockCount
== -1, "expected -1 got %d\n", ios_obj
.lock
.LockCount
);
3065 ok(*p_ios_fLockcInit
== 5, "expected 5 got %d\n", *p_ios_fLockcInit
);
3066 ios_obj
.state
= 0x8;
3067 call_func1(p_ios_dtor
, &ios_obj
);
3068 ok(ios_obj
.state
== IOSTATE_badbit
, "expected %x got %x\n", IOSTATE_badbit
, ios_obj
.state
);
3069 ok(*p_ios_fLockcInit
== 4, "expected 4 got %d\n", *p_ios_fLockcInit
);
3070 memset(&ios_obj
, 0xab, sizeof(ios
));
3071 call_func2(p_ios_sb_ctor
, &ios_obj
, psb
);
3072 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
3073 ok(ios_obj
.state
== IOSTATE_goodbit
, "expected %x got %x\n", IOSTATE_goodbit
, ios_obj
.state
);
3074 ok(ios_obj
.special
[0] == 0, "expected 0 got %d\n", ios_obj
.special
[0]);
3075 ok(ios_obj
.special
[1] == 0, "expected 0 got %d\n", ios_obj
.special
[1]);
3076 ok(ios_obj
.delbuf
== 0, "expected 0 got %d\n", ios_obj
.delbuf
);
3077 ok(ios_obj
.tie
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.tie
);
3078 ok(ios_obj
.flags
== 0, "expected 0 got %x\n", ios_obj
.flags
);
3079 ok(ios_obj
.precision
== 6, "expected 6 got %d\n", ios_obj
.precision
);
3080 ok(ios_obj
.fill
== ' ', "expected ' ' got %d\n", ios_obj
.fill
);
3081 ok(ios_obj
.width
== 0, "expected 0 got %d\n", ios_obj
.width
);
3082 ok(ios_obj
.do_lock
== -1, "expected -1 got %d\n", ios_obj
.do_lock
);
3083 ok(*p_ios_fLockcInit
== 5, "expected 5 got %d\n", *p_ios_fLockcInit
);
3084 ios_obj
.state
= 0x8;
3085 call_func1(p_ios_dtor
, &ios_obj
);
3086 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3087 ok(ios_obj
.state
== IOSTATE_badbit
, "expected %x got %x\n", IOSTATE_badbit
, ios_obj
.state
);
3088 ok(*p_ios_fLockcInit
== 4, "expected 4 got %d\n", *p_ios_fLockcInit
);
3089 memset(&ios_obj
, 0xab, sizeof(ios
));
3090 call_func1(p_ios_ctor
, &ios_obj
);
3091 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3092 ok(ios_obj
.state
== IOSTATE_badbit
, "expected %x got %x\n", IOSTATE_badbit
, ios_obj
.state
);
3093 ok(ios_obj
.special
[0] == 0, "expected 0 got %d\n", ios_obj
.special
[0]);
3094 ok(ios_obj
.special
[1] == 0, "expected 0 got %d\n", ios_obj
.special
[1]);
3095 ok(ios_obj
.delbuf
== 0, "expected 0 got %d\n", ios_obj
.delbuf
);
3096 ok(ios_obj
.tie
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.tie
);
3097 ok(ios_obj
.flags
== 0, "expected 0 got %x\n", ios_obj
.flags
);
3098 ok(ios_obj
.precision
== 6, "expected 6 got %d\n", ios_obj
.precision
);
3099 ok(ios_obj
.fill
== ' ', "expected ' ' got %d\n", ios_obj
.fill
);
3100 ok(ios_obj
.width
== 0, "expected 0 got %d\n", ios_obj
.width
);
3101 ok(ios_obj
.do_lock
== -1, "expected -1 got %d\n", ios_obj
.do_lock
);
3102 ok(*p_ios_fLockcInit
== 5, "expected 5 got %d\n", *p_ios_fLockcInit
);
3105 ios_obj
.state
|= 0x8;
3106 call_func2(p_ios_init
, &ios_obj
, psb
);
3107 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
3108 ok(ios_obj
.state
== 0x8, "expected %x got %x\n", 0x8, ios_obj
.state
);
3109 call_func2(p_ios_init
, &ios_obj
, NULL
);
3110 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3111 ok(ios_obj
.state
== (0x8|IOSTATE_badbit
), "expected %x got %x\n", (0x8|IOSTATE_badbit
), ios_obj
.state
);
3114 call_func2(p_ios_init
, &ios_obj
, psb
);
3115 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
3116 ok(ios_obj
.state
== 0x8, "expected %x got %x\n", 0x8, ios_obj
.state
);
3117 call_func1(p_ios_dtor
, &ios_obj
);
3119 /* copy constructor */
3120 memset(&ios_obj
, 0xcd, sizeof(ios
));
3121 call_func2(p_ios_copy_ctor
, &ios_obj
, &ios_obj2
);
3122 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3123 ok(ios_obj
.state
== (ios_obj2
.state
|IOSTATE_badbit
), "expected %x got %x\n",
3124 ios_obj2
.state
|IOSTATE_badbit
, ios_obj
.state
);
3125 ok(ios_obj
.delbuf
== 0, "expected 0 got %d\n", ios_obj
.delbuf
);
3126 ok(ios_obj
.tie
== ios_obj2
.tie
, "expected %p got %p\n", ios_obj2
.tie
, ios_obj
.tie
);
3127 ok(ios_obj
.flags
== ios_obj2
.flags
, "expected %x got %x\n", ios_obj2
.flags
, ios_obj
.flags
);
3128 ok(ios_obj
.precision
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.precision
);
3129 ok(ios_obj
.fill
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.fill
);
3130 ok(ios_obj
.width
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.width
);
3131 ok(ios_obj
.do_lock
== -1, "expected -1 got %d\n", ios_obj
.do_lock
);
3132 ok(*p_ios_fLockcInit
== 5, "expected 5 got %d\n", *p_ios_fLockcInit
);
3135 ios_obj
.state
= 0xcdcdcdcd;
3136 ios_obj
.delbuf
= 0xcdcdcdcd;
3137 ios_obj
.tie
= (ostream
*) 0xcdcdcdcd;
3138 ios_obj
.flags
= 0xcdcdcdcd;
3139 ios_obj
.precision
= 0xcdcdcdcd;
3140 ios_obj
.fill
= 0xcd;
3141 ios_obj
.width
= 0xcdcdcdcd;
3142 ios_obj
.do_lock
= 0xcdcdcdcd;
3143 call_func2(p_ios_assign
, &ios_obj
, &ios_obj2
);
3144 ok(ios_obj
.sb
== NULL
, "expected %p got %p\n", NULL
, ios_obj
.sb
);
3145 ok(ios_obj
.state
== (ios_obj2
.state
|IOSTATE_badbit
), "expected %x got %x\n",
3146 ios_obj2
.state
|IOSTATE_badbit
, ios_obj
.state
);
3147 ok(ios_obj
.delbuf
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios_obj
.delbuf
);
3148 ok(ios_obj
.tie
== ios_obj2
.tie
, "expected %p got %p\n", ios_obj2
.tie
, ios_obj
.tie
);
3149 ok(ios_obj
.flags
== ios_obj2
.flags
, "expected %x got %x\n", ios_obj2
.flags
, ios_obj
.flags
);
3150 ok(ios_obj
.precision
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.precision
);
3151 ok(ios_obj
.fill
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.fill
);
3152 ok(ios_obj
.width
== (char)0xab, "expected %d got %d\n", (char)0xab, ios_obj
.width
);
3153 ok(ios_obj
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios_obj
.do_lock
);
3157 ios_obj
.do_lock
= 1;
3158 ios_obj
.sb
->do_lock
= 0;
3159 p_ios_clrlock(&ios_obj
);
3160 ok(ios_obj
.do_lock
== 1, "expected 1 got %d\n", ios_obj
.do_lock
);
3161 ok(ios_obj
.sb
->do_lock
== 1, "expected 1 got %d\n", ios_obj
.sb
->do_lock
);
3162 ios_obj
.do_lock
= 0;
3163 p_ios_clrlock(&ios_obj
);
3164 ok(ios_obj
.do_lock
== 1, "expected 1 got %d\n", ios_obj
.do_lock
);
3165 ok(ios_obj
.sb
->do_lock
== 1, "expected 1 got %d\n", ios_obj
.sb
->do_lock
);
3166 p_ios_setlock(&ios_obj
);
3167 ok(ios_obj
.do_lock
== 0, "expected 0 got %d\n", ios_obj
.do_lock
);
3168 ok(ios_obj
.sb
->do_lock
== 0, "expected 0 got %d\n", ios_obj
.sb
->do_lock
);
3169 ios_obj
.do_lock
= -1;
3170 p_ios_setlock(&ios_obj
);
3171 ok(ios_obj
.do_lock
== -2, "expected -2 got %d\n", ios_obj
.do_lock
);
3172 ok(ios_obj
.sb
->do_lock
== -1, "expected -1 got %d\n", ios_obj
.sb
->do_lock
);
3174 lock_arg
.ios_obj
= &ios_obj
;
3175 lock_arg
.lock
= CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
3176 ok(lock_arg
.lock
!= NULL
, "CreateEventW failed\n");
3177 lock_arg
.release
[0] = CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
3178 ok(lock_arg
.release
[0] != NULL
, "CreateEventW failed\n");
3179 lock_arg
.release
[1] = CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
3180 ok(lock_arg
.release
[1] != NULL
, "CreateEventW failed\n");
3181 lock_arg
.release
[2] = CreateEventW(NULL
, FALSE
, FALSE
, NULL
);
3182 ok(lock_arg
.release
[2] != NULL
, "CreateEventW failed\n");
3183 thread
= CreateThread(NULL
, 0, lock_ios
, (void*)&lock_arg
, 0, NULL
);
3184 ok(thread
!= NULL
, "CreateThread failed\n");
3185 WaitForSingleObject(lock_arg
.lock
, INFINITE
);
3187 locked
= TryEnterCriticalSection(&ios_obj
.lock
);
3188 ok(locked
== 0, "the ios object was not locked before\n");
3189 locked
= TryEnterCriticalSection(&ios_obj
.sb
->lock
);
3190 ok(locked
== 0, "the streambuf was not locked before\n");
3191 locked
= TryEnterCriticalSection(p_ios_static_lock
);
3192 ok(locked
== 0, "the static critical section was not locked before\n");
3195 ios_obj
.flags
= 0x8000;
3196 ret
= (LONG
) call_func1(p_ios_flags_get
, &ios_obj
);
3197 ok(ret
== 0x8000, "expected %x got %x\n", 0x8000, ret
);
3198 ret
= (LONG
) call_func2(p_ios_flags_set
, &ios_obj
, 0x444);
3199 ok(ret
== 0x8000, "expected %x got %x\n", 0x8000, ret
);
3200 ok(ios_obj
.flags
== 0x444, "expected %x got %x\n", 0x444, ios_obj
.flags
);
3201 ret
= (LONG
) call_func2(p_ios_flags_set
, &ios_obj
, 0);
3202 ok(ret
== 0x444, "expected %x got %x\n", 0x444, ret
);
3203 ok(ios_obj
.flags
== 0, "expected %x got %x\n", 0, ios_obj
.flags
);
3206 ios_obj
.do_lock
= 0;
3207 ios_obj
.flags
= 0x8400;
3208 ret
= (LONG
) call_func2(p_ios_setf
, &ios_obj
, 0x444);
3209 ok(ret
== 0x8400, "expected %x got %x\n", 0x8400, ret
);
3210 ok(ios_obj
.flags
== 0x8444, "expected %x got %x\n", 0x8444, ios_obj
.flags
);
3211 ret
= (LONG
) call_func3(p_ios_setf_mask
, &ios_obj
, 0x111, 0);
3212 ok(ret
== 0x8444, "expected %x got %x\n", 0x8444, ret
);
3213 ok(ios_obj
.flags
== 0x8444, "expected %x got %x\n", 0x8444, ios_obj
.flags
);
3214 ret
= (LONG
) call_func3(p_ios_setf_mask
, &ios_obj
, 0x111, 0x105);
3215 ok(ret
== 0x8444, "expected %x got %x\n", 0x8444, ret
);
3216 ok(ios_obj
.flags
== 0x8541, "expected %x got %x\n", 0x8541, ios_obj
.flags
);
3219 ret
= (LONG
) call_func2(p_ios_unsetf
, &ios_obj
, 0x1111);
3220 ok(ret
== 0x8541, "expected %x got %x\n", 0x8541, ret
);
3221 ok(ios_obj
.flags
== 0x8440, "expected %x got %x\n", 0x8440, ios_obj
.flags
);
3222 ret
= (LONG
) call_func2(p_ios_unsetf
, &ios_obj
, 0x8008);
3223 ok(ret
== 0x8440, "expected %x got %x\n", 0x8440, ret
);
3224 ok(ios_obj
.flags
== 0x440, "expected %x got %x\n", 0x440, ios_obj
.flags
);
3225 ios_obj
.do_lock
= -1;
3228 ios_obj
.state
= 0x8;
3229 ret
= (LONG
) call_func1(p_ios_good
, &ios_obj
);
3230 ok(ret
== 0, "expected 0 got %d\n", ret
);
3231 ios_obj
.state
= IOSTATE_goodbit
;
3232 ret
= (LONG
) call_func1(p_ios_good
, &ios_obj
);
3233 ok(ret
== 1, "expected 1 got %d\n", ret
);
3234 ret
= (LONG
) call_func1(p_ios_bad
, &ios_obj
);
3235 ok(ret
== 0, "expected 0 got %d\n", ret
);
3236 ios_obj
.state
= (IOSTATE_eofbit
|IOSTATE_badbit
);
3237 ret
= (LONG
) call_func1(p_ios_bad
, &ios_obj
);
3238 ok(ret
== IOSTATE_badbit
, "expected 4 got %d\n", ret
);
3239 ret
= (LONG
) call_func1(p_ios_eof
, &ios_obj
);
3240 ok(ret
== IOSTATE_eofbit
, "expected 1 got %d\n", ret
);
3241 ios_obj
.state
= 0x8;
3242 ret
= (LONG
) call_func1(p_ios_eof
, &ios_obj
);
3243 ok(ret
== 0, "expected 0 got %d\n", ret
);
3244 ret
= (LONG
) call_func1(p_ios_fail
, &ios_obj
);
3245 ok(ret
== 0, "expected 0 got %d\n", ret
);
3246 ios_obj
.state
= IOSTATE_badbit
;
3247 ret
= (LONG
) call_func1(p_ios_fail
, &ios_obj
);
3248 ok(ret
== IOSTATE_badbit
, "expected 4 got %d\n", ret
);
3249 ios_obj
.state
= (IOSTATE_eofbit
|IOSTATE_failbit
);
3250 ret
= (LONG
) call_func1(p_ios_fail
, &ios_obj
);
3251 ok(ret
== IOSTATE_failbit
, "expected 2 got %d\n", ret
);
3252 ios_obj
.state
= (IOSTATE_eofbit
|IOSTATE_failbit
|IOSTATE_badbit
);
3253 ret
= (LONG
) call_func1(p_ios_fail
, &ios_obj
);
3254 ok(ret
== (IOSTATE_failbit
|IOSTATE_badbit
), "expected 6 got %d\n", ret
);
3255 ios_obj
.do_lock
= 0;
3256 call_func2(p_ios_clear
, &ios_obj
, 0);
3257 ok(ios_obj
.state
== IOSTATE_goodbit
, "expected 0 got %d\n", ios_obj
.state
);
3258 call_func2(p_ios_clear
, &ios_obj
, 0x8|IOSTATE_eofbit
);
3259 ok(ios_obj
.state
== (0x8|IOSTATE_eofbit
), "expected 9 got %d\n", ios_obj
.state
);
3260 ios_obj
.do_lock
= -1;
3262 SetEvent(lock_arg
.release
[0]);
3266 for (i
= 0; i
< 20; i
++) {
3267 ret
= p_ios_bitalloc();
3268 ok(ret
== expected
, "expected %x got %x\n", expected
, ret
);
3269 ok(*p_ios_maxbit
== expected
, "expected %x got %x\n", expected
, *p_ios_maxbit
);
3273 /* xalloc/pword/iword */
3274 ok(*p_ios_curindex
== -1, "expected -1 got %d\n", *p_ios_curindex
);
3276 for (i
= 0; i
< 8; i
++) {
3277 ret
= p_ios_xalloc();
3278 ok(ret
== expected
, "expected %d got %d\n", expected
, ret
);
3279 ok(*p_ios_curindex
== expected
, "expected %d got %d\n", expected
, *p_ios_curindex
);
3280 pret
= call_func2(p_ios_iword
, &ios_obj
, ret
);
3281 ok(pret
== &p_ios_statebuf
[ret
], "expected %p got %p\n", &p_ios_statebuf
[ret
], pret
);
3282 ok(*pret
== 0, "expected 0 got %d\n", *pret
);
3283 pret2
= call_func2(p_ios_pword
, &ios_obj
, ret
);
3284 ok(pret2
== (void**)&p_ios_statebuf
[ret
], "expected %p got %p\n", (void**)&p_ios_statebuf
[ret
], pret2
);
3287 ret
= p_ios_xalloc();
3288 ok(ret
== -1, "expected -1 got %d\n", ret
);
3289 ok(*p_ios_curindex
== 7, "expected 7 got %d\n", *p_ios_curindex
);
3291 SetEvent(lock_arg
.release
[1]);
3292 SetEvent(lock_arg
.release
[2]);
3293 WaitForSingleObject(thread
, INFINITE
);
3296 call_func1(p_ios_dtor
, &ios_obj
);
3297 ok(ios_obj
.state
== IOSTATE_badbit
, "expected %x got %x\n", IOSTATE_badbit
, ios_obj
.state
);
3298 ok(*p_ios_fLockcInit
== 4, "expected 4 got %d\n", *p_ios_fLockcInit
);
3299 CloseHandle(lock_arg
.lock
);
3300 CloseHandle(lock_arg
.release
[0]);
3301 CloseHandle(lock_arg
.release
[1]);
3302 CloseHandle(lock_arg
.release
[2]);
3303 CloseHandle(thread
);
3306 static void test_ostream(void) {
3307 ostream os1
, os2
, *pos
;
3308 filebuf fb1
, fb2
, *pfb
;
3309 const char filename1
[] = "test1";
3310 const char filename2
[] = "test2";
3313 memset(&os1
, 0xab, sizeof(ostream
));
3314 memset(&os2
, 0xab, sizeof(ostream
));
3315 memset(&fb1
, 0xab, sizeof(filebuf
));
3316 memset(&fb2
, 0xab, sizeof(filebuf
));
3318 /* constructors/destructors */
3319 pos
= call_func2(p_ostream_ctor
, &os1
, TRUE
);
3320 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3321 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
3322 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
3323 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
3324 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3325 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
3326 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
3327 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
3328 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
3329 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3330 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
3331 call_func1(p_ostream_vbase_dtor
, &os1
);
3332 memset(&os1
, 0xab, sizeof(ostream
));
3333 pos
= call_func3(p_ostream_sb_ctor
, &os1
, &fb1
.base
, TRUE
);
3334 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3335 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
3336 ok(os1
.base_ios
.sb
== &fb1
.base
, "expected %p got %p\n", &fb1
.base
, os1
.base_ios
.sb
);
3337 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3338 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3339 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
3340 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
3341 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
3342 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
3343 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3344 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
3345 ok(fb1
.base
.allocated
== 0xabababab, "expected %d got %d\n", 0xabababab, fb1
.base
.allocated
);
3346 call_func1(p_ostream_vbase_dtor
, &os1
);
3347 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
3348 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
3349 memset(&os1
.base_ios
, 0xab, sizeof(ios
));
3350 os1
.unknown
= 0xabababab;
3351 os1
.base_ios
.state
= 0xabababab | IOSTATE_badbit
;
3352 pos
= call_func2(p_ostream_ctor
, &os1
, FALSE
);
3353 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3354 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
3355 ok(os1
.base_ios
.sb
== os2
.base_ios
.sb
, "expected %p got %p\n", os2
.base_ios
.sb
, os1
.base_ios
.sb
);
3356 ok(os1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
3357 0xabababab|IOSTATE_badbit
, os1
.base_ios
.state
);
3358 ok(os1
.base_ios
.delbuf
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.delbuf
);
3359 ok(os1
.base_ios
.tie
== os2
.base_ios
.tie
, "expected %p got %p\n", os2
.base_ios
.tie
, os1
.base_ios
.tie
);
3360 ok(os1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os1
.base_ios
.flags
);
3361 ok(os1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.precision
);
3362 ok(os1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os1
.base_ios
.fill
);
3363 ok(os1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.width
);
3364 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
3365 call_func1(p_ostream_dtor
, &os1
.base_ios
);
3366 os1
.unknown
= 0xabababab;
3367 os1
.base_ios
.delbuf
= 0;
3368 call_func1(p_filebuf_ctor
, &fb1
);
3369 pfb
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_out
, filebuf_openprot
);
3370 ok(pfb
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pfb
);
3371 ok(fb1
.base
.allocated
== 1, "expected %d got %d\n", 1, fb1
.base
.allocated
);
3372 pos
= call_func3(p_ostream_sb_ctor
, &os1
, &fb1
.base
, FALSE
);
3373 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3374 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
3375 ok(os1
.base_ios
.sb
== &fb1
.base
, "expected %p got %p\n", &fb1
.base
, os1
.base_ios
.sb
);
3376 ok(os1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.state
);
3377 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3378 ok(os1
.base_ios
.tie
== os2
.base_ios
.tie
, "expected %p got %p\n", os2
.base_ios
.tie
, os1
.base_ios
.tie
);
3379 ok(os1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os1
.base_ios
.flags
);
3380 ok(os1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.precision
);
3381 ok(os1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os1
.base_ios
.fill
);
3382 ok(os1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.width
);
3383 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
3384 call_func1(p_ostream_dtor
, &os1
.base_ios
);
3385 memset(&os1
, 0xab, sizeof(ostream
));
3386 pos
= call_func3(p_ostream_sb_ctor
, &os1
, NULL
, TRUE
);
3387 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3388 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
3389 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
3390 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
3391 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3392 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
3393 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
3394 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
3395 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
3396 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3397 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
3398 call_func1(p_ostream_vbase_dtor
, &os1
);
3399 memset(&os1
.base_ios
, 0xcd, sizeof(ios
));
3400 os1
.unknown
= 0xcdcdcdcd;
3401 pos
= call_func3(p_ostream_copy_ctor
, &os2
, &os1
, TRUE
);
3402 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
3403 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
3404 ok(os2
.base_ios
.sb
== os1
.base_ios
.sb
, "expected %p got %p\n", os1
.base_ios
.sb
, os2
.base_ios
.sb
);
3405 ok(os2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os2
.base_ios
.state
);
3406 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
3407 ok(os2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.tie
);
3408 ok(os2
.base_ios
.flags
== 0, "expected 0 got %x\n", os2
.base_ios
.flags
);
3409 ok(os2
.base_ios
.precision
== 6, "expected 6 got %d\n", os2
.base_ios
.precision
);
3410 ok(os2
.base_ios
.fill
== ' ', "expected 32 got %d\n", os2
.base_ios
.fill
);
3411 ok(os2
.base_ios
.width
== 0, "expected 0 got %d\n", os2
.base_ios
.width
);
3412 ok(os2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os2
.base_ios
.do_lock
);
3413 call_func1(p_ostream_vbase_dtor
, &os2
);
3414 memset(&os2
.base_ios
, 0xab, sizeof(ios
));
3415 os2
.unknown
= 0xabababab;
3416 os2
.base_ios
.state
= 0xabababab | IOSTATE_badbit
;
3417 os2
.base_ios
.delbuf
= 0;
3418 os2
.base_ios
.tie
= &os2
;
3419 pos
= call_func3(p_ostream_copy_ctor
, &os2
, &os1
, FALSE
);
3420 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
3421 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
3422 ok(os2
.base_ios
.sb
== os1
.base_ios
.sb
, "expected %p got %p\n", os1
.base_ios
.sb
, os2
.base_ios
.sb
);
3423 ok(os2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.state
);
3424 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
3425 ok(os2
.base_ios
.tie
== &os2
, "expected %p got %p\n", &os2
, os2
.base_ios
.tie
);
3426 ok(os2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os2
.base_ios
.flags
);
3427 ok(os2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.precision
);
3428 ok(os2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os2
.base_ios
.fill
);
3429 ok(os2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.width
);
3430 ok(os2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.do_lock
);
3431 call_func1(p_ostream_dtor
, &os2
.base_ios
);
3432 os1
.base_ios
.sb
= NULL
;
3433 pos
= call_func3(p_ostream_copy_ctor
, &os2
, &os1
, TRUE
);
3434 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
3435 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
3436 ok(os2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.sb
);
3437 ok(os2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os2
.base_ios
.state
);
3438 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
3439 ok(os2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.tie
);
3440 ok(os2
.base_ios
.flags
== 0, "expected 0 got %x\n", os2
.base_ios
.flags
);
3441 ok(os2
.base_ios
.precision
== 6, "expected 6 got %d\n", os2
.base_ios
.precision
);
3442 ok(os2
.base_ios
.fill
== ' ', "expected 32 got %d\n", os2
.base_ios
.fill
);
3443 ok(os2
.base_ios
.width
== 0, "expected 0 got %d\n", os2
.base_ios
.width
);
3444 ok(os2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os2
.base_ios
.do_lock
);
3447 pos
= call_func2(p_ostream_ctor
, &os1
, TRUE
);
3448 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3449 os1
.unknown
= 0xabababab;
3450 os1
.base_ios
.state
= 0xabababab;
3451 os1
.base_ios
.special
[0] = 0xabababab;
3452 os1
.base_ios
.delbuf
= 0xabababab;
3453 os1
.base_ios
.tie
= (ostream
*) 0xabababab;
3454 os1
.base_ios
.flags
= 0xabababab;
3455 os1
.base_ios
.precision
= 0xabababab;
3456 os1
.base_ios
.width
= 0xabababab;
3457 os1
.base_ios
.do_lock
= 0xabababab;
3458 pos
= call_func2(p_ostream_assign_sb
, &os1
, &fb1
.base
);
3459 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3460 ok(os1
.unknown
== 0xabababab, "expected 0 got %d\n", os1
.unknown
);
3461 ok(os1
.base_ios
.sb
== &fb1
.base
, "expected %p got %p\n", &fb1
.base
, os1
.base_ios
.sb
);
3462 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3463 ok(os1
.base_ios
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.fill
);
3464 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3465 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
3466 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
3467 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
3468 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3469 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
3470 os1
.base_ios
.state
= 0x8000;
3471 pos
= call_func2(p_ostream_assign_sb
, &os1
, NULL
);
3472 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3473 ok(os1
.unknown
== 0xabababab, "expected 0 got %d\n", os1
.unknown
);
3474 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
3475 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
3476 ok(os1
.base_ios
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.fill
);
3477 ok(os1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os1
.base_ios
.delbuf
);
3478 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
3479 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
3480 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
3481 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3482 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
3483 os2
.unknown
= 0xcdcdcdcd;
3484 os2
.base_ios
.state
= 0xcdcdcdcd;
3485 os2
.base_ios
.special
[0] = 0xcdcdcdcd;
3486 os2
.base_ios
.delbuf
= 0xcdcdcdcd;
3487 os2
.base_ios
.tie
= (ostream
*) 0xcdcdcdcd;
3488 os2
.base_ios
.flags
= 0xcdcdcdcd;
3489 os2
.base_ios
.precision
= 0xcdcdcdcd;
3490 os2
.base_ios
.width
= 0xcdcdcdcd;
3491 os2
.base_ios
.do_lock
= 0xcdcdcdcd;
3492 pos
= call_func2(p_ostream_assign
, &os2
, &os1
);
3493 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
3494 ok(os2
.unknown
== 0xcdcdcdcd, "expected 0 got %d\n", os2
.unknown
);
3495 ok(os2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.sb
);
3496 ok(os2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os2
.base_ios
.state
);
3497 ok(os2
.base_ios
.special
[0] == 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, os2
.base_ios
.fill
);
3498 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
3499 ok(os2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.tie
);
3500 ok(os2
.base_ios
.flags
== 0, "expected 0 got %x\n", os2
.base_ios
.flags
);
3501 ok(os2
.base_ios
.precision
== 6, "expected 6 got %d\n", os2
.base_ios
.precision
);
3502 ok(os2
.base_ios
.width
== 0, "expected 0 got %d\n", os2
.base_ios
.width
);
3503 ok(os2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, os2
.base_ios
.do_lock
);
3506 if (0) /* crashes on native */
3507 pos
= call_func1(p_ostream_flush
, &os1
);
3508 os1
.base_ios
.sb
= &fb2
.base
;
3509 call_func1(p_filebuf_ctor
, &fb2
);
3510 pos
= call_func1(p_ostream_flush
, &os1
);
3511 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3512 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3513 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3514 os1
.base_ios
.sb
= &fb1
.base
;
3515 os1
.base_ios
.state
= IOSTATE_eofbit
;
3516 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "Never gonna tell a lie", 22);
3517 ok(ret
== 22, "expected 22 got %d\n", ret
);
3518 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3519 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 22, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 22, fb1
.base
.pptr
);
3520 pos
= call_func1(p_ostream_flush
, &os1
);
3521 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3522 ok(os1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, os1
.base_ios
.state
);
3523 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3524 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3525 os1
.base_ios
.tie
= &os2
;
3526 os2
.base_ios
.sb
= &fb2
.base
;
3527 os2
.base_ios
.state
= IOSTATE_goodbit
;
3528 pfb
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_out
, filebuf_openprot
);
3529 ok(pfb
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pfb
);
3530 ret
= (int) call_func3(p_streambuf_xsputn
, &fb2
.base
, "and hurt you", 12);
3531 ok(ret
== 12, "expected 12 got %d\n", ret
);
3532 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
3533 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 12, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 12, fb2
.base
.pptr
);
3534 pos
= call_func1(p_ostream_flush
, &os1
);
3535 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3536 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
3537 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 12, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 12, fb2
.base
.pptr
);
3540 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3541 ok(ret
== 0, "expected 0 got %d\n", ret
);
3542 ok(os1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
3543 IOSTATE_eofbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3544 os1
.base_ios
.state
= IOSTATE_badbit
;
3545 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3546 ok(ret
== 0, "expected 0 got %d\n", ret
);
3547 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3548 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3549 os1
.base_ios
.sb
= &fb1
.base
;
3550 os1
.base_ios
.state
= IOSTATE_badbit
;
3551 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3552 ok(ret
== 0, "expected 0 got %d\n", ret
);
3553 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3554 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3555 os1
.base_ios
.state
= IOSTATE_failbit
;
3556 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3557 ok(ret
== 0, "expected 0 got %d\n", ret
);
3558 ok(os1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, os1
.base_ios
.state
);
3559 os1
.base_ios
.state
= IOSTATE_goodbit
;
3560 os1
.base_ios
.tie
= &os2
;
3561 os2
.base_ios
.sb
= NULL
;
3562 if (0) /* crashes on native */
3563 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3564 os2
.base_ios
.sb
= &fb2
.base
;
3565 os2
.base_ios
.state
= IOSTATE_badbit
;
3566 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "We've known each other", 22);
3567 ok(ret
== 22, "expected 22 got %d\n", ret
);
3568 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3569 ok(ret
== 1, "expected 1 got %d\n", ret
);
3570 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3571 ok(os2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os2
.base_ios
.state
);
3572 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3573 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 22, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 22, fb1
.base
.pptr
);
3574 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
3575 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
3578 os1
.base_ios
.state
= IOSTATE_badbit
;
3579 os1
.base_ios
.width
= 0xab;
3580 call_func1(p_ostream_osfx
, &os1
);
3581 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
3582 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3583 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3584 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 22, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 22, fb1
.base
.pptr
);
3585 os1
.base_ios
.state
= IOSTATE_goodbit
;
3586 ret
= (int) call_func1(p_ostream_opfx
, &os1
);
3587 ok(ret
== 1, "expected 1 got %d\n", ret
);
3588 os1
.base_ios
.sb
= NULL
;
3589 if (0) /* crashes on native */
3590 call_func1(p_ostream_osfx
, &os1
);
3591 os1
.base_ios
.sb
= &fb1
.base
;
3592 os1
.base_ios
.flags
= FLAGS_unitbuf
;
3593 call_func1(p_ostream_osfx
, &os1
);
3594 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3595 ok(os1
.base_ios
.flags
== FLAGS_unitbuf
, "expected %d got %d\n", FLAGS_unitbuf
, os1
.base_ios
.flags
);
3596 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3597 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3600 ret
= (int) call_func3(p_streambuf_xsputn
, &fb2
.base
, "for so long", 11);
3601 ok(ret
== 11, "expected 11 got %d\n", ret
);
3602 os1
.base_ios
.state
= IOSTATE_badbit
;
3603 os1
.base_ios
.width
= 2;
3604 pos
= call_func2(p_ostream_put_char
, &os1
, 'a');
3605 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3606 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3607 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3608 ok(os1
.base_ios
.width
== 2, "expected 2 got %d\n", os1
.base_ios
.width
);
3609 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3610 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3611 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
3612 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 11, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 11, fb2
.base
.pptr
);
3613 os1
.base_ios
.state
= IOSTATE_goodbit
;
3614 pos
= call_func2(p_ostream_put_char
, &os1
, 'a');
3615 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3616 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3617 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3618 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3619 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3620 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
3621 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
3622 os1
.base_ios
.flags
= 0;
3623 pos
= call_func2(p_ostream_put_char
, &os1
, 'b');
3624 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3625 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3626 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3627 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 1, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 1, fb1
.base
.pptr
);
3628 os1
.base_ios
.sb
= NULL
;
3629 if (0) /* crashes on native */
3630 pos
= call_func2(p_ostream_put_char
, &os1
, 'c');
3631 os1
.base_ios
.sb
= &fb1
.base
;
3632 os1
.base_ios
.width
= 5;
3633 call_func1(p_filebuf_sync
, &fb1
);
3636 pos
= call_func2(p_ostream_put_char
, &os1
, 'c');
3637 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3638 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3639 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3640 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3641 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3642 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3646 pos
= call_func3(p_ostream_write_char
, &os1
, "Your", 4);
3647 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3648 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3649 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3650 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3651 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3652 os1
.base_ios
.state
= IOSTATE_goodbit
;
3653 os1
.base_ios
.width
= 1;
3654 pos
= call_func3(p_ostream_write_char
, &os1
, "heart's", 7);
3655 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3656 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3657 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3658 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3659 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 7, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 7, fb1
.base
.pptr
);
3660 os1
.base_ios
.sb
= NULL
;
3661 if (0) /* crashes on native */
3662 pos
= call_func3(p_ostream_write_char
, &os1
, "been", 4);
3663 os1
.base_ios
.sb
= &fb1
.base
;
3664 os1
.base_ios
.width
= 5;
3665 call_func1(p_filebuf_sync
, &fb1
);
3668 pos
= call_func3(p_ostream_write_char
, &os1
, "aching,", 7);
3669 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3670 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3671 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3672 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
3673 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3674 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3678 os1
.base_ios
.state
= IOSTATE_eofbit
;
3679 pos
= call_func3(p_ostream_seekp_offset
, &os1
, 0, SEEKDIR_beg
);
3680 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3681 ok(os1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, os1
.base_ios
.state
);
3682 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "but", 3);
3683 ok(ret
== 3, "expected 3 got %d\n", ret
);
3684 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3685 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 3, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 3, fb1
.base
.pptr
);
3686 pos
= call_func3(p_ostream_seekp_offset
, &os1
, 0, SEEKDIR_end
);
3687 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3688 ok(os1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, os1
.base_ios
.state
);
3689 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3690 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3691 pos
= call_func3(p_ostream_seekp_offset
, &os1
, -1, SEEKDIR_beg
);
3692 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3693 ok(os1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
3694 IOSTATE_eofbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3695 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "You're too shy", 14);
3696 ok(ret
== 14, "expected 14 got %d\n", ret
);
3697 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3698 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 14, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.pptr
);
3699 pos
= call_func2(p_ostream_seekp
, &os1
, 0);
3700 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3701 ok(os1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
3702 IOSTATE_eofbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3703 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3704 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3705 os1
.base_ios
.state
= IOSTATE_badbit
;
3706 pos
= call_func2(p_ostream_seekp
, &os1
, -1);
3707 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3708 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3709 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3712 ret
= (int) call_func1(p_ostream_tellp
, &os1
);
3713 ok(ret
== 0, "wrong return, expected 0 got %d\n", ret
);
3714 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3715 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3716 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "to say it", 9);
3717 ok(ret
== 9, "expected 9 got %d\n", ret
);
3718 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
3719 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 9, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 9, fb1
.base
.pptr
);
3720 ret
= (int) call_func1(p_ostream_tellp
, &os1
);
3721 ok(ret
== 9, "wrong return, expected 9 got %d\n", ret
);
3722 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3723 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3724 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
3725 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
3726 os1
.base_ios
.state
= IOSTATE_eofbit
;
3729 ret
= (int) call_func1(p_ostream_tellp
, &os1
);
3730 ok(ret
== EOF
, "wrong return, expected EOF got %d\n", ret
);
3731 ok(os1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
3732 IOSTATE_eofbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3736 os1
.base_ios
.state
= IOSTATE_eofbit
;
3737 os1
.base_ios
.flags
=
3738 FLAGS_right
|FLAGS_hex
|FLAGS_showbase
|FLAGS_showpoint
|FLAGS_showpos
|FLAGS_uppercase
|FLAGS_fixed
;
3739 os1
.base_ios
.fill
= 'z';
3740 os1
.base_ios
.width
= 9;
3741 pos
= call_func3(p_ostream_writepad
, &os1
, "a", "b");
3742 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3743 ok(!strncmp(fb1
.base
.pptr
- 9, "zzzzzzzab", 9), "expected 'zzzzzzzab' got '%s'\n", fb1
.base
.pptr
- 9);
3744 pos
= call_func3(p_ostream_writepad
, &os1
, "aa", "bb");
3745 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3746 ok(!strncmp(fb1
.base
.pptr
- 9, "zzzzzaabb", 9), "expected 'zzzzzaabb' got '%s'\n", fb1
.base
.pptr
- 9);
3747 pos
= call_func3(p_ostream_writepad
, &os1
, "aaaaa", "bbbbb");
3748 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3749 ok(!strncmp(fb1
.base
.pptr
- 10, "aaaaabbbbb", 10), "expected 'aaaaabbbbb' got '%s'\n", fb1
.base
.pptr
- 10);
3750 os1
.base_ios
.flags
|= FLAGS_internal
;
3751 pos
= call_func3(p_ostream_writepad
, &os1
, "aa", "bb");
3752 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3753 ok(!strncmp(fb1
.base
.pptr
- 9, "aazzzzzbb", 9), "expected 'aazzzzzbb' got '%s'\n", fb1
.base
.pptr
- 9);
3754 os1
.base_ios
.flags
&= ~FLAGS_right
;
3755 pos
= call_func3(p_ostream_writepad
, &os1
, "a", "b");
3756 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3757 ok(!strncmp(fb1
.base
.pptr
- 9, "azzzzzzzb", 9), "expected 'azzzzzzzb' got '%s'\n", fb1
.base
.pptr
- 9);
3758 os1
.base_ios
.width
= 6;
3759 pos
= call_func3(p_ostream_writepad
, &os1
, "1", "2");
3760 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3761 ok(!strncmp(fb1
.base
.pptr
- 6, "1zzzz2", 6), "expected '1zzzz2' got '%s'\n", fb1
.base
.pptr
- 6);
3762 pos
= call_func3(p_ostream_writepad
, &os1
, "12345678", "");
3763 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3764 ok(!strncmp(fb1
.base
.pptr
- 8, "12345678", 8), "expected '12345678' got '%s'\n", fb1
.base
.pptr
- 8);
3765 os1
.base_ios
.flags
|= FLAGS_left
;
3766 pos
= call_func3(p_ostream_writepad
, &os1
, "z1", "2z");
3767 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3768 ok(!strncmp(fb1
.base
.pptr
- 6, "z1zz2z", 6), "expected 'z1zz2z' got '%s'\n", fb1
.base
.pptr
- 6);
3769 os1
.base_ios
.flags
&= ~FLAGS_internal
;
3770 pos
= call_func3(p_ostream_writepad
, &os1
, "hell", "o");
3771 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3772 ok(!strncmp(fb1
.base
.pptr
- 6, "helloz", 6), "expected 'helloz' got '%s'\n", fb1
.base
.pptr
- 6);
3773 os1
.base_ios
.flags
|= FLAGS_right
;
3774 pos
= call_func3(p_ostream_writepad
, &os1
, "a", "b");
3775 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3776 ok(!strncmp(fb1
.base
.pptr
- 6, "abzzzz", 6), "expected 'abzzzz' got '%s'\n", fb1
.base
.pptr
- 6);
3777 if (0) /* crashes on native */
3778 pos
= call_func3(p_ostream_writepad
, &os1
, NULL
, "o");
3779 pos
= call_func3(p_ostream_writepad
, &os1
, "", "hello");
3780 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3781 ok(!strncmp(fb1
.base
.pptr
- 6, "helloz", 6), "expected 'helloz' got '%s'\n", fb1
.base
.pptr
- 6);
3782 os1
.base_ios
.fill
= '*';
3783 pos
= call_func3(p_ostream_writepad
, &os1
, "", "");
3784 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3785 ok(!strncmp(fb1
.base
.pptr
- 6, "******", 6), "expected '******' got '%s'\n", fb1
.base
.pptr
- 6);
3786 pos
= call_func3(p_ostream_writepad
, &os1
, "aa", "");
3787 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3788 ok(!strncmp(fb1
.base
.pptr
- 6, "aa****", 6), "expected 'aa****' got '%s'\n", fb1
.base
.pptr
- 6);
3789 os1
.base_ios
.flags
= 0;
3790 pos
= call_func3(p_ostream_writepad
, &os1
, "a", "b");
3791 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3792 ok(!strncmp(fb1
.base
.pptr
- 6, "****ab", 6), "expected '****ab' got '%s'\n", fb1
.base
.pptr
- 6);
3793 call_func1(p_filebuf_sync
, &fb1
);
3795 pos
= call_func3(p_ostream_writepad
, &os1
, "aa", "bb");
3796 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3797 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
), "expected %d got %d\n",
3798 IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
, os1
.base_ios
.state
);
3799 os1
.base_ios
.state
= IOSTATE_goodbit
;
3800 pos
= call_func3(p_ostream_writepad
, &os1
, "", "");
3801 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3802 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3803 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3804 os1
.base_ios
.state
= IOSTATE_goodbit
;
3805 os1
.base_ios
.width
= 0;
3806 pos
= call_func3(p_ostream_writepad
, &os1
, "", "");
3807 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3808 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
3809 pos
= call_func3(p_ostream_writepad
, &os1
, "a", "");
3810 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
3811 ok(os1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
3812 IOSTATE_badbit
|IOSTATE_failbit
, os1
.base_ios
.state
);
3815 call_func1(p_ostream_vbase_dtor
, &os1
);
3816 call_func1(p_ostream_vbase_dtor
, &os2
);
3817 call_func1(p_filebuf_dtor
, &fb1
);
3818 call_func1(p_filebuf_dtor
, &fb2
);
3819 ok(_unlink(filename1
) == 0, "Couldn't unlink file named '%s'\n", filename1
);
3820 ok(_unlink(filename2
) == 0, "Couldn't unlink file named '%s'\n", filename2
);
3823 static void test_ostream_print(void)
3825 const BOOL is_64
= (sizeof(void*) == 8);
3827 strstreambuf ssb
, ssb_test1
, ssb_test2
, ssb_test3
, *pssb
;
3828 LONG length
, expected_length
;
3831 char param_char
[] = {'a', '9', 'e'};
3832 const char* param_str
[] = {"Test", "800", "3.14159", " Test"};
3833 int param_int
[] = {0, 7, 10, 24 ,55, 1024, 1023, 65536, 2147483647, 2147483648u, 4294967295u, -20};
3834 float param_float
[] = {1.0f
, 0.0f
, 4.25f
, 3.999f
, 12.0005f
, 15.33582f
, 15.0f
, 15.22f
, 21.123f
, 0.1f
,
3835 13.14159f
, 0.00013f
, 0.000013f
, INFINITY
, -INFINITY
, NAN
};
3836 double param_double
[] = {1.0, 3.141592653589793238, 314.1592653589793238, 314.159265358979,
3837 1231314.269811862199, 9.961472e6
, 8.98846567431e307
, DBL_MAX
};
3838 void* param_ptr
[] = {NULL
, (void*) 0xdeadbeef, (void*) 0x1234cdef, (void*) 0x1, (void*) 0xffffffff};
3839 streambuf
* param_streambuf
[] = {NULL
, &ssb_test1
.base
, &ssb_test2
.base
, &ssb_test3
.base
};
3840 struct ostream_print_test
{
3841 enum { type_chr
, type_str
, type_int
, type_flt
, type_dbl
, type_ptr
, type_sbf
} type
;
3848 const char *expected_text
;
3849 ios_io_state expected_flags
;
3852 {type_chr
, /* 'a' */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3853 {type_chr
, /* 'a' */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
3854 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, 0, 6, ' ', 0, "a", IOSTATE_goodbit
},
3855 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, 0, 6, ' ', 4, " a", IOSTATE_goodbit
},
3856 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, 0, 6, 'x', 3, "xxa", IOSTATE_goodbit
},
3857 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, FLAGS_left
, 6, ' ', 4, "a ", IOSTATE_goodbit
},
3858 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, FLAGS_left
|FLAGS_internal
, 6, ' ', 4, " a", IOSTATE_goodbit
},
3859 {type_chr
, /* 'a' */ 0, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_hex
|FLAGS_showbase
, 6, ' ', 4, " a", IOSTATE_goodbit
},
3860 {type_chr
, /* '9' */ 1, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_showbase
|FLAGS_uppercase
, 6, 'i', 2, "i9", IOSTATE_goodbit
},
3861 {type_chr
, /* '9' */ 1, IOSTATE_goodbit
, FLAGS_showpos
|FLAGS_scientific
, 0, 'i', 2, "i9", IOSTATE_goodbit
},
3862 {type_chr
, /* 'e' */ 2, IOSTATE_goodbit
, FLAGS_left
|FLAGS_right
|FLAGS_uppercase
, 0, '*', 8, "e*******", IOSTATE_goodbit
},
3864 {type_str
, /* "Test" */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3865 {type_str
, /* "Test" */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
3866 {type_str
, /* "Test" */ 0, IOSTATE_goodbit
, 0, 6, ' ', 0, "Test", IOSTATE_goodbit
},
3867 {type_str
, /* "Test" */ 0, IOSTATE_goodbit
, 0, 6, ' ', 6, " Test", IOSTATE_goodbit
},
3868 {type_str
, /* "Test" */ 0, IOSTATE_goodbit
, FLAGS_internal
, 6, 'x', 6, "xxTest", IOSTATE_goodbit
},
3869 {type_str
, /* "Test" */ 0, IOSTATE_goodbit
, FLAGS_left
, 6, ' ', 5, "Test ", IOSTATE_goodbit
},
3870 {type_str
, /* "Test" */ 0, IOSTATE_goodbit
, FLAGS_left
|FLAGS_hex
|FLAGS_showpoint
, 6, '?', 6, "Test??", IOSTATE_goodbit
},
3871 {type_str
, /* "800" */ 1, IOSTATE_goodbit
, FLAGS_showbase
|FLAGS_showpos
, 6, ' ', 4, " 800", IOSTATE_goodbit
},
3872 {type_str
, /* "3.14159" */ 2, IOSTATE_goodbit
, FLAGS_scientific
, 2, 'x', 2, "3.14159", IOSTATE_goodbit
},
3873 {type_str
, /* " Test" */ 3, IOSTATE_goodbit
, FLAGS_skipws
, 6, 'x', 2, " Test", IOSTATE_goodbit
},
3875 {type_int
, /* 0 */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3876 {type_int
, /* 0 */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
3877 {type_int
, /* 0 */ 0, IOSTATE_goodbit
, 0, 6, ' ', 4, " 0", IOSTATE_goodbit
},
3878 {type_int
, /* 7 */ 1, IOSTATE_goodbit
, 0, 6, '0', 3, "007", IOSTATE_goodbit
},
3879 {type_int
, /* 10 */ 2, IOSTATE_goodbit
, FLAGS_left
, 6, ' ', 5, "10 ", IOSTATE_goodbit
},
3880 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_left
|FLAGS_hex
, 6, ' ', 0, "18", IOSTATE_goodbit
},
3881 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_left
|FLAGS_hex
|FLAGS_showbase
, 6, ' ', 0, "0x18", IOSTATE_goodbit
},
3882 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_hex
|FLAGS_showbase
, 6, '*', 8, "0x****18", IOSTATE_goodbit
},
3883 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_showbase
, 6, '*', 4, "*030", IOSTATE_goodbit
},
3884 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_dec
|FLAGS_showbase
, 6, ' ', 0, "030", IOSTATE_goodbit
},
3885 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_dec
|FLAGS_hex
|FLAGS_showbase
, 6, ' ', 0, "0x18", IOSTATE_goodbit
},
3886 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_left
|FLAGS_oct
|FLAGS_hex
, 6, ' ', 5, "18 ", IOSTATE_goodbit
},
3887 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_dec
|FLAGS_hex
|FLAGS_showbase
, 6, ' ', 0, "0x18", IOSTATE_goodbit
},
3888 {type_int
, /* 24 */ 3, IOSTATE_goodbit
, FLAGS_dec
|FLAGS_showbase
, 6, ' ', 0, "24", IOSTATE_goodbit
},
3889 {type_int
, /* 55 */ 4, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
|FLAGS_uppercase
, 6, ' ', 0, "0X37", IOSTATE_goodbit
},
3890 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
|FLAGS_showpoint
|FLAGS_uppercase
, 6, ' ', 0, "0X400", IOSTATE_goodbit
},
3891 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
|FLAGS_showpos
, 6, ' ', 0, "0x400", IOSTATE_goodbit
},
3892 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showpos
, 6, ' ', 0, "400", IOSTATE_goodbit
},
3893 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_showpos
, 6, ' ', 0, "2000", IOSTATE_goodbit
},
3894 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_oct
|FLAGS_showbase
, 6, 'x', 8, "0xxx2000", IOSTATE_goodbit
},
3895 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_showbase
|FLAGS_showpoint
|FLAGS_showpos
, 6, ' ', 0, "+1024", IOSTATE_goodbit
},
3896 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_dec
|FLAGS_showbase
|FLAGS_showpos
, 6, 'a', 6, "a+1024", IOSTATE_goodbit
},
3897 {type_int
, /* 1024 */ 5, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_showbase
|FLAGS_showpos
, 6, ' ', 8, "+ 1024", IOSTATE_goodbit
},
3898 {type_int
, /* 1023 */ 6, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
|FLAGS_uppercase
, 6, ' ', 0, "0X3FF", IOSTATE_goodbit
},
3899 {type_int
, /* 1023 */ 6, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
|FLAGS_scientific
, 6, ' ', 0, "0x3ff", IOSTATE_goodbit
},
3900 {type_int
, /* 65536 */ 7, IOSTATE_goodbit
, FLAGS_right
|FLAGS_showpos
|FLAGS_fixed
, 6, ' ', 8, " +65536", IOSTATE_goodbit
},
3901 {type_int
, /* 2147483647 */ 8, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showbase
, 6, ' ', 0, "0x7fffffff", IOSTATE_goodbit
},
3902 {type_int
, /* 2147483648 */ 9, IOSTATE_goodbit
, FLAGS_dec
, 6, ' ', 0, "-2147483648", IOSTATE_goodbit
},
3903 {type_int
, /* 4294967295 */ 10, IOSTATE_goodbit
, FLAGS_internal
, 6, ' ', 8, " -1", IOSTATE_goodbit
},
3904 {type_int
, /* -20 */ 11, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_oct
|FLAGS_showbase
, 6, ' ', 8, "037777777754", IOSTATE_goodbit
},
3905 {type_int
, /* -20 */ 11, IOSTATE_goodbit
, FLAGS_dec
|FLAGS_showpos
, 6, ' ', 0, "-20", IOSTATE_goodbit
},
3906 {type_int
, /* 0 */ 0, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_showpos
, 6, ' ', 8, " 0", IOSTATE_goodbit
},
3908 {type_flt
, /* 1.0f */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3909 {type_flt
, /* 1.0f */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
3910 {type_flt
, /* 1.0f */ 0, IOSTATE_goodbit
, 0, 6, ' ', 0, "1", IOSTATE_goodbit
},
3911 {type_flt
, /* 0.0f */ 1, IOSTATE_goodbit
, 0, 6, ' ', 0, "0", IOSTATE_goodbit
},
3912 {type_flt
, /* 4.25f */ 2, IOSTATE_goodbit
, 0, 6, ' ', 0, "4.25", IOSTATE_goodbit
},
3913 {type_flt
, /* 3.999f */ 3, IOSTATE_goodbit
, 0, 6, ' ', 0, "3.999", IOSTATE_goodbit
},
3914 {type_flt
, /* 3.999f */ 3, IOSTATE_goodbit
, 0, 3, ' ', 0, "4", IOSTATE_goodbit
},
3915 {type_flt
, /* 12.0005f */ 4, IOSTATE_goodbit
, 0, 6, ' ', 0, "12.0005", IOSTATE_goodbit
},
3916 {type_flt
, /* 12.0005f */ 4, IOSTATE_goodbit
, 0, 5, ' ', 0, "12", IOSTATE_goodbit
},
3917 {type_flt
, /* 15.33582f */ 5, IOSTATE_goodbit
, 0, 4, ' ', 0, "15.34", IOSTATE_goodbit
},
3918 {type_flt
, /* 15.0f */ 6, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_hex
|FLAGS_showbase
, 6, ' ', 4, " 15", IOSTATE_goodbit
},
3919 {type_flt
, /* 15.22f */ 7, IOSTATE_goodbit
, FLAGS_left
|FLAGS_hex
|FLAGS_showbase
, 3, ' ', 6, "15.2 ", IOSTATE_goodbit
},
3920 {type_flt
, /* 15.22 */ 7, IOSTATE_goodbit
, FLAGS_internal
, 3, 'x', 6, "xx15.2", IOSTATE_goodbit
},
3921 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_showpoint
, 9, ' ', 0, "21.1230", IOSTATE_goodbit
},
3922 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_showpos
, 9, ' ', 0, "+21.123", IOSTATE_goodbit
},
3923 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_showpos
, 9, ' ', 8, "+ 21.123", IOSTATE_goodbit
},
3924 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_showpos
, 0, ' ', 0, "+2e+001", IOSTATE_goodbit
},
3925 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, 0, 1, ' ', 0, "2e+001", IOSTATE_goodbit
},
3926 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_showpos
, 2, ' ', 0, "+21", IOSTATE_goodbit
},
3927 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, 0, 4, ' ', 0, "21.12", IOSTATE_goodbit
},
3928 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_scientific
, 2, ' ', 0, "2.11e+001", IOSTATE_goodbit
},
3929 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_scientific
, 4, ' ', 0, "2.1123e+001", IOSTATE_goodbit
},
3930 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_scientific
, 6, ' ', 0, "2.112300e+001", IOSTATE_goodbit
},
3931 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_scientific
|FLAGS_uppercase
, 2, ' ', 0, "2.11E+001", IOSTATE_goodbit
},
3932 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_scientific
|FLAGS_uppercase
, 2, '*', 10, "*2.11E+001", IOSTATE_goodbit
},
3933 {type_flt
, /* 21.123f */ 8, IOSTATE_goodbit
, FLAGS_fixed
, 6, ' ', 0, "21.122999", IOSTATE_goodbit
},
3934 {type_flt
, /* 0.1f */ 9, IOSTATE_goodbit
, FLAGS_fixed
, 6, ' ', 0, "0.100000", IOSTATE_goodbit
},
3935 {type_flt
, /* 0.1f */ 9, IOSTATE_goodbit
, FLAGS_scientific
, 6, ' ', 0, "1.000000e-001", IOSTATE_goodbit
},
3936 {type_flt
, /* 13.14159f */ 10, IOSTATE_goodbit
, FLAGS_fixed
, 3, ' ', 0, "13.142", IOSTATE_goodbit
},
3937 {type_flt
, /* 13.14159f */ 10, IOSTATE_goodbit
, FLAGS_fixed
, 8, ' ', 0, "13.141590", IOSTATE_goodbit
},
3938 {type_flt
, /* 13.14159f */ 10, IOSTATE_goodbit
, FLAGS_fixed
|FLAGS_showpoint
, 8, ' ', 0, "13.141590", IOSTATE_goodbit
},
3939 {type_flt
, /* 13.14159f */ 10, IOSTATE_goodbit
, FLAGS_scientific
|FLAGS_fixed
, 8, ' ', 0, "13.1416", IOSTATE_goodbit
},
3940 {type_flt
, /* 13.14159f */ 10, IOSTATE_goodbit
, FLAGS_scientific
|FLAGS_fixed
, 2, ' ', 0, "13", IOSTATE_goodbit
},
3941 {type_flt
, /* 0.00013f */ 11, IOSTATE_goodbit
, 0, -1, ' ', 0, "0.00013", IOSTATE_goodbit
},
3942 {type_flt
, /* 0.00013f */ 11, IOSTATE_goodbit
, 0, -1, ' ', 0, "0.00013", IOSTATE_goodbit
},
3943 {type_flt
, /* 0.00013f */ 11, IOSTATE_goodbit
, 0, -1, ' ', 0, "0.00013", IOSTATE_goodbit
},
3944 {type_flt
, /* 0.000013f */ 12, IOSTATE_goodbit
, 0, 4, ' ', 0, "1.3e-005", IOSTATE_goodbit
},
3945 {type_flt
, /* 0.000013f */ 12, IOSTATE_goodbit
, FLAGS_showpoint
, 4, ' ', 0, "1.300e-005", IOSTATE_goodbit
},
3946 {type_flt
, /* 0.000013f */ 12, IOSTATE_goodbit
, FLAGS_showpoint
, 6, ' ', 0, "1.30000e-005", IOSTATE_goodbit
},
3947 {type_flt
, /* INFINITY */ 13, IOSTATE_goodbit
, 0, 6, ' ', 0, "1.#INF", IOSTATE_goodbit
},
3948 {type_flt
, /* INFINITY */ 13, IOSTATE_goodbit
, 0, 4, ' ', 0, "1.#IO", IOSTATE_goodbit
},
3949 {type_flt
, /* -INFINITY */ 14, IOSTATE_goodbit
, 0, 6, ' ', 0, "-1.#INF", IOSTATE_goodbit
},
3950 {type_flt
, /* NAN */ 15, IOSTATE_goodbit
, 0, 6, ' ', 0, "1.#QNAN", IOSTATE_goodbit
},
3952 {type_dbl
, /* 1.0 */ 0, IOSTATE_goodbit
, 0, 6, ' ', 0, "1", IOSTATE_goodbit
},
3953 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, 0, 6, ' ', 0, "3.14159", IOSTATE_goodbit
},
3954 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, 0, 9, ' ', 0, "3.14159265", IOSTATE_goodbit
},
3955 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, 0, 12, ' ', 0, "3.14159265359", IOSTATE_goodbit
},
3956 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, 0, 15, ' ', 0, "3.14159265358979", IOSTATE_goodbit
},
3957 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, 0, 16, ' ', 0, "3.14159265358979", IOSTATE_goodbit
},
3958 {type_dbl
, /* 314.1592653589793238 */ 2, IOSTATE_goodbit
, 0, 16, ' ', 0, "314.159265358979", IOSTATE_goodbit
},
3959 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, FLAGS_scientific
, 16, ' ', 0, "3.141592653589793e+000", IOSTATE_goodbit
},
3960 {type_dbl
, /* 314.1592653589793238 */ 2, IOSTATE_goodbit
, FLAGS_scientific
, 16, ' ', 0, "3.141592653589793e+002", IOSTATE_goodbit
},
3961 {type_dbl
, /* 3.141592653589793238 */ 1, IOSTATE_goodbit
, FLAGS_fixed
, -1, ' ', 0, "3.141592653589793", IOSTATE_goodbit
},
3962 {type_dbl
, /* 314.159265358979 */ 3, IOSTATE_goodbit
, FLAGS_fixed
, 12, ' ', 0, "314.159265358979", IOSTATE_goodbit
},
3963 {type_dbl
, /* 1231314.269811862199 */ 4, IOSTATE_goodbit
, FLAGS_fixed
, 10, ' ', 0, "1231314.2698118621", IOSTATE_goodbit
},
3964 {type_dbl
, /* 9.961472e6 */ 5, IOSTATE_goodbit
, FLAGS_fixed
, 500, ' ', 0, "9961472.000000000000000", IOSTATE_goodbit
},
3965 /* crashes on XP/2k3 {type_dbl, 8.98846567431e307 6, IOSTATE_goodbit, FLAGS_fixed, 500, ' ', 0, "", IOSTATE_goodbit}, */
3966 /* crashes on XP/2k3 {type_dbl, DBL_MAX 7, IOSTATE_goodbit, FLAGS_fixed|FLAGS_showpos, 500, ' ', 5, " ", IOSTATE_goodbit}, */
3967 {type_dbl
, /* DBL_MAX */ 7, IOSTATE_goodbit
, FLAGS_showpoint
, 500, ' ', 0, "1.79769313486232e+308", IOSTATE_goodbit
},
3969 {type_ptr
, /* NULL */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3970 {type_ptr
, /* NULL */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
3971 {type_ptr
, /* NULL */ 0, IOSTATE_goodbit
, 0, 6, ' ', 0,
3972 is_64
? "0x0000000000000000" : "0x00000000", IOSTATE_goodbit
},
3973 {type_ptr
, /* 0xdeadbeef */ 1, IOSTATE_goodbit
, 0, 6, ' ', 0,
3974 is_64
? "0x00000000DEADBEEF" : "0xDEADBEEF", IOSTATE_goodbit
},
3975 {type_ptr
, /* 0xdeadbeef */ 1, IOSTATE_goodbit
, 0, 6, '*', 12,
3976 is_64
? "0x00000000DEADBEEF" : "**0xDEADBEEF", IOSTATE_goodbit
},
3977 {type_ptr
, /* 0xdeadbeef */ 1, IOSTATE_goodbit
, FLAGS_internal
, 6, ' ', 14,
3978 is_64
? "0x00000000DEADBEEF" : "0x DEADBEEF", IOSTATE_goodbit
},
3979 {type_ptr
, /* 0xdeadbeef */ 1, IOSTATE_goodbit
, FLAGS_left
, 6, 'x', 11,
3980 is_64
? "0x00000000DEADBEEF" : "0xDEADBEEFx", IOSTATE_goodbit
},
3981 {type_ptr
, /* 0x1234cdef */ 2, IOSTATE_goodbit
, FLAGS_dec
|FLAGS_showpos
, 6, ' ', 0,
3982 is_64
? "0x000000001234CDEF" : "0x1234CDEF", IOSTATE_goodbit
},
3983 {type_ptr
, /* 0x1 */ 3, IOSTATE_goodbit
, FLAGS_oct
|FLAGS_showbase
, 6, ' ', 0,
3984 is_64
? "0x0000000000000001" : "0x00000001", IOSTATE_goodbit
},
3985 {type_ptr
, /* 0xffffffff */ 4, IOSTATE_goodbit
, FLAGS_hex
|FLAGS_showpoint
, 6, ' ', 0,
3986 is_64
? "0x00000000FFFFFFFF" : "0xFFFFFFFF", IOSTATE_goodbit
},
3987 {type_ptr
, /* 0xffffffff */ 4, IOSTATE_goodbit
, FLAGS_uppercase
|FLAGS_fixed
, 6, ' ', 0,
3988 is_64
? "0X00000000FFFFFFFF" : "0XFFFFFFFF", IOSTATE_goodbit
},
3989 {type_ptr
, /* 0x1 */ 3, IOSTATE_goodbit
, FLAGS_uppercase
, 6, ' ', 0,
3990 is_64
? "0X0000000000000001" : "0X00000001", IOSTATE_goodbit
},
3991 {type_ptr
, /* NULL */ 0, IOSTATE_goodbit
, FLAGS_uppercase
, 6, ' ', 0,
3992 is_64
? "0x0000000000000000" : "0x00000000", IOSTATE_goodbit
},
3993 {type_ptr
, /* NULL */ 0, IOSTATE_goodbit
, FLAGS_uppercase
|FLAGS_showbase
, 12, 'x', 12,
3994 is_64
? "0x0000000000000000" : "xx0x00000000", IOSTATE_goodbit
},
3995 {type_ptr
, /* NULL */ 0, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_uppercase
|FLAGS_showbase
, 6, '?', 20,
3996 is_64
? "0x??0000000000000000" : "0x??????????00000000", IOSTATE_goodbit
},
3998 {type_sbf
, /* NULL */ 0, IOSTATE_badbit
, 0, 6, ' ', 0, "", IOSTATE_badbit
|IOSTATE_failbit
},
3999 {type_sbf
, /* NULL */ 0, IOSTATE_eofbit
, 0, 6, ' ', 0, "", IOSTATE_eofbit
|IOSTATE_failbit
},
4000 /* crashes on native {STREAMBUF, NULL 0, IOSTATE_goodbit, 0, 6, ' ', 0, "", IOSTATE_goodbit}, */
4001 {type_sbf
, /* &ssb_test1.base */ 1, IOSTATE_goodbit
, FLAGS_skipws
|FLAGS_showpos
|FLAGS_uppercase
,
4002 6, ' ', 0, " we both know what's been going on ", IOSTATE_goodbit
},
4003 {type_sbf
, /* &ssb_test1.base */ 2, IOSTATE_goodbit
, FLAGS_left
|FLAGS_hex
|FLAGS_showbase
,
4004 6, '*', 50, "123 We know the game and", IOSTATE_goodbit
},
4005 {type_sbf
, /* &ssb_test1.base */ 3, IOSTATE_goodbit
, FLAGS_internal
|FLAGS_scientific
|FLAGS_showpoint
,
4006 6, '*', 50, "we're gonna play it 3.14159", IOSTATE_goodbit
}
4009 pssb
= call_func1(p_strstreambuf_ctor
, &ssb
);
4010 ok(pssb
== &ssb
, "wrong return, expected %p got %p\n", &ssb
, pssb
);
4011 pos
= call_func3(p_ostream_sb_ctor
, &os
, &ssb
.base
, TRUE
);
4012 ok(pos
== &os
, "wrong return, expected %p got %p\n", &os
, pos
);
4013 pssb
= call_func1(p_strstreambuf_ctor
, &ssb_test1
);
4014 ok(pssb
== &ssb_test1
, "wrong return, expected %p got %p\n", &ssb_test1
, pssb
);
4015 ret
= (int) call_func3(p_streambuf_xsputn
, &ssb_test1
.base
, " we both know what's been going on ", 36);
4016 ok(ret
== 36, "expected 36 got %d\n", ret
);
4017 pssb
= call_func1(p_strstreambuf_ctor
, &ssb_test2
);
4018 ok(pssb
== &ssb_test2
, "wrong return, expected %p got %p\n", &ssb_test2
, pssb
);
4019 ret
= (int) call_func3(p_streambuf_xsputn
, &ssb_test2
.base
, "123 We know the game and", 24);
4020 ok(ret
== 24, "expected 24 got %d\n", ret
);
4021 pssb
= call_func1(p_strstreambuf_ctor
, &ssb_test3
);
4022 ok(pssb
== &ssb_test3
, "wrong return, expected %p got %p\n", &ssb_test3
, pssb
);
4023 ret
= (int) call_func3(p_streambuf_xsputn
, &ssb_test3
.base
, "we're gonna play it 3.14159", 27);
4024 ok(ret
== 27, "expected 27 got %d\n", ret
);
4026 for (i
= 0; i
< ARRAY_SIZE(tests
); i
++) {
4027 os
.base_ios
.state
= tests
[i
].state
;
4028 os
.base_ios
.flags
= tests
[i
].flags
;
4029 os
.base_ios
.precision
= tests
[i
].precision
;
4030 os
.base_ios
.fill
= tests
[i
].fill
;
4031 os
.base_ios
.width
= tests
[i
].width
;
4032 ssb
.base
.pptr
= ssb
.base
.pbase
;
4034 switch (tests
[i
].type
) {
4036 pos
= call_func2(p_ostream_print_char
, &os
, (int) param_char
[tests
[i
].param_index
]); break;
4038 pos
= call_func2(p_ostream_print_str
, &os
, param_str
[tests
[i
].param_index
]); break;
4040 pos
= call_func2(p_ostream_print_int
, &os
, param_int
[tests
[i
].param_index
]); break;
4042 pos
= call_func2_ptr_flt(p_ostream_print_float
, &os
, param_float
[tests
[i
].param_index
]); break;
4044 pos
= call_func2_ptr_dbl(p_ostream_print_double
, &os
, param_double
[tests
[i
].param_index
]); break;
4046 pos
= call_func2(p_ostream_print_ptr
, &os
, param_ptr
[tests
[i
].param_index
]); break;
4048 pos
= call_func2(p_ostream_print_streambuf
, &os
, param_streambuf
[tests
[i
].param_index
]); break;
4051 length
= ssb
.base
.pptr
- ssb
.base
.pbase
;
4052 expected_length
= strlen(tests
[i
].expected_text
);
4053 ok(pos
== &os
, "Test %d: wrong return, expected %p got %p\n", i
, &os
, pos
);
4054 ok(os
.base_ios
.state
== tests
[i
].expected_flags
, "Test %d: expected %d got %d\n", i
,
4055 tests
[i
].expected_flags
, os
.base_ios
.state
);
4056 ok(os
.base_ios
.width
== 0, "Test %d: expected 0 got %d\n", i
, os
.base_ios
.width
);
4057 ok(expected_length
== length
, "Test %d: wrong output length, expected %d got %d\n", i
, expected_length
, length
);
4058 ok(!strncmp(tests
[i
].expected_text
, ssb
.base
.pbase
, length
),
4059 "Test %d: wrong output, expected '%s' got '%s'\n", i
, tests
[i
].expected_text
, ssb
.base
.pbase
);
4062 call_func1(p_ostream_vbase_dtor
, &os
);
4063 call_func1(p_strstreambuf_dtor
, &ssb
);
4064 call_func1(p_strstreambuf_dtor
, &ssb_test1
);
4065 call_func1(p_strstreambuf_dtor
, &ssb_test2
);
4066 call_func1(p_strstreambuf_dtor
, &ssb_test3
);
4069 static void test_ostream_withassign(void)
4071 ostream osa1
, osa2
, *posa
, *pos
;
4074 memset(&osa1
, 0xab, sizeof(ostream
));
4075 memset(&osa2
, 0xab, sizeof(ostream
));
4077 /* constructors/destructors */
4078 posa
= call_func3(p_ostream_withassign_sb_ctor
, &osa1
, NULL
, TRUE
);
4079 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4080 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4081 ok(osa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.sb
);
4082 ok(osa1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, osa1
.base_ios
.state
);
4083 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4084 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4085 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4086 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4087 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4088 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4089 ok(osa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", osa1
.base_ios
.do_lock
);
4090 call_func1(p_ostream_withassign_vbase_dtor
, &osa1
);
4091 osa1
.unknown
= 0xabababab;
4092 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4093 osa1
.base_ios
.delbuf
= 0;
4094 posa
= call_func3(p_ostream_withassign_sb_ctor
, &osa1
, NULL
, FALSE
);
4095 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4096 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4097 ok(osa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.sb
);
4098 ok(osa1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
4099 0xabababab|IOSTATE_badbit
, osa1
.base_ios
.state
);
4100 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4101 ok(osa1
.base_ios
.tie
== osa2
.base_ios
.tie
, "expected %p got %p\n", osa2
.base_ios
.tie
, osa1
.base_ios
.tie
);
4102 ok(osa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, osa1
.base_ios
.flags
);
4103 ok(osa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.precision
);
4104 ok(osa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", osa1
.base_ios
.fill
);
4105 ok(osa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.width
);
4106 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4107 call_func1(p_ostream_withassign_dtor
, &osa1
.base_ios
);
4108 osa1
.unknown
= 0xabababab;
4109 osa1
.base_ios
.sb
= (streambuf
*) 0xabababab;
4110 posa
= call_func3(p_ostream_withassign_sb_ctor
, &osa1
, &sb
, TRUE
);
4111 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4112 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4113 ok(osa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, osa1
.base_ios
.sb
);
4114 ok(osa1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, osa1
.base_ios
.state
);
4115 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4116 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4117 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4118 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4119 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4120 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4121 ok(osa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", osa1
.base_ios
.do_lock
);
4122 call_func1(p_ostream_withassign_vbase_dtor
, &osa1
);
4123 osa1
.unknown
= 0xabababab;
4124 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4125 osa1
.base_ios
.state
|= IOSTATE_badbit
;
4126 osa1
.base_ios
.delbuf
= 0;
4127 posa
= call_func3(p_ostream_withassign_sb_ctor
, &osa1
, &sb
, FALSE
);
4128 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4129 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4130 ok(osa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, osa1
.base_ios
.sb
);
4131 ok(osa1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.state
);
4132 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4133 ok(osa1
.base_ios
.tie
== osa2
.base_ios
.tie
, "expected %p got %p\n", osa2
.base_ios
.tie
, osa1
.base_ios
.tie
);
4134 ok(osa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, osa1
.base_ios
.flags
);
4135 ok(osa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.precision
);
4136 ok(osa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", osa1
.base_ios
.fill
);
4137 ok(osa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.width
);
4138 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4139 call_func1(p_ostream_withassign_dtor
, &osa1
.base_ios
);
4140 posa
= call_func2(p_ostream_withassign_ctor
, &osa2
, TRUE
);
4141 ok(posa
== &osa2
, "wrong return, expected %p got %p\n", &osa2
, posa
);
4142 ok(osa2
.unknown
== 0, "expected 0 got %d\n", osa2
.unknown
);
4143 ok(osa2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa2
.base_ios
.sb
);
4144 ok(osa2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, osa2
.base_ios
.state
);
4145 ok(osa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa2
.base_ios
.delbuf
);
4146 ok(osa2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa2
.base_ios
.tie
);
4147 ok(osa2
.base_ios
.flags
== 0, "expected 0 got %x\n", osa2
.base_ios
.flags
);
4148 ok(osa2
.base_ios
.precision
== 6, "expected 6 got %d\n", osa2
.base_ios
.precision
);
4149 ok(osa2
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa2
.base_ios
.fill
);
4150 ok(osa2
.base_ios
.width
== 0, "expected 0 got %d\n", osa2
.base_ios
.width
);
4151 ok(osa2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", osa2
.base_ios
.do_lock
);
4152 call_func1(p_ostream_withassign_vbase_dtor
, &osa2
);
4153 osa2
.unknown
= 0xcdcdcdcd;
4154 memset(&osa2
.base_ios
, 0xcd, sizeof(ios
));
4155 osa2
.base_ios
.delbuf
= 0;
4156 psb
= osa2
.base_ios
.sb
;
4157 pos
= osa2
.base_ios
.tie
;
4158 posa
= call_func2(p_ostream_withassign_ctor
, &osa2
, FALSE
);
4159 ok(posa
== &osa2
, "wrong return, expected %p got %p\n", &osa2
, posa
);
4160 ok(osa2
.unknown
== 0, "expected 0 got %d\n", osa2
.unknown
);
4161 ok(osa2
.base_ios
.sb
== psb
, "expected %p got %p\n", psb
, osa2
.base_ios
.sb
);
4162 ok(osa2
.base_ios
.state
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, osa2
.base_ios
.state
);
4163 ok(osa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa2
.base_ios
.delbuf
);
4164 ok(osa2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, osa2
.base_ios
.tie
);
4165 ok(osa2
.base_ios
.flags
== 0xcdcdcdcd, "expected %d got %x\n", 0xcdcdcdcd, osa2
.base_ios
.flags
);
4166 ok(osa2
.base_ios
.precision
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, osa2
.base_ios
.precision
);
4167 ok(osa2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", osa2
.base_ios
.fill
);
4168 ok(osa2
.base_ios
.width
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, osa2
.base_ios
.width
);
4169 ok(osa2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, osa2
.base_ios
.do_lock
);
4170 call_func1(p_ostream_withassign_dtor
, &osa2
.base_ios
);
4171 osa1
.unknown
= 0xabababab;
4172 osa2
.unknown
= osa2
.base_ios
.delbuf
= 0xcdcdcdcd;
4173 posa
= call_func3(p_ostream_withassign_copy_ctor
, &osa1
, &osa2
, TRUE
);
4174 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4175 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4176 ok(osa1
.base_ios
.sb
== osa2
.base_ios
.sb
, "expected %p got %p\n", osa2
.base_ios
.sb
, osa1
.base_ios
.sb
);
4177 ok(osa1
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, osa1
.base_ios
.state
);
4178 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4179 ok(osa1
.base_ios
.tie
== osa2
.base_ios
.tie
, "expected %p got %p\n", osa2
.base_ios
.tie
, osa1
.base_ios
.tie
);
4180 ok(osa1
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, osa1
.base_ios
.flags
);
4181 ok(osa1
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.precision
);
4182 ok(osa1
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.fill
);
4183 ok(osa1
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.width
);
4184 ok(osa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", osa1
.base_ios
.do_lock
);
4185 call_func1(p_ostream_withassign_vbase_dtor
, &osa1
);
4186 osa1
.unknown
= 0xabababab;
4187 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4188 osa1
.base_ios
.state
|= IOSTATE_badbit
;
4189 osa1
.base_ios
.delbuf
= 0;
4190 pos
= osa1
.base_ios
.tie
;
4191 posa
= call_func3(p_ostream_withassign_copy_ctor
, &osa1
, &osa2
, FALSE
);
4192 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4193 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4194 ok(osa1
.base_ios
.sb
== osa2
.base_ios
.sb
, "expected %p got %p\n", osa2
.base_ios
.sb
, osa1
.base_ios
.sb
);
4195 ok(osa1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.state
);
4196 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4197 ok(osa1
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, osa1
.base_ios
.tie
);
4198 ok(osa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, osa1
.base_ios
.flags
);
4199 ok(osa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.precision
);
4200 ok(osa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", osa1
.base_ios
.fill
);
4201 ok(osa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.width
);
4202 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4203 call_func1(p_ostream_withassign_dtor
, &osa1
.base_ios
);
4204 osa1
.unknown
= 0xabababab;
4205 osa2
.base_ios
.sb
= NULL
;
4206 posa
= call_func3(p_ostream_withassign_copy_ctor
, &osa1
, &osa2
, TRUE
);
4207 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4208 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4209 ok(osa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.sb
);
4210 ok(osa1
.base_ios
.state
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, osa1
.base_ios
.state
);
4211 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4212 ok(osa1
.base_ios
.tie
== osa2
.base_ios
.tie
, "expected %p got %p\n", osa2
.base_ios
.tie
, osa1
.base_ios
.tie
);
4213 ok(osa1
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, osa1
.base_ios
.flags
);
4214 ok(osa1
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.precision
);
4215 ok(osa1
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.fill
);
4216 ok(osa1
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", osa1
.base_ios
.width
);
4217 ok(osa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", osa1
.base_ios
.do_lock
);
4218 call_func1(p_ostream_withassign_vbase_dtor
, &osa1
);
4219 osa1
.unknown
= 0xabababab;
4220 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4221 osa1
.base_ios
.delbuf
= 0;
4222 posa
= call_func3(p_ostream_withassign_copy_ctor
, &osa1
, &osa2
, FALSE
);
4223 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4224 ok(osa1
.unknown
== 0, "expected 0 got %d\n", osa1
.unknown
);
4225 ok(osa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.sb
);
4226 ok(osa1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
4227 0xabababab|IOSTATE_badbit
, osa1
.base_ios
.state
);
4228 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4229 ok(osa1
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, osa1
.base_ios
.tie
);
4230 ok(osa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, osa1
.base_ios
.flags
);
4231 ok(osa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.precision
);
4232 ok(osa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", osa1
.base_ios
.fill
);
4233 ok(osa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.width
);
4234 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4235 call_func1(p_ostream_withassign_dtor
, &osa1
.base_ios
);
4238 osa1
.unknown
= 0xabababab;
4239 osa1
.base_ios
.sb
= (streambuf
*) 0xabababab;
4240 if (0) /* crashes on native */
4241 osa1
.base_ios
.delbuf
= 0xabababab;
4242 posa
= call_func2(p_ostream_withassign_assign_sb
, &osa1
, &sb
);
4243 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4244 ok(osa1
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.unknown
);
4245 ok(osa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, osa1
.base_ios
.sb
);
4246 ok(osa1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, osa1
.base_ios
.state
);
4247 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4248 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4249 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4250 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4251 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4252 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4253 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4254 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4255 osa1
.base_ios
.delbuf
= 0;
4256 posa
= call_func2(p_ostream_withassign_assign_sb
, &osa1
, NULL
);
4257 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4258 ok(osa1
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.unknown
);
4259 ok(osa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.sb
);
4260 ok(osa1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, osa1
.base_ios
.state
);
4261 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4262 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4263 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4264 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4265 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4266 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4267 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4268 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4269 osa1
.base_ios
.delbuf
= 0;
4270 osa2
.base_ios
.sb
= &sb
;
4271 posa
= call_func2(p_ostream_withassign_assign_os
, &osa1
, &osa2
);
4272 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4273 ok(osa1
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.unknown
);
4274 ok(osa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, osa1
.base_ios
.sb
);
4275 ok(osa1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, osa1
.base_ios
.state
);
4276 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4277 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4278 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4279 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4280 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4281 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4282 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4283 memset(&osa1
.base_ios
, 0xab, sizeof(ios
));
4284 osa1
.base_ios
.delbuf
= 0;
4285 posa
= call_func2(p_ostream_withassign_assign
, &osa1
, &osa2
);
4286 ok(posa
== &osa1
, "wrong return, expected %p got %p\n", &osa1
, posa
);
4287 ok(osa1
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.unknown
);
4288 ok(osa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, osa1
.base_ios
.sb
);
4289 ok(osa1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, osa1
.base_ios
.state
);
4290 ok(osa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", osa1
.base_ios
.delbuf
);
4291 ok(osa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, osa1
.base_ios
.tie
);
4292 ok(osa1
.base_ios
.flags
== 0, "expected 0 got %x\n", osa1
.base_ios
.flags
);
4293 ok(osa1
.base_ios
.precision
== 6, "expected 6 got %d\n", osa1
.base_ios
.precision
);
4294 ok(osa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", osa1
.base_ios
.fill
);
4295 ok(osa1
.base_ios
.width
== 0, "expected 0 got %d\n", osa1
.base_ios
.width
);
4296 ok(osa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, osa1
.base_ios
.do_lock
);
4299 static void test_ostrstream(void)
4301 ostream os1
, os2
, *pos
, *pos2
;
4306 memset(&os1
, 0xab, sizeof(ostream
));
4307 memset(&os2
, 0xab, sizeof(ostream
));
4309 /* constructors/destructors */
4310 pos
= call_func2(p_ostrstream_ctor
, &os1
, TRUE
);
4311 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4312 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4313 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4314 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4315 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
4316 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4317 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
4318 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
4319 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
4320 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
4321 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
4322 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
4323 ok(pssb
->dynamic
== 1, "expected 1, got %d\n", pssb
->dynamic
);
4324 ok(pssb
->increase
== 1, "expected 1, got %d\n", pssb
->increase
);
4325 ok(pssb
->constant
== 0, "expected 0, got %d\n", pssb
->constant
);
4326 ok(pssb
->f_alloc
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_alloc
);
4327 ok(pssb
->f_free
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_free
);
4328 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4329 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4330 ok(pssb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pssb
->base
.base
);
4331 ok(pssb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pssb
->base
.ebuf
);
4332 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4333 call_func1(p_ostrstream_vbase_dtor
, &os1
);
4334 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
4335 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
4336 os1
.unknown
= 0xabababab;
4337 memset(&os1
.base_ios
, 0xab, sizeof(ios
));
4338 os1
.base_ios
.delbuf
= 0;
4339 pos
= call_func2(p_ostrstream_ctor
, &os1
, FALSE
);
4340 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4341 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4342 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4343 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4344 ok(os1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.state
);
4345 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4346 ok(os1
.base_ios
.tie
== os2
.base_ios
.tie
, "expected %p got %p\n", os2
.base_ios
.tie
, os1
.base_ios
.tie
);
4347 ok(os1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os1
.base_ios
.flags
);
4348 ok(os1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.precision
);
4349 ok(os1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os1
.base_ios
.fill
);
4350 ok(os1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.width
);
4351 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
4352 ok(pssb
->dynamic
== 1, "expected 1, got %d\n", pssb
->dynamic
);
4353 ok(pssb
->increase
== 1, "expected 1, got %d\n", pssb
->increase
);
4354 ok(pssb
->constant
== 0, "expected 0, got %d\n", pssb
->constant
);
4355 ok(pssb
->f_alloc
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_alloc
);
4356 ok(pssb
->f_free
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_free
);
4357 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4358 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4359 ok(pssb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pssb
->base
.base
);
4360 ok(pssb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pssb
->base
.ebuf
);
4361 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4362 call_func1(p_ostrstream_dtor
, &os1
.base_ios
);
4363 ok(os1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, os1
.base_ios
.sb
);
4364 ok(os1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.state
);
4365 call_func1(p_strstreambuf_dtor
, pssb
);
4366 p_operator_delete(pssb
);
4368 memset(&os1
, 0xab, sizeof(ostream
));
4369 pos
= call_func5(p_ostrstream_buffer_ctor
, &os1
, buffer
, 32, OPENMODE_in
|OPENMODE_out
, TRUE
);
4370 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4371 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4372 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4373 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4374 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
4375 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4376 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
4377 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
4378 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
4379 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
4380 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
4381 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
4382 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
4383 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
4384 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4385 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4386 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
4387 ok(pssb
->base
.ebuf
== buffer
+ 32, "wrong buffer end, expected %p got %p\n", buffer
+ 32, pssb
->base
.ebuf
);
4388 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
4389 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
4390 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
4391 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
4392 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
4393 ok(pssb
->base
.epptr
== buffer
+ 32, "wrong put end, expected %p got %p\n", buffer
+ 32, pssb
->base
.epptr
);
4394 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4395 call_func1(p_ostrstream_vbase_dtor
, &os1
);
4396 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
4397 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
4398 strcpy(buffer
, "Test");
4399 memset(&os1
, 0xab, sizeof(ostream
));
4400 pos
= call_func5(p_ostrstream_buffer_ctor
, &os1
, buffer
, 16, OPENMODE_ate
, TRUE
);
4401 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4402 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4403 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4404 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4405 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
4406 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4407 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
4408 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
4409 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
4410 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
4411 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
4412 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
4413 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
4414 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
4415 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4416 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4417 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
4418 ok(pssb
->base
.ebuf
== buffer
+ 16, "wrong buffer end, expected %p got %p\n", buffer
+ 16, pssb
->base
.ebuf
);
4419 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
4420 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
4421 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
4422 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
4423 ok(pssb
->base
.pptr
== buffer
+ 4, "wrong put pointer, expected %p got %p\n", buffer
+ 4, pssb
->base
.pptr
);
4424 ok(pssb
->base
.epptr
== buffer
+ 16, "wrong put end, expected %p got %p\n", buffer
+ 16, pssb
->base
.epptr
);
4425 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4426 call_func1(p_ostrstream_vbase_dtor
, &os1
);
4427 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
4428 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
4429 os1
.unknown
= 0xabababab;
4430 memset(&os1
.base_ios
, 0xab, sizeof(ios
));
4431 os1
.base_ios
.delbuf
= 0;
4432 pos
= call_func5(p_ostrstream_buffer_ctor
, &os1
, buffer
, -1, OPENMODE_app
, FALSE
);
4433 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4434 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4435 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4436 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4437 ok(os1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.state
);
4438 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4439 ok(os1
.base_ios
.tie
== os2
.base_ios
.tie
, "expected %p got %p\n", os2
.base_ios
.tie
, os1
.base_ios
.tie
);
4440 ok(os1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os1
.base_ios
.flags
);
4441 ok(os1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.precision
);
4442 ok(os1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os1
.base_ios
.fill
);
4443 ok(os1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.width
);
4444 ok(os1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.do_lock
);
4445 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
4446 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
4447 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4448 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4449 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
4450 ok(pssb
->base
.ebuf
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || pssb
->base
.ebuf
== (char*) -1,
4451 "wrong buffer end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, pssb
->base
.ebuf
);
4452 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
4453 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
4454 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
4455 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
4456 ok(pssb
->base
.pptr
== buffer
+ 4, "wrong put pointer, expected %p got %p\n", buffer
+ 4, pssb
->base
.pptr
);
4457 ok(pssb
->base
.epptr
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || pssb
->base
.epptr
== (char*) -1,
4458 "wrong buffer end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, pssb
->base
.epptr
);
4459 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4460 call_func1(p_ostrstream_dtor
, &os1
.base_ios
);
4461 ok(os1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, os1
.base_ios
.sb
);
4462 ok(os1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os1
.base_ios
.state
);
4463 call_func1(p_strstreambuf_dtor
, pssb
);
4464 p_operator_delete(pssb
);
4465 memset(&os1
, 0xab, sizeof(ostream
));
4466 pos
= call_func5(p_ostrstream_buffer_ctor
, &os1
, buffer
, 0, OPENMODE_trunc
, TRUE
);
4467 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4468 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4469 ok(os1
.unknown
== 0, "expected 0 got %d\n", os1
.unknown
);
4470 ok(os1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, os1
.base_ios
.sb
);
4471 ok(os1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os1
.base_ios
.state
);
4472 ok(os1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", os1
.base_ios
.delbuf
);
4473 ok(os1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.tie
);
4474 ok(os1
.base_ios
.flags
== 0, "expected 0 got %x\n", os1
.base_ios
.flags
);
4475 ok(os1
.base_ios
.precision
== 6, "expected 6 got %d\n", os1
.base_ios
.precision
);
4476 ok(os1
.base_ios
.fill
== ' ', "expected 32 got %d\n", os1
.base_ios
.fill
);
4477 ok(os1
.base_ios
.width
== 0, "expected 0 got %d\n", os1
.base_ios
.width
);
4478 ok(os1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os1
.base_ios
.do_lock
);
4479 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
4480 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
4481 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
4482 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
4483 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
4484 ok(pssb
->base
.ebuf
== buffer
+ 4, "wrong buffer end, expected %p got %p\n", buffer
+ 4, pssb
->base
.ebuf
);
4485 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
4486 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
4487 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
4488 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
4489 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
4490 ok(pssb
->base
.epptr
== buffer
+ 4, "wrong put end, expected %p got %p\n", buffer
+ 4, pssb
->base
.epptr
);
4491 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
4492 call_func1(p_ostrstream_vbase_dtor
, &os1
);
4493 ok(os1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os1
.base_ios
.sb
);
4494 ok(os1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os1
.base_ios
.state
);
4496 os1
.unknown
= 0xcdcdcdcd;
4497 memset(&os1
.base_ios
, 0xcd, sizeof(ios
));
4498 pos
= call_func3(p_ostrstream_copy_ctor
, &os2
, &os1
, TRUE
);
4499 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
4500 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
4501 ok(os2
.base_ios
.sb
== os1
.base_ios
.sb
, "expected %p got %p\n", os1
.base_ios
.sb
, os2
.base_ios
.sb
);
4502 ok(os2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, os2
.base_ios
.state
);
4503 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
4504 ok(os2
.base_ios
.tie
== os1
.base_ios
.tie
, "expected %p got %p\n", os1
.base_ios
.tie
, os2
.base_ios
.tie
);
4505 ok(os2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, os2
.base_ios
.flags
);
4506 ok(os2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.precision
);
4507 ok(os2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.fill
);
4508 ok(os2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.width
);
4509 ok(os2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os2
.base_ios
.do_lock
);
4510 call_func1(p_ostrstream_vbase_dtor
, &os2
);
4511 ok(os2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.sb
);
4512 ok(os2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os2
.base_ios
.state
);
4513 os2
.unknown
= 0xabababab;
4514 memset(&os2
.base_ios
, 0xab, sizeof(ios
));
4515 os2
.base_ios
.delbuf
= 0;
4516 pos2
= os2
.base_ios
.tie
;
4517 pos
= call_func3(p_ostrstream_copy_ctor
, &os2
, &os1
, FALSE
);
4518 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
4519 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
4520 ok(os2
.base_ios
.sb
== os1
.base_ios
.sb
, "expected %p got %p\n", os1
.base_ios
.sb
, os2
.base_ios
.sb
);
4521 ok(os2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.state
);
4522 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
4523 ok(os2
.base_ios
.tie
== pos2
, "expected %p got %p\n", pos2
, os2
.base_ios
.tie
);
4524 ok(os2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, os2
.base_ios
.flags
);
4525 ok(os2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.precision
);
4526 ok(os2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", os2
.base_ios
.fill
);
4527 ok(os2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.width
);
4528 ok(os2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.do_lock
);
4529 call_func1(p_ostrstream_dtor
, &os2
.base_ios
);
4530 os1
.base_ios
.sb
= NULL
;
4531 memset(&os2
, 0xab, sizeof(ostream
));
4532 pos
= call_func3(p_ostrstream_copy_ctor
, &os2
, &os1
, TRUE
);
4533 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
4534 ok(os2
.unknown
== 0, "expected 0 got %d\n", os2
.unknown
);
4535 ok(os2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.sb
);
4536 ok(os2
.base_ios
.state
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, os2
.base_ios
.state
);
4537 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
4538 ok(os2
.base_ios
.tie
== os1
.base_ios
.tie
, "expected %p got %p\n", os1
.base_ios
.tie
, os2
.base_ios
.tie
);
4539 ok(os2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, os2
.base_ios
.flags
);
4540 ok(os2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.precision
);
4541 ok(os2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.fill
);
4542 ok(os2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", os2
.base_ios
.width
);
4543 ok(os2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", os2
.base_ios
.do_lock
);
4544 call_func1(p_ostrstream_vbase_dtor
, &os2
);
4547 os2
.unknown
= 0xabababab;
4548 memset(&os2
.base_ios
, 0xab, sizeof(ios
));
4549 os2
.base_ios
.delbuf
= 0;
4550 pos
= call_func2(p_ostrstream_assign
, &os2
, &os1
);
4551 ok(pos
== &os2
, "wrong return, expected %p got %p\n", &os2
, pos
);
4552 ok(os2
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.unknown
);
4553 ok(os2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.sb
);
4554 ok(os2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, os2
.base_ios
.state
);
4555 ok(os2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", os2
.base_ios
.delbuf
);
4556 ok(os2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, os2
.base_ios
.tie
);
4557 ok(os2
.base_ios
.flags
== 0, "expected %x got %x\n", 0, os2
.base_ios
.flags
);
4558 ok(os2
.base_ios
.precision
== 6, "expected 6 got %d\n", os2
.base_ios
.precision
);
4559 ok(os2
.base_ios
.fill
== ' ', "expected 32 got %d\n", os2
.base_ios
.fill
);
4560 ok(os2
.base_ios
.width
== 0, "expected 0 got %d\n", os2
.base_ios
.width
);
4561 ok(os2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, os2
.base_ios
.do_lock
);
4564 pos
= call_func2(p_ostrstream_ctor
, &os1
, TRUE
);
4565 ok(pos
== &os1
, "wrong return, expected %p got %p\n", &os1
, pos
);
4566 ret
= (int) call_func1(p_ostrstream_pcount
, &os1
);
4567 ok(ret
== 0, "expected 0 got %d\n", ret
);
4568 pssb
= (strstreambuf
*) os1
.base_ios
.sb
;
4569 pssb
->base
.pptr
= (char*) 5;
4570 ret
= (int) call_func1(p_ostrstream_pcount
, &os1
);
4571 ok(ret
== 5, "expected 5 got %d\n", ret
);
4572 pssb
->base
.pbase
= (char*) 2;
4573 ret
= (int) call_func1(p_ostrstream_pcount
, &os1
);
4574 ok(ret
== 3, "expected 3 got %d\n", ret
);
4575 pssb
->base
.pptr
= NULL
;
4576 ret
= (int) call_func1(p_ostrstream_pcount
, &os1
);
4577 ok(ret
== 0, "expected 0 got %d\n", ret
);
4578 if (0) /* crashes on native */
4579 os1
.base_ios
.sb
= NULL
;
4580 pssb
->base
.pptr
= (char*) 1;
4581 ret
= (int) call_func1(p_ostrstream_pcount
, &os1
);
4582 ok(ret
== 0, "expected 0 got %d\n", ret
);
4583 call_func1(p_ostrstream_vbase_dtor
, &os1
);
4586 static void test_ofstream(void)
4588 const char *filename
= "ofstream_test";
4589 ostream ofs
, ofs_copy
, *pofs
;
4596 memset(&ofs
, 0xab, sizeof(ostream
));
4598 /* constructors/destructors */
4599 pofs
= call_func2(p_ofstream_ctor
, &ofs
, TRUE
);
4600 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4601 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4602 ok(ofs
.unknown
== 0, "expected 0 got %d\n", ofs
.unknown
);
4603 ok(ofs
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ofs
.base_ios
.sb
);
4604 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4605 ok(ofs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ofs
.base_ios
.delbuf
);
4606 ok(ofs
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ofs
.base_ios
.tie
);
4607 ok(ofs
.base_ios
.flags
== 0x0, "expected %x got %x\n", 0x0, ofs
.base_ios
.flags
);
4608 ok(ofs
.base_ios
.precision
== 6, "expected 6 got %d\n", ofs
.base_ios
.precision
);
4609 ok(ofs
.base_ios
.fill
== ' ', "expected 32 got %d\n", ofs
.base_ios
.fill
);
4610 ok(ofs
.base_ios
.width
== 0, "expected 0 got %d\n", ofs
.base_ios
.width
);
4611 ok(ofs
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ofs
.base_ios
.do_lock
);
4612 ok(pfb
->fd
== -1, "wrong fd, expected -1 got %d\n", pfb
->fd
);
4613 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
4614 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
4615 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
4616 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
4617 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
4618 ok(pfb
->fd
== -1, "wrong fd, expected 0 got %d\n", pfb
->fd
);
4619 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4621 pofs
= call_func3(p_ofstream_fd_ctor
, &ofs
, 42, TRUE
);
4622 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4623 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4624 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4625 ok(ofs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ofs
.base_ios
.delbuf
);
4626 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
4627 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
4628 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
4629 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
4630 ok(pfb
->fd
== 42, "wrong fd, expected 42 got %d\n", pfb
->fd
);
4631 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
4633 pofs
= call_func3(p_ofstream_copy_ctor
, &ofs_copy
, &ofs
, TRUE
);
4634 pfb
= (filebuf
*) ofs_copy
.base_ios
.sb
;
4635 ok(pofs
== &ofs_copy
, "wrong return, expected %p got %p\n", &ofs_copy
, pofs
);
4636 ok(ofs_copy
.base_ios
.sb
== ofs
.base_ios
.sb
, "expected shared streambuf\n");
4637 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4638 ok(ofs_copy
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs_copy
.base_ios
.state
);
4640 call_func1(p_ofstream_vbase_dtor
, &ofs_copy
);
4641 call_func1(p_ofstream_dtor
, &ofs
.base_ios
);
4643 pofs
= call_func5(p_ofstream_buffer_ctor
, &ofs
, 53, buffer
, ARRAY_SIZE(buffer
), TRUE
);
4644 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4645 ok(ofs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ofs
.base_ios
.delbuf
);
4646 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4647 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4648 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
4649 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
4650 ok(pfb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pfb
->base
.base
);
4651 ok(pfb
->base
.ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), pfb
->base
.ebuf
);
4652 ok(pfb
->fd
== 53, "wrong fd, expected 53 got %d\n", pfb
->fd
);
4653 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
4654 call_func1(p_ofstream_dtor
, &ofs
.base_ios
);
4656 pofs
= call_func5(p_ofstream_buffer_ctor
, &ofs
, 64, NULL
, 0, TRUE
);
4657 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4658 ok(ofs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ofs
.base_ios
.delbuf
);
4659 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4660 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4661 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4662 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
4663 ok(pfb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pfb
->base
.unbuffered
);
4664 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
4665 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
4666 ok(pfb
->fd
== 64, "wrong fd, expected 64 got %d\n", pfb
->fd
);
4667 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
4668 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4670 pofs
= call_func5(p_ofstream_open_ctor
, &ofs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
4671 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4672 ok(ofs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ofs
.base_ios
.delbuf
);
4673 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4674 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4675 ok(pfb
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pfb
->base
.allocated
);
4676 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
4677 ok(pfb
->base
.base
!= NULL
, "wrong buffer, expected not %p got %p\n", NULL
, pfb
->base
.base
);
4678 ok(pfb
->base
.ebuf
!= NULL
, "wrong ebuf, expected not %p got %p\n", NULL
, pfb
->base
.ebuf
);
4679 ok(pfb
->fd
!= -1, "wrong fd, expected not -1 got %d\n", pfb
->fd
);
4681 ok(pfb
->close
== 1, "wrong value, expected 1 got %d\n", pfb
->close
);
4682 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4683 ok(_close(fd
) == -1, "expected ofstream to close opened file\n");
4684 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
4687 call_func5(p_ofstream_buffer_ctor
, &ofs
, -1, NULL
, 0, TRUE
);
4688 ok(ofs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4689 ok(ofs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4690 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4691 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4693 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
, ARRAY_SIZE(buffer
));
4694 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4695 ok(ofs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ofs
.base_ios
.sb
->base
);
4696 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4697 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4698 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4699 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4701 psb
= call_func3(p_ofstream_setbuf
, &ofs
, NULL
, 0);
4702 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4703 ok(ofs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ofs
.base_ios
.sb
->base
);
4704 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4705 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4706 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4707 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4708 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4710 call_func2(p_ofstream_ctor
, &ofs
, TRUE
);
4711 ok(ofs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4712 ok(ofs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4713 ok(ofs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4714 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4715 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4717 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
, ARRAY_SIZE(buffer
));
4718 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4719 ok(ofs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ofs
.base_ios
.sb
->base
);
4720 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4721 ok(ofs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4722 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4723 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4725 psb
= call_func3(p_ofstream_setbuf
, &ofs
, NULL
, 0);
4726 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4727 ok(ofs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ofs
.base_ios
.sb
->base
);
4728 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4729 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4730 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4731 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4733 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
+ 8, ARRAY_SIZE(buffer
) - 8);
4734 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4735 ok(ofs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, ofs
.base_ios
.sb
->base
);
4736 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4737 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4738 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4739 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4741 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
+ 8, 0);
4742 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4743 ok(ofs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, ofs
.base_ios
.sb
->base
);
4744 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4745 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4746 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4747 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4749 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
+ 4, ARRAY_SIZE(buffer
) - 4);
4750 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4751 ok(ofs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, ofs
.base_ios
.sb
->base
);
4752 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4753 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4754 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4755 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4757 psb
= call_func3(p_ofstream_setbuf
, &ofs
, NULL
, 5);
4758 ok(psb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, psb
);
4759 ok(ofs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, ofs
.base_ios
.sb
->base
);
4760 ok(ofs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ofs
.base_ios
.sb
->ebuf
);
4761 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4762 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4763 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4764 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4766 /* setbuf - seems to be a nop and always return NULL in those other cases */
4767 pofs
= call_func5(p_ofstream_buffer_ctor
, &ofs
, 42, NULL
, 0, TRUE
);
4768 ok(ofs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4769 ok(ofs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4770 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4771 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4773 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4774 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
, ARRAY_SIZE(buffer
));
4775 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
4776 ok(ofs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4777 ok(ofs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4778 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4779 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4780 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
4782 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4783 psb
= call_func3(p_ofstream_setbuf
, &ofs
, NULL
, 0);
4784 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
4785 ok(ofs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4786 ok(ofs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4787 ok(ofs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4788 ok(ofs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ofs
.base_ios
.sb
->allocated
);
4789 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
4790 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4792 pofs
= call_func5(p_ofstream_open_ctor
, &ofs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
4793 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4794 psb
= call_func3(p_ofstream_setbuf
, &ofs
, NULL
, 0);
4795 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
4796 ok(ofs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4797 ok(ofs
.base_ios
.sb
->ebuf
!= NULL
, "wrong ebuf value, expected NULL got %p\n", ofs
.base_ios
.sb
->ebuf
);
4798 ok(ofs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4799 ok(ofs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", ofs
.base_ios
.sb
->allocated
);
4800 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
4802 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4803 psb
= call_func3(p_ofstream_setbuf
, &ofs
, buffer
, ARRAY_SIZE(buffer
));
4804 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
4805 ok(ofs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", ofs
.base_ios
.sb
->base
);
4806 ok(ofs
.base_ios
.sb
->base
!= buffer
, "wrong base value, expected not %p got %p\n", buffer
, ofs
.base_ios
.sb
->base
);
4807 ok(ofs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ofs
.base_ios
.sb
->unbuffered
);
4808 ok(ofs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", ofs
.base_ios
.sb
->allocated
);
4809 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
4810 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4811 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
4814 pofs
= call_func2(p_ofstream_ctor
, &ofs
, TRUE
);
4815 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4816 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4817 call_func2(p_ofstream_attach
, &ofs
, 42);
4818 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "attaching on vanilla stream set some state bits\n");
4819 fd
= (int) call_func1(p_ofstream_fd
, &ofs
);
4820 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
4821 ok(pfb
->close
== 0, "wrong close value, expected 0 got %d\n", pfb
->close
);
4822 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4823 call_func2(p_ofstream_attach
, &ofs
, 53);
4824 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
4825 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
4826 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4829 pofs
= call_func2(p_ofstream_ctor
, &ofs
, TRUE
);
4830 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4831 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4832 fd
= (int) call_func1(p_ofstream_fd
, &ofs
);
4833 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4834 ok(fd
== -1, "wrong fd, expected -1 but got %d\n", fd
);
4835 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4837 pofs
= call_func5(p_ofstream_open_ctor
, &ofs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
4838 pfb
= (filebuf
*) ofs
.base_ios
.sb
;
4839 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4840 fd
= (int) call_func1(p_ofstream_fd
, &ofs
);
4841 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4842 ok(fd
== pfb
->fd
, "wrong fd, expected %d but got %d\n", pfb
->fd
, fd
);
4845 pfb
= (filebuf
*) call_func1(p_ofstream_rdbuf
, &ofs
);
4846 ok((streambuf
*) pfb
== ofs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ofs
.base_ios
.sb
, pfb
);
4847 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4850 ret
= (int) call_func2(p_ofstream_setmode
, &ofs
, filebuf_binary
);
4851 ok(ret
== filebuf_text
, "wrong return, expected %d got %d\n", filebuf_text
, ret
);
4852 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4853 ret
= (int) call_func2(p_ofstream_setmode
, &ofs
, filebuf_binary
);
4854 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
4855 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4856 ret
= (int) call_func2(p_ofstream_setmode
, &ofs
, filebuf_text
);
4857 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
4858 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4859 ret
= (int) call_func2(p_ofstream_setmode
, &ofs
, 0x9000);
4860 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
4861 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ofs
.base_ios
.state
);
4863 /* close && is_open */
4864 ok((int) call_func1(p_ofstream_is_open
, &ofs
) == 1, "expected ofstream to be open\n");
4865 ofs
.base_ios
.state
= IOSTATE_eofbit
| IOSTATE_failbit
;
4866 call_func1(p_ofstream_close
, &ofs
);
4867 ok(ofs
.base_ios
.state
== IOSTATE_goodbit
, "close did not clear state = %d\n", ofs
.base_ios
.state
);
4868 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4869 call_func1(p_ofstream_close
, &ofs
);
4870 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "close on a closed stream did not set failbit\n");
4871 ok((int) call_func1(p_ofstream_is_open
, &ofs
) == 0, "expected ofstream to not be open\n");
4872 ok(_close(fd
) == -1, "expected close to close the opened file\n");
4875 ofs
.base_ios
.state
= IOSTATE_eofbit
;
4876 call_func4(p_ofstream_open
, &ofs
, filename
, OPENMODE_out
, filebuf_openprot
);
4877 fd
= (int) call_func1(p_ofstream_fd
, &ofs
);
4878 ok(fd
!= -1, "wrong fd, expected not -1 got %d\n", fd
);
4879 ok(ofs
.base_ios
.state
== IOSTATE_eofbit
, "open did not succeed\n");
4880 call_func4(p_ofstream_open
, &ofs
, filename
, OPENMODE_out
, filebuf_openprot
);
4881 ok(ofs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "second open did not set failbit\n");
4882 call_func1(p_ofstream_close
, &ofs
);
4884 /* integration with parent ostream - writing */
4885 ofs
.base_ios
.state
= IOSTATE_goodbit
; /* open doesn't clear the state */
4886 call_func4(p_ofstream_open
, &ofs
, filename
, OPENMODE_in
, filebuf_openprot
); /* make sure that OPENMODE_out is implicit */
4887 pofs
= call_func2(p_ostream_print_str
, &ofs
, "test ");
4888 ok(pofs
== &ofs
, "stream operation returned wrong pointer, expected %p got %p\n", &ofs
, pofs
);
4889 pofs
= call_func2(p_ostream_print_int
, &ofs
, 12);
4890 ok(pofs
== &ofs
, "stream operation returned wrong pointer, expected %p got %p\n", &ofs
, pofs
);
4891 call_func1(p_ofstream_close
, &ofs
);
4893 /* read what we wrote */
4894 memset(st
, 'A', sizeof(st
));
4896 fd
= _open(filename
, _O_RDONLY
, _S_IREAD
);
4897 ok(fd
!= -1, "_open failed\n");
4898 ok(_read(fd
, st
, 7) == 7, "_read failed\n");
4899 ok(_close(fd
) == 0, "_close failed\n");
4900 ok(!strcmp(st
, "test 12"), "expected 'test 12' got '%s'\n", st
);
4901 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4902 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
4904 /* make sure that OPENMODE_out is implicit with open_ctor */
4905 pofs
= call_func5(p_ofstream_open_ctor
, &ofs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
4906 ok(pofs
== &ofs
, "wrong return, expected %p got %p\n", &ofs
, pofs
);
4907 pofs
= call_func2(p_ostream_print_str
, &ofs
, "test ");
4908 ok(pofs
== &ofs
, "stream operation returned wrong pointer, expected %p got %p\n", &ofs
, pofs
);
4909 pofs
= call_func2(p_ostream_print_int
, &ofs
, 12);
4910 ok(pofs
== &ofs
, "stream operation returned wrong pointer, expected %p got %p\n", &ofs
, pofs
);
4911 call_func1(p_ofstream_close
, &ofs
);
4913 memset(st
, 'A', sizeof(st
));
4915 fd
= _open(filename
, _O_RDONLY
, _S_IREAD
);
4916 ok(fd
!= -1, "_open failed\n");
4917 ok(_read(fd
, st
, 7) == 7, "_read failed\n");
4918 ok(_close(fd
) == 0, "_close failed\n");
4919 ok(!strcmp(st
, "test 12"), "expected 'test 12' got '%s'\n", st
);
4920 call_func1(p_ofstream_vbase_dtor
, &ofs
);
4921 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
4924 static void test_istream(void)
4926 istream is1
, is2
, *pis
;
4928 filebuf fb1
, fb2
, *pfb
;
4929 const char filename1
[] = "test1";
4930 const char filename2
[] = "test2";
4934 memset(&is1
, 0xab, sizeof(istream
));
4935 memset(&is2
, 0xab, sizeof(istream
));
4936 memset(&fb1
, 0xab, sizeof(filebuf
));
4937 memset(&fb2
, 0xab, sizeof(filebuf
));
4939 /* constructors/destructors */
4940 pis
= call_func3(p_istream_sb_ctor
, &is1
, NULL
, TRUE
);
4941 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
4942 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
4943 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
4944 ok(is1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.sb
);
4945 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
4946 ok(is1
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is1
.base_ios
.flags
);
4947 call_func1(p_istream_vbase_dtor
, &is1
);
4948 is1
.extract_delim
= is1
.count
= 0xabababab;
4949 memset(&is1
.base_ios
, 0xab, sizeof(ios
));
4950 is1
.base_ios
.delbuf
= 0;
4951 pis
= call_func3(p_istream_sb_ctor
, &is1
, NULL
, FALSE
);
4952 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
4953 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
4954 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
4955 ok(is1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.sb
);
4956 ok(is1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
4957 0xabababab|IOSTATE_badbit
, is1
.base_ios
.state
);
4958 ok(is1
.base_ios
.flags
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.flags
);
4959 call_func1(p_istream_dtor
, &is1
.base_ios
);
4960 pis
= call_func3(p_istream_sb_ctor
, &is1
, &fb1
.base
, FALSE
);
4961 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
4962 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
4963 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
4964 ok(is1
.base_ios
.sb
== &fb1
.base
, "expected %p got %p\n", &fb1
.base
, is1
.base_ios
.sb
);
4965 ok(is1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.state
);
4966 ok(is1
.base_ios
.flags
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.flags
);
4967 call_func1(p_istream_dtor
, &is1
.base_ios
);
4968 call_func1(p_filebuf_ctor
, &fb1
);
4969 pfb
= call_func4(p_filebuf_open
, &fb1
, filename1
, OPENMODE_in
|OPENMODE_out
, filebuf_openprot
);
4970 ok(pfb
== &fb1
, "wrong return, expected %p got %p\n", &fb1
, pfb
);
4971 ok(fb1
.base
.allocated
== 1, "expected %d got %d\n", 1, fb1
.base
.allocated
);
4972 pis
= call_func3(p_istream_sb_ctor
, &is1
, &fb1
.base
, TRUE
);
4973 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
4974 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
4975 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
4976 ok(is1
.base_ios
.sb
== &fb1
.base
, "expected %p got %p\n", &fb1
.base
, is1
.base_ios
.sb
);
4977 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
4978 ok(is1
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is1
.base_ios
.flags
);
4979 pis
= call_func2(p_istream_ctor
, &is2
, TRUE
);
4980 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
4981 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
4982 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
4983 ok(is2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.sb
);
4984 ok(is2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is2
.base_ios
.state
);
4985 ok(is2
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is2
.base_ios
.flags
);
4986 call_func1(p_istream_vbase_dtor
, &is2
);
4987 is2
.extract_delim
= is2
.count
= 0xabababab;
4988 memset(&is2
.base_ios
, 0xab, sizeof(ios
));
4989 is2
.base_ios
.flags
&= ~FLAGS_skipws
;
4990 pis
= call_func2(p_istream_ctor
, &is2
, FALSE
);
4991 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
4992 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
4993 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
4994 ok(is2
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is2
.base_ios
.sb
);
4995 ok(is2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.state
);
4996 ok(is2
.base_ios
.flags
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.flags
);
4997 call_func1(p_istream_dtor
, &is2
.base_ios
);
4998 is1
.extract_delim
= is1
.count
= 0xcdcdcdcd;
4999 is1
.base_ios
.state
= 0xcdcdcdcd;
5000 is1
.base_ios
.flags
&= ~FLAGS_skipws
;
5001 is2
.extract_delim
= is2
.count
= 0xabababab;
5002 memset(&is2
.base_ios
, 0xab, sizeof(ios
));
5003 is2
.base_ios
.flags
&= ~FLAGS_skipws
;
5004 is2
.base_ios
.delbuf
= 0;
5005 pis
= call_func3(p_istream_copy_ctor
, &is2
, &is1
, FALSE
);
5006 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
5007 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
5008 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
5009 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
5010 ok(is2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.state
);
5011 ok(is2
.base_ios
.flags
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.flags
);
5012 call_func1(p_istream_dtor
, &is2
.base_ios
);
5013 is2
.extract_delim
= is2
.count
= 0xabababab;
5014 memset(&is2
.base_ios
, 0xab, sizeof(ios
));
5015 pis
= call_func3(p_istream_copy_ctor
, &is2
, &is1
, TRUE
);
5016 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
5017 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
5018 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
5019 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
5020 ok(is2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is2
.base_ios
.state
);
5021 ok(is2
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is2
.base_ios
.flags
);
5024 is2
.extract_delim
= is2
.count
= 0xabababab;
5025 is2
.base_ios
.sb
= (streambuf
*) 0xabababab;
5026 is2
.base_ios
.state
= 0xabababab;
5027 is2
.base_ios
.special
[0] = 0xabababab;
5028 is2
.base_ios
.delbuf
= 0;
5029 is2
.base_ios
.tie
= (ostream
*) 0xabababab;
5030 is2
.base_ios
.flags
= 0xabababab;
5031 is2
.base_ios
.precision
= 0xabababab;
5032 is2
.base_ios
.width
= 0xabababab;
5033 pis
= call_func2(p_istream_assign
, &is2
, &is1
);
5034 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
5035 ok(is2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.extract_delim
);
5036 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
5037 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
5038 ok(is2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is2
.base_ios
.state
);
5039 ok(is2
.base_ios
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.fill
);
5040 ok(is2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", is2
.base_ios
.delbuf
);
5041 ok(is2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.tie
);
5042 ok(is2
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is2
.base_ios
.flags
);
5043 ok(is2
.base_ios
.precision
== 6, "expected 6 got %d\n", is2
.base_ios
.precision
);
5044 ok(is2
.base_ios
.width
== 0, "expected 0 got %d\n", is2
.base_ios
.width
);
5045 if (0) /* crashes on native */
5046 pis
= call_func2(p_istream_assign
, &is2
, NULL
);
5047 is2
.extract_delim
= is2
.count
= 0xabababab;
5048 is2
.base_ios
.sb
= (streambuf
*) 0xabababab;
5049 is2
.base_ios
.state
= 0xabababab;
5050 is2
.base_ios
.special
[0] = 0xabababab;
5051 is2
.base_ios
.delbuf
= 0;
5052 is2
.base_ios
.tie
= (ostream
*) 0xabababab;
5053 is2
.base_ios
.flags
= 0xabababab;
5054 is2
.base_ios
.precision
= 0xabababab;
5055 is2
.base_ios
.width
= 0xabababab;
5056 pis
= call_func2(p_istream_assign_sb
, &is2
, NULL
);
5057 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
5058 ok(is2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.extract_delim
);
5059 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
5060 ok(is2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.sb
);
5061 ok(is2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is2
.base_ios
.state
);
5062 ok(is2
.base_ios
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.fill
);
5063 ok(is2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", is2
.base_ios
.delbuf
);
5064 ok(is2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.tie
);
5065 ok(is2
.base_ios
.flags
== FLAGS_skipws
, "expected %d got %d\n", FLAGS_skipws
, is2
.base_ios
.flags
);
5066 ok(is2
.base_ios
.precision
== 6, "expected 6 got %d\n", is2
.base_ios
.precision
);
5067 ok(is2
.base_ios
.width
== 0, "expected 0 got %d\n", is2
.base_ios
.width
);
5068 call_func1(p_filebuf_ctor
, &fb2
);
5069 pfb
= call_func4(p_filebuf_open
, &fb2
, filename2
, OPENMODE_in
|OPENMODE_out
, filebuf_openprot
);
5070 ok(pfb
== &fb2
, "wrong return, expected %p got %p\n", &fb2
, pfb
);
5071 ok(fb2
.base
.allocated
== 1, "expected %d got %d\n", 1, fb2
.base
.allocated
);
5072 pis
= call_func2(p_istream_assign_sb
, &is2
, &fb2
.base
);
5073 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
5074 ok(is2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.extract_delim
);
5075 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
5076 ok(is2
.base_ios
.sb
== &fb2
.base
, "expected %p got %p\n", &fb2
.base
, is2
.base_ios
.sb
);
5077 ok(is2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is2
.base_ios
.state
);
5080 is1
.extract_delim
= is1
.count
= 0;
5081 if (0) /* crashes on native */
5082 is1
.base_ios
.sb
= NULL
;
5083 is1
.base_ios
.state
= IOSTATE_badbit
;
5084 is1
.base_ios
.flags
= 0;
5085 call_func1(p_istream_eatwhite
, &is1
);
5086 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_eofbit
), "expected %d got %d\n",
5087 IOSTATE_badbit
|IOSTATE_eofbit
, is1
.base_ios
.state
);
5088 is1
.base_ios
.state
= IOSTATE_failbit
;
5089 call_func1(p_istream_eatwhite
, &is1
);
5090 ok(is1
.base_ios
.state
== (IOSTATE_failbit
|IOSTATE_eofbit
), "expected %d got %d\n",
5091 IOSTATE_failbit
|IOSTATE_eofbit
, is1
.base_ios
.state
);
5092 is1
.base_ios
.state
= IOSTATE_goodbit
;
5093 ret
= (int) call_func3(p_streambuf_xsputn
, &fb1
.base
, "And if \tyou ask\n\v\f\r me", 23);
5094 ok(ret
== 23, "expected 23 got %d\n", ret
);
5095 ok(fb1
.base
.pbase
== fb1
.base
.base
, "wrong put base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.pbase
);
5096 ok(fb1
.base
.pptr
== fb1
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", fb1
.base
.base
+ 23, fb1
.base
.pptr
);
5097 call_func1(p_istream_eatwhite
, &is1
);
5098 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5099 ok(fb1
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb1
.base
.pbase
);
5100 ok(fb1
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb1
.base
.pptr
);
5101 ok(fb1
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb1
.base
.epptr
);
5102 is1
.base_ios
.state
= IOSTATE_goodbit
;
5103 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 0, SEEKDIR_beg
, 0);
5104 ok(ret
== 0, "expected 0 got %d\n", ret
);
5105 call_func1(p_istream_eatwhite
, &is1
);
5106 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5107 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5108 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
5109 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 23, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 23, fb1
.base
.egptr
);
5110 ret
= (int) call_func4(p_filebuf_seekoff
, &fb1
, 3, SEEKDIR_beg
, 0);
5111 ok(ret
== 3, "expected 3 got %d\n", ret
);
5112 call_func1(p_istream_eatwhite
, &is1
);
5113 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5114 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5115 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 1, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 1, fb1
.base
.gptr
);
5116 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 20, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 20, fb1
.base
.egptr
);
5118 call_func1(p_istream_eatwhite
, &is1
);
5119 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5120 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5121 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5122 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 20, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 20, fb1
.base
.egptr
);
5124 call_func1(p_istream_eatwhite
, &is1
);
5125 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5126 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5127 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 18, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 18, fb1
.base
.gptr
);
5128 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 20, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 20, fb1
.base
.egptr
);
5130 call_func1(p_istream_eatwhite
, &is1
);
5131 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5132 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5133 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5134 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5137 is1
.count
= 0xabababab;
5138 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 0);
5139 ok(ret
== 0, "expected 0 got %d\n", ret
);
5140 ok(is1
.count
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.count
);
5141 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5142 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5143 is1
.base_ios
.state
= IOSTATE_badbit
;
5144 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 1);
5145 ok(ret
== 0, "expected 0 got %d\n", ret
);
5146 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5147 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5148 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5149 if (0) /* crashes on native */
5150 is1
.base_ios
.sb
= NULL
;
5151 is1
.base_ios
.state
= IOSTATE_goodbit
;
5152 is1
.base_ios
.tie
= &os
;
5153 pos
= call_func3(p_ostream_sb_ctor
, &os
, &fb2
.base
, TRUE
);
5154 ok(pos
== &os
, "wrong return, expected %p got %p\n", &os
, pos
);
5155 ret
= (int) call_func3(p_streambuf_xsputn
, &fb2
.base
, "how I'm feeling", 15);
5156 ok(ret
== 15, "expected 15 got %d\n", ret
);
5157 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5158 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 15, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 15, fb2
.base
.pptr
);
5160 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 0);
5161 ok(ret
== 1, "expected 1 got %d\n", ret
);
5162 ok(is1
.count
== -1, "expected -1 got %d\n", is1
.count
);
5163 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5164 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5165 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5166 ret
= (int) call_func3(p_streambuf_xsputn
, &fb2
.base
, "Don't tell me", 13);
5167 ok(ret
== 13, "expected 13 got %d\n", ret
);
5168 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5169 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 13, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 13, fb2
.base
.pptr
);
5170 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 1);
5171 ok(ret
== 1, "expected 1 got %d\n", ret
);
5172 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5173 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5174 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5175 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5176 ret
= (int) call_func3(p_streambuf_xsputn
, &fb2
.base
, "you're too blind to see", 23);
5177 ok(ret
== 23, "expected 23 got %d\n", ret
);
5178 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5179 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 23, fb2
.base
.pptr
);
5180 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5181 fb1
.base
.egptr
= fb1
.base
.base
+ 15;
5182 strcpy(fb1
.base
.eback
, "Never \t gonna ");
5183 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 1);
5184 ok(ret
== 1, "expected 1 got %d\n", ret
);
5185 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5186 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5187 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 23, fb2
.base
.pptr
);
5188 fb1
.base
.gptr
= fb1
.base
.base
+ 4;
5190 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 11);
5191 ok(ret
== 1, "expected 1 got %d\n", ret
);
5192 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5193 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5194 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5195 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 23, fb2
.base
.pptr
);
5198 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 12);
5199 ok(ret
== 1, "expected 1 got %d\n", ret
);
5200 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5201 ok(os
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, os
.base_ios
.state
);
5202 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5203 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 23, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 23, fb2
.base
.pptr
);
5204 os
.base_ios
.state
= IOSTATE_goodbit
;
5206 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 12);
5207 ok(ret
== 1, "expected 1 got %d\n", ret
);
5208 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5209 ok(os
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, os
.base_ios
.state
);
5210 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5211 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5212 is1
.base_ios
.flags
= 0;
5213 fb1
.base
.gptr
= fb1
.base
.base
+ 5;
5214 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 0);
5215 ok(ret
== 1, "expected 1 got %d\n", ret
);
5216 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5217 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5218 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 1);
5219 ok(ret
== 1, "expected 1 got %d\n", ret
);
5220 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5221 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5222 is1
.base_ios
.flags
= FLAGS_skipws
;
5223 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 1);
5224 ok(ret
== 1, "expected 1 got %d\n", ret
);
5225 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5226 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5227 ret
= (int) call_func2(p_istream_ipfx
, &is1
, -1);
5228 ok(ret
== 1, "expected 1 got %d\n", ret
);
5229 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5230 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5231 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 0);
5232 ok(ret
== 1, "expected 1 got %d\n", ret
);
5233 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5234 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 9, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 9, fb1
.base
.gptr
);
5235 fb1
.base
.gptr
= fb1
.base
.base
+ 14;
5236 fb2
.base
.pbase
= fb2
.base
.base
;
5237 fb2
.base
.pptr
= fb2
.base
.epptr
= fb2
.base
.base
+ 23;
5238 ret
= (int) call_func2(p_istream_ipfx
, &is1
, 0);
5239 ok(ret
== 0, "expected 0 got %d\n", ret
);
5240 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5241 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5242 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5243 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5244 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5247 is1
.extract_delim
= is1
.count
= 0xabababab;
5248 is1
.base_ios
.state
= IOSTATE_badbit
;
5249 memset(buffer
, 'A', sizeof(buffer
));
5250 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 30, 0);
5251 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5252 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5253 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5254 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5255 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5256 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5257 is1
.extract_delim
= is1
.count
= 0xabababab;
5258 is1
.base_ios
.state
= IOSTATE_goodbit
;
5259 memset(buffer
, 'A', sizeof(buffer
));
5260 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 30, 0);
5261 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5262 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5263 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5264 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5265 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5266 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5267 is1
.extract_delim
= is1
.count
= 0xabababab;
5268 is1
.base_ios
.state
= IOSTATE_goodbit
;
5269 is1
.base_ios
.flags
= 0;
5270 memset(buffer
, 'A', sizeof(buffer
));
5271 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 0, 0);
5272 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5273 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5274 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5275 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5276 ok(buffer
[0] == 'A', "expected 65 got %d\n", buffer
[0]);
5277 is1
.extract_delim
= is1
.count
= 0xabababab;
5278 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5279 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5280 strcpy(fb1
.base
.base
, " give \n you 11 ! up\t. ");
5281 memset(buffer
, 'A', sizeof(buffer
));
5282 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 30, 0);
5283 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5284 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5285 ok(is1
.count
== 29, "expected 29 got %d\n", is1
.count
);
5286 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5287 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 29, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 29, fb1
.base
.gptr
);
5288 ok(!strncmp(buffer
, fb1
.base
.base
, 29), "unexpected buffer content, got '%s'\n", buffer
);
5289 ok(buffer
[29] == 0, "expected 0 got %d\n", buffer
[29]);
5290 fb1
.base
.gptr
= fb1
.base
.egptr
;
5291 memset(buffer
, 'A', sizeof(buffer
));
5292 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 1, 0);
5293 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5294 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5295 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5296 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5297 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5298 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5299 is1
.base_ios
.flags
= FLAGS_skipws
;
5300 fb1
.base
.gptr
= fb1
.base
.base
;
5301 memset(buffer
, 'A', sizeof(buffer
));
5302 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, 0);
5303 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5304 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5305 ok(is1
.count
== 19, "expected 19 got %d\n", is1
.count
);
5306 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5307 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 19, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 19, fb1
.base
.gptr
);
5308 ok(!strncmp(buffer
, fb1
.base
.base
, 19), "unexpected buffer content, got '%s'\n", buffer
);
5309 ok(buffer
[19] == 0, "expected 0 got %d\n", buffer
[19]);
5310 fb1
.base
.gptr
= fb1
.base
.base
+ 20;
5311 memset(buffer
, 'A', sizeof(buffer
));
5312 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, 0);
5313 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5314 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5315 ok(is1
.count
== 10, "expected 10 got %d\n", is1
.count
);
5316 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5317 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5318 ok(!strncmp(buffer
, fb1
.base
.base
+ 20, 10), "unexpected buffer content, got '%s'\n", buffer
);
5319 ok(buffer
[10] == 0, "expected 0 got %d\n", buffer
[10]);
5320 is1
.extract_delim
= 1;
5321 is1
.base_ios
.state
= IOSTATE_goodbit
;
5322 fb1
.base
.eback
= fb1
.base
.base
;
5323 fb1
.base
.gptr
= fb1
.base
.base
+ 20;
5324 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5325 memset(buffer
, 'A', sizeof(buffer
));
5326 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, -1);
5327 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5328 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5329 ok(is1
.count
== 10, "expected 10 got %d\n", is1
.count
);
5330 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5331 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5332 ok(!strncmp(buffer
, fb1
.base
.base
+ 20, 10), "unexpected buffer content, got '%s'\n", buffer
);
5333 ok(buffer
[10] == 0, "expected 0 got %d\n", buffer
[10]);
5334 is1
.base_ios
.state
= IOSTATE_goodbit
;
5335 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5336 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5337 memset(buffer
, 'A', sizeof(buffer
));
5338 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, '\n');
5339 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5340 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5341 ok(is1
.count
== 9, "expected 9 got %d\n", is1
.count
);
5342 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5343 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 9, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 9, fb1
.base
.gptr
);
5344 ok(!strncmp(buffer
, fb1
.base
.base
, 9), "unexpected buffer content, got '%s'\n", buffer
);
5345 ok(buffer
[9] == 0, "expected 0 got %d\n", buffer
[9]);
5346 memset(buffer
, 'A', sizeof(buffer
));
5347 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, '\n');
5348 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5349 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5350 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5351 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5352 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 9, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 9, fb1
.base
.gptr
);
5353 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5354 is1
.extract_delim
= 0xabababab;
5355 memset(buffer
, 'A', sizeof(buffer
));
5356 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, '\n');
5357 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5358 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5359 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5360 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5361 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 10, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 10, fb1
.base
.gptr
);
5362 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5363 *fb1
.base
.gptr
= -50;
5364 memset(buffer
, 'A', sizeof(buffer
));
5365 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 2, -50);
5366 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5367 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5368 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5369 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5370 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 11, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 11, fb1
.base
.gptr
);
5371 ok((signed char)buffer
[0] == -50, "expected 0 got %d\n", buffer
[0]);
5372 ok(buffer
[1] == 0, "expected 0 got %d\n", buffer
[1]);
5373 *fb1
.base
.gptr
= -50;
5374 memset(buffer
, 'A', sizeof(buffer
));
5375 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 2, 206);
5376 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5377 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5378 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5379 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5380 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 11, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 11, fb1
.base
.gptr
);
5381 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5382 is1
.extract_delim
= 3;
5383 memset(buffer
, 'A', sizeof(buffer
));
5384 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 2, 206);
5385 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5386 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5387 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5388 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5389 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 12, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 12, fb1
.base
.gptr
);
5390 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5391 memset(buffer
, 'A', sizeof(buffer
));
5392 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 20, '!');
5393 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5394 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5395 ok(is1
.count
== 6, "expected 6 got %d\n", is1
.count
);
5396 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5397 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 18, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 18, fb1
.base
.gptr
);
5398 ok(!strncmp(buffer
, fb1
.base
.base
+ 12, 6), "unexpected buffer content, got '%s'\n", buffer
);
5399 ok(buffer
[6] == 0, "expected 0 got %d\n", buffer
[6]);
5400 pis
= call_func4(p_istream_get_str_delim
, &is1
, NULL
, 5, 0);
5401 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5402 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5403 ok(is1
.count
== 4, "expected 4 got %d\n", is1
.count
);
5404 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5405 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 22, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 22, fb1
.base
.gptr
);
5406 fb1
.base
.gptr
= fb1
.base
.egptr
;
5407 memset(buffer
, 'A', sizeof(buffer
));
5408 pis
= call_func4(p_istream_get_str_delim
, &is1
, buffer
, 10, 0);
5409 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5410 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5411 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5412 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5413 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5414 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5415 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5416 if (0) /* crashes on native */
5417 pis
= call_func4(p_istream_get_str_delim
, &is1
, (char*) 0x1, 5, 0);
5420 is1
.extract_delim
= is1
.count
= 0xabababab;
5421 is1
.base_ios
.state
= IOSTATE_eofbit
;
5422 memset(buffer
, 'A', sizeof(buffer
));
5423 pis
= call_func4(p_istream_get_str
, &is1
, buffer
, 10, 0);
5424 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5425 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5426 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5427 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5428 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5429 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5430 is1
.base_ios
.state
= IOSTATE_goodbit
;
5431 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5432 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5433 memset(buffer
, 'A', sizeof(buffer
));
5434 pis
= call_func4(p_istream_get_str
, &is1
, buffer
, 20, 0);
5435 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5436 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5437 ok(is1
.count
== 19, "expected 19 got %d\n", is1
.count
);
5438 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5439 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 19, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 19, fb1
.base
.gptr
);
5440 ok(!strncmp(buffer
, fb1
.base
.base
, 19), "unexpected buffer content, got '%s'\n", buffer
);
5441 ok(buffer
[19] == 0, "expected 0 got %d\n", buffer
[19]);
5442 is1
.extract_delim
= -1;
5443 memset(buffer
, 'A', sizeof(buffer
));
5444 pis
= call_func4(p_istream_get_str
, &is1
, buffer
, 20, '\t');
5445 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5446 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5447 ok(is1
.count
== 4, "expected 4 got %d\n", is1
.count
);
5448 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5449 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 23, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 23, fb1
.base
.gptr
);
5450 ok(!strncmp(buffer
, fb1
.base
.base
+ 19, 3), "unexpected buffer content, got '%s'\n", buffer
);
5451 ok(buffer
[3] == 0, "expected 0 got %d\n", buffer
[3]);
5452 *fb1
.base
.gptr
= -50;
5453 memset(buffer
, 'A', sizeof(buffer
));
5454 pis
= call_func4(p_istream_get_str
, &is1
, buffer
, 5, -50);
5455 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5456 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5457 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5458 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5459 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 23, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 23, fb1
.base
.gptr
);
5460 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5461 *(fb1
.base
.gptr
+ 1) = -40;
5462 *(fb1
.base
.gptr
+ 2) = -30;
5463 memset(buffer
, 'A', sizeof(buffer
));
5464 pis
= call_func4(p_istream_get_str
, &is1
, buffer
, 5, -30);
5465 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5466 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5467 ok(is1
.count
== 2, "expected 2 got %d\n", is1
.count
);
5468 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5469 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 25, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 25, fb1
.base
.gptr
);
5470 ok((signed char)buffer
[0] == -50, "expected -50 got %d\n", buffer
[0]);
5471 ok((signed char)buffer
[1] == -40, "expected -40 got %d\n", buffer
[1]);
5472 ok(buffer
[2] == 0, "expected 0 got %d\n", buffer
[2]);
5475 is1
.count
= 0xabababab;
5476 is1
.base_ios
.state
= IOSTATE_eofbit
;
5477 ret
= (int) call_func1(p_istream_get
, &is1
);
5478 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5479 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5480 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5481 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5482 is1
.base_ios
.state
= IOSTATE_badbit
;
5483 ret
= (int) call_func1(p_istream_get
, &is1
);
5484 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5485 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5486 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5487 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5488 is1
.base_ios
.state
= IOSTATE_goodbit
;
5489 fb1
.base
.egptr
= NULL
;
5490 ret
= (int) call_func1(p_istream_get
, &is1
);
5491 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5492 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5493 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5494 is1
.base_ios
.state
= IOSTATE_goodbit
;
5495 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5496 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5497 ret
= (int) call_func1(p_istream_get
, &is1
);
5498 ok(ret
== ' ', "expected %d got %d\n", ' ', ret
);
5499 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5500 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5501 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 1, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 1, fb1
.base
.gptr
);
5502 *fb1
.base
.gptr
= '\n';
5503 ret
= (int) call_func1(p_istream_get
, &is1
);
5504 ok(ret
== '\n', "expected %d got %d\n", '\n', ret
);
5505 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5506 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5507 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 2, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 2, fb1
.base
.gptr
);
5508 *fb1
.base
.gptr
= -50;
5509 ret
= (int) call_func1(p_istream_get
, &is1
);
5510 ok(ret
== 206, "expected 206 got %d\n", ret
);
5511 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5512 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5513 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 3, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 3, fb1
.base
.gptr
);
5514 fb1
.base
.gptr
= fb1
.base
.base
+ 30;
5515 ret
= (int) call_func1(p_istream_get
, &is1
);
5516 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5517 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5518 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5519 ok(fb1
.base
.gptr
== (char*) 1, "wrong get pointer, expected %p got %p\n", (char*) 1, fb1
.base
.gptr
);
5522 is1
.count
= 0xabababab;
5523 is1
.base_ios
.state
= IOSTATE_badbit
;
5525 pis
= call_func2(p_istream_get_char
, &is1
, &c
);
5526 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5527 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5528 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5529 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5530 ok(c
== (char) 0xab, "expected %d got %d\n", (char) 0xab, c
);
5531 is1
.base_ios
.state
= IOSTATE_goodbit
;
5532 pis
= call_func2(p_istream_get_char
, &is1
, &c
);
5533 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5534 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5535 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5536 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5537 ok((signed char)c
== EOF
, "expected -1 got %d\n", c
);
5538 is1
.base_ios
.state
= IOSTATE_goodbit
;
5539 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5540 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5541 pis
= call_func2(p_istream_get_char
, &is1
, &c
);
5542 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5543 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5544 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5545 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 1, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 1, fb1
.base
.gptr
);
5546 ok(c
== ' ', "expected %d got %d\n", ' ', c
);
5547 fb1
.base
.gptr
= fb1
.base
.base
+ 2;
5548 pis
= call_func2(p_istream_get_char
, &is1
, &c
);
5549 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5550 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5551 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5552 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 3, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 3, fb1
.base
.gptr
);
5553 ok((signed char)c
== -50, "expected %d got %d\n", -50, c
);
5554 if (0) /* crashes on native */
5555 pis
= call_func2(p_istream_get_char
, &is1
, NULL
);
5556 fb1
.base
.gptr
= fb1
.base
.base
+ 30;
5557 pis
= call_func2(p_istream_get_char
, &is1
, &c
);
5558 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5559 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5560 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5561 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5562 ok(fb1
.base
.gptr
== (char*) 1, "wrong get pointer, expected %p got %p\n", (char*) 1, fb1
.base
.gptr
);
5563 ok((signed char)c
== EOF
, "expected -1 got %d\n", c
);
5564 is1
.base_ios
.state
= IOSTATE_failbit
;
5565 pis
= call_func2(p_istream_get_char
, &is1
, NULL
);
5566 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5567 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5568 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5569 ok(fb1
.base
.gptr
== (char*) 1, "wrong get pointer, expected %p got %p\n", (char*) 1, fb1
.base
.gptr
);
5572 is1
.count
= 0xabababab;
5573 is1
.base_ios
.state
= IOSTATE_badbit
;
5574 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, 0);
5575 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5576 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5577 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5578 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5579 is1
.base_ios
.state
= IOSTATE_goodbit
;
5580 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, 0);
5581 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5582 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5583 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5584 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5585 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5586 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5587 is1
.base_ios
.state
= IOSTATE_goodbit
;
5588 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5589 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5590 strcpy(fb1
.base
.base
, " Never gonna \nlet you \r down?");
5591 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, 0);
5592 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5593 ok(is1
.count
== 30, "expected 30 got %d\n", is1
.count
);
5594 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5595 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5596 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5597 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5598 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5599 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 30, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 30, fb2
.base
.pptr
);
5600 ok(fb2
.base
.epptr
== fb2
.base
.ebuf
, "wrong put end, expected %p got %p\n", fb2
.base
.ebuf
, fb2
.base
.epptr
);
5601 ok(!strncmp(fb2
.base
.pbase
, " Never gonna \nlet you \r down?", 30), "unexpected sb content, got '%s'\n", fb2
.base
.pbase
);
5602 is1
.base_ios
.state
= IOSTATE_goodbit
;
5603 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5604 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5605 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, '\n');
5606 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5607 ok(is1
.count
== 14, "expected 14 got %d\n", is1
.count
);
5608 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5609 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5610 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5611 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 30, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.egptr
);
5612 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5613 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 44, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 44, fb2
.base
.pptr
);
5614 ok(fb2
.base
.epptr
== fb2
.base
.ebuf
, "wrong put end, expected %p got %p\n", fb2
.base
.ebuf
, fb2
.base
.epptr
);
5615 ok(!strncmp(fb2
.base
.base
+ 30, " Never gonna ", 14), "unexpected sb content, got '%s'\n", fb2
.base
.pbase
);
5618 fb2
.base
.pbase
= fb2
.base
.pptr
= fb2
.base
.epptr
= NULL
;
5619 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, '\n');
5620 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5621 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5622 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5623 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5624 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5625 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 30, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.egptr
);
5626 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5627 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5628 ok(fb2
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb2
.base
.epptr
);
5629 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, 0);
5630 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5631 ok(is1
.count
== 16, "expected 16 got %d\n", is1
.count
);
5632 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5633 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5634 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5635 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5636 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5637 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5638 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5639 ok(fb2
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb2
.base
.epptr
);
5640 is1
.base_ios
.state
= IOSTATE_goodbit
;
5641 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5642 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5643 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, '\n');
5644 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5645 ok(is1
.count
== 14, "expected 14 got %d\n", is1
.count
);
5646 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5647 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5648 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5649 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 30, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.egptr
);
5650 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5651 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5652 ok(fb2
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb2
.base
.epptr
);
5654 is1
.base_ios
.state
= IOSTATE_goodbit
;
5655 pis
= call_func3(p_istream_get_sb
, &is1
, NULL
, '\n');
5656 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5657 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5658 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5659 ok(fb1
.base
.eback
== fb1
.base
.base
, "wrong get base, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.eback
);
5660 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5661 ok(fb1
.base
.egptr
== fb1
.base
.base
+ 30, "wrong get end, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.egptr
);
5662 ok(fb2
.base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, fb2
.base
.pbase
);
5663 ok(fb2
.base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, fb2
.base
.pptr
);
5664 ok(fb2
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb2
.base
.epptr
);
5665 is1
.base_ios
.state
= IOSTATE_goodbit
;
5666 if (0) /* crashes on native */
5667 pis
= call_func3(p_istream_get_sb
, &is1
, NULL
, '?');
5668 *fb1
.base
.gptr
= -50;
5669 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, -50);
5670 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5671 ok(is1
.count
== 16, "expected 16 got %d\n", is1
.count
);
5672 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5673 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5674 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5675 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5676 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5677 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 16, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 16, fb2
.base
.pptr
);
5678 ok(fb2
.base
.epptr
== fb2
.base
.ebuf
, "wrong put end, expected %p got %p\n", fb2
.base
.ebuf
, fb2
.base
.epptr
);
5679 is1
.base_ios
.state
= IOSTATE_goodbit
;
5680 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5681 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5682 pis
= call_func3(p_istream_get_sb
, &is1
, &fb2
.base
, (char)206);
5683 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5684 ok(is1
.count
== 30, "expected 30 got %d\n", is1
.count
);
5685 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5686 ok(fb1
.base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, fb1
.base
.eback
);
5687 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5688 ok(fb1
.base
.egptr
== NULL
, "wrong get end, expected %p got %p\n", NULL
, fb1
.base
.egptr
);
5689 ok(fb2
.base
.pbase
== fb2
.base
.base
, "wrong put base, expected %p got %p\n", fb2
.base
.base
, fb2
.base
.pbase
);
5690 ok(fb2
.base
.pptr
== fb2
.base
.base
+ 46, "wrong put pointer, expected %p got %p\n", fb2
.base
.base
+ 46, fb2
.base
.pptr
);
5691 ok(fb2
.base
.epptr
== fb2
.base
.ebuf
, "wrong put end, expected %p got %p\n", fb2
.base
.ebuf
, fb2
.base
.epptr
);
5694 is1
.extract_delim
= is1
.count
= 0xabababab;
5695 memset(buffer
, 'A', sizeof(buffer
));
5696 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 10, 0);
5697 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5698 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5699 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5700 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5701 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5702 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5703 is1
.extract_delim
= is1
.count
= 0xabababab;
5704 is1
.base_ios
.state
= IOSTATE_goodbit
;
5705 memset(buffer
, 'A', sizeof(buffer
));
5706 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 10, 0);
5707 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5708 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5709 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5710 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5711 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5712 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5713 is1
.base_ios
.state
= IOSTATE_goodbit
;
5714 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5715 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5716 memset(buffer
, 'A', sizeof(buffer
));
5717 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 10, 'r');
5718 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5719 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5720 ok(is1
.count
== 7, "expected 7 got %d\n", is1
.count
);
5721 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5722 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 7, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 7, fb1
.base
.gptr
);
5723 ok(!strncmp(buffer
, fb1
.base
.base
, 6), "unexpected buffer content, got '%s'\n", buffer
);
5724 ok(buffer
[6] == 0, "expected 0 got %d\n", buffer
[6]);
5725 is1
.extract_delim
= -1;
5726 memset(buffer
, 'A', sizeof(buffer
));
5727 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 10, -50);
5728 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5729 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5730 ok(is1
.count
== 7, "expected 7 got %d\n", is1
.count
);
5731 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5732 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5733 ok(!strncmp(buffer
, fb1
.base
.base
+ 7, 7), "unexpected buffer content, got '%s'\n", buffer
);
5734 ok(buffer
[7] == 0, "expected 0 got %d\n", buffer
[7]);
5735 is1
.extract_delim
= -1;
5736 memset(buffer
, 'A', sizeof(buffer
));
5737 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 10, (char)206);
5738 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5739 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5740 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5741 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5742 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5743 ok(buffer
[0] == 0, "expected 0 got %d\n", buffer
[0]);
5744 is1
.extract_delim
= -2;
5745 memset(buffer
, 'A', sizeof(buffer
));
5746 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 20, '\r');
5747 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5748 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5749 ok(is1
.count
== 10, "expected 10 got %d\n", is1
.count
);
5750 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5751 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 24, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 24, fb1
.base
.gptr
);
5752 ok(!strncmp(buffer
, fb1
.base
.base
+ 14, 9), "unexpected buffer content, got '%s'\n", buffer
);
5753 ok(buffer
[9] == 0, "expected 0 got %d\n", buffer
[9]);
5754 memset(buffer
, 'A', sizeof(buffer
));
5755 pis
= call_func4(p_istream_getline
, &is1
, NULL
, 20, '?');
5756 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5757 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5758 ok(is1
.count
== 6, "expected 6 got %d\n", is1
.count
);
5759 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5760 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5761 memset(buffer
, 'A', sizeof(buffer
));
5762 pis
= call_func4(p_istream_getline
, &is1
, buffer
, 0, 0);
5763 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5764 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5765 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5766 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5767 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5768 ok(buffer
[0] == 'A', "expected 'A' got %d\n", buffer
[0]);
5771 is1
.count
= is1
.extract_delim
= 0xabababab;
5772 is1
.base_ios
.state
= IOSTATE_badbit
;
5773 pis
= call_func3(p_istream_ignore
, &is1
, 10, 0);
5774 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5775 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5776 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5777 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5778 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5779 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5780 is1
.count
= is1
.extract_delim
= 0xabababab;
5781 is1
.base_ios
.state
= IOSTATE_goodbit
;
5782 pis
= call_func3(p_istream_ignore
, &is1
, 0, 0);
5783 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5784 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5785 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5786 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5787 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5788 pis
= call_func3(p_istream_ignore
, &is1
, 1, 0);
5789 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5790 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5791 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5792 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5793 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5794 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5795 is1
.base_ios
.state
= IOSTATE_goodbit
;
5796 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5797 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5798 pis
= call_func3(p_istream_ignore
, &is1
, 5, -1);
5799 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5800 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5801 ok(is1
.count
== 5, "expected 5 got %d\n", is1
.count
);
5802 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5803 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 5, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 5, fb1
.base
.gptr
);
5804 is1
.extract_delim
= 0;
5805 pis
= call_func3(p_istream_ignore
, &is1
, 10, 'g');
5806 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5807 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5808 ok(is1
.count
== 4, "expected 4 got %d\n", is1
.count
);
5809 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5810 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 9, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 9, fb1
.base
.gptr
);
5811 is1
.extract_delim
= -1;
5812 pis
= call_func3(p_istream_ignore
, &is1
, 10, 'a');
5813 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5814 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5815 ok(is1
.count
== 3, "expected 3 got %d\n", is1
.count
);
5816 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5817 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 12, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 12, fb1
.base
.gptr
);
5818 is1
.extract_delim
= -1;
5819 pis
= call_func3(p_istream_ignore
, &is1
, 10, 206);
5820 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5821 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5822 ok(is1
.count
== 2, "expected 2 got %d\n", is1
.count
);
5823 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5824 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5825 pis
= call_func3(p_istream_ignore
, &is1
, 10, -50);
5826 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5827 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5828 ok(is1
.count
== 10, "expected 10 got %d\n", is1
.count
);
5829 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5830 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 24, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 24, fb1
.base
.gptr
);
5831 is1
.extract_delim
= -1;
5832 pis
= call_func3(p_istream_ignore
, &is1
, 10, -1);
5833 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5834 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
5835 ok(is1
.count
== 6, "expected 6 got %d\n", is1
.count
);
5836 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5837 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5840 is1
.count
= 0xabababab;
5841 ret
= (int) call_func1(p_istream_peek
, &is1
);
5842 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5843 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5844 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5845 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5846 is1
.count
= 0xabababab;
5847 is1
.base_ios
.state
= IOSTATE_goodbit
;
5848 ret
= (int) call_func1(p_istream_peek
, &is1
);
5849 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5850 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5851 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5852 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5853 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5854 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5855 ret
= (int) call_func1(p_istream_peek
, &is1
);
5856 ok(ret
== ' ', "expected ' ' got %d\n", ret
);
5857 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5858 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5859 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
5860 if (0) /* crashes on native */
5861 is1
.base_ios
.sb
= NULL
;
5862 fb1
.base
.gptr
= fb1
.base
.base
+ 14;
5863 ret
= (int) call_func1(p_istream_peek
, &is1
);
5864 ok(ret
== 206, "expected 206 got %d\n", ret
);
5865 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5866 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5867 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5868 fb1
.base
.gptr
= fb1
.base
.base
+ 30;
5869 ret
= (int) call_func1(p_istream_peek
, &is1
);
5870 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
5871 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5872 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5873 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5876 is1
.base_ios
.state
= IOSTATE_goodbit
;
5877 pis
= call_func2(p_istream_putback
, &is1
, 'a');
5878 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5879 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5880 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5883 pis
= call_func2(p_istream_putback
, &is1
, 'a');
5884 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5885 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5887 fb1
.base
.eback
= fb1
.base
.base
;
5888 fb1
.base
.gptr
= fb1
.base
.base
+ 15;
5889 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5890 pis
= call_func2(p_istream_putback
, &is1
, -40);
5891 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5892 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5893 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 15, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 15, fb1
.base
.gptr
);
5894 is1
.base_ios
.state
= IOSTATE_badbit
;
5895 pis
= call_func2(p_istream_putback
, &is1
, -40);
5896 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5897 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
5898 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 15, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 15, fb1
.base
.gptr
);
5899 is1
.base_ios
.state
= IOSTATE_eofbit
;
5900 pis
= call_func2(p_istream_putback
, &is1
, -40);
5901 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5902 ok(is1
.base_ios
.state
== IOSTATE_eofbit
, "expected %d got %d\n", IOSTATE_eofbit
, is1
.base_ios
.state
);
5903 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 15, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 15, fb1
.base
.gptr
);
5904 is1
.base_ios
.state
= IOSTATE_goodbit
;
5905 if (0) /* crashes on native */
5906 is1
.base_ios
.sb
= NULL
;
5907 pis
= call_func2(p_istream_putback
, &is1
, -40);
5908 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5909 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5910 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 14, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 14, fb1
.base
.gptr
);
5911 ok((signed char)*fb1
.base
.gptr
== -40, "expected -40 got %d\n", *fb1
.base
.gptr
);
5914 is1
.extract_delim
= is1
.count
= 0xabababab;
5915 is1
.base_ios
.state
= IOSTATE_badbit
;
5916 memset(buffer
, 'A', sizeof(buffer
));
5917 pis
= call_func3(p_istream_read
, &is1
, buffer
, 10);
5918 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5919 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5920 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
5921 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5922 ok(buffer
[0] == 'A', "expected 'A' got %d\n", buffer
[0]);
5923 is1
.base_ios
.state
= IOSTATE_goodbit
;
5924 fb1
.base
.gptr
= fb1
.base
.base
;
5925 memset(buffer
, 'A', sizeof(buffer
));
5926 pis
= call_func3(p_istream_read
, &is1
, buffer
, 10);
5927 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5928 ok(is1
.count
== 10, "expected 10 got %d\n", is1
.count
);
5929 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5930 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 10, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 10, fb1
.base
.gptr
);
5931 ok(!strncmp(buffer
, fb1
.base
.base
, 10), "unexpected buffer content, got '%s'\n", buffer
);
5932 ok(buffer
[10] == 'A', "expected 'A' got %d\n", buffer
[10]);
5933 memset(buffer
, 'A', sizeof(buffer
));
5934 pis
= call_func3(p_istream_read
, &is1
, buffer
, 20);
5935 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5936 ok(is1
.count
== 20, "expected 20 got %d\n", is1
.count
);
5937 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5938 ok(fb1
.base
.gptr
== fb1
.base
.base
+ 30, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
+ 30, fb1
.base
.gptr
);
5939 ok(!strncmp(buffer
, fb1
.base
.base
+ 10, 20), "unexpected buffer content, got '%s'\n", buffer
);
5940 ok((signed char)buffer
[4] == -40, "expected -40 got %d\n", buffer
[4]);
5941 ok(buffer
[20] == 'A', "expected 'A' got %d\n", buffer
[20]);
5942 memset(buffer
, 'A', sizeof(buffer
));
5943 pis
= call_func3(p_istream_read
, &is1
, buffer
, 5);
5944 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5945 ok(is1
.count
== 1, "expected 1 got %d\n", is1
.count
);
5946 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5947 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5948 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5949 ok(buffer
[0] == 'e', "expected 'e' got %d\n", buffer
[0]);
5950 ok(buffer
[1] == 'A', "expected 'A' got %d\n", buffer
[1]);
5951 is1
.base_ios
.state
= IOSTATE_goodbit
;
5952 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5953 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5954 memset(buffer
, 'A', sizeof(buffer
));
5955 pis
= call_func3(p_istream_read
, &is1
, buffer
, 35);
5956 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5957 ok(is1
.count
== 30, "expected 30 got %d\n", is1
.count
);
5958 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
5959 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
5960 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5961 ok(!strncmp(buffer
, fb1
.base
.base
, 30), "unexpected buffer content, got '%s'\n", buffer
);
5962 ok(buffer
[30] == 'A', "expected 'A' got %d\n", buffer
[30]);
5963 if (0) /* crashes on native */
5964 is1
.base_ios
.sb
= NULL
;
5965 is1
.base_ios
.state
= IOSTATE_goodbit
;
5966 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
5967 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
5968 memset(buffer
, 'A', sizeof(buffer
));
5969 if (0) /* crashes on native */
5970 pis
= call_func3(p_istream_read
, &is1
, buffer
, -1);
5971 pis
= call_func3(p_istream_read
, &is1
, buffer
, 0);
5972 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5973 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
5974 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
5975 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
5976 ok(buffer
[0] == 'A', "expected 'A' got %d\n", buffer
[0]);
5977 fb1
.base
.gptr
= fb1
.base
.egptr
;
5980 is1
.extract_delim
= is1
.count
= 0xabababab;
5981 pis
= call_func2(p_istream_seekg
, &is1
, 0);
5982 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5983 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5984 ok(_tell(fb1
.fd
) == 0, "expected 0 got %ld\n", _tell(fb1
.fd
));
5985 if (0) /* crashes on native */
5986 is1
.base_ios
.sb
= NULL
;
5987 pis
= call_func2(p_istream_seekg
, &is1
, -5);
5988 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5989 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5990 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5991 ok(_tell(fb1
.fd
) == 0, "expected 0 got %ld\n", _tell(fb1
.fd
));
5992 fb1
.base
.epptr
= fb1
.base
.ebuf
;
5993 pis
= call_func2(p_istream_seekg
, &is1
, 5);
5994 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
5995 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
5996 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
5997 ok(fb1
.base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, fb1
.base
.epptr
);
5998 ok(_tell(fb1
.fd
) == 5, "expected 5 got %ld\n", _tell(fb1
.fd
));
5999 is1
.base_ios
.state
= IOSTATE_goodbit
;
6002 pis
= call_func2(p_istream_seekg
, &is1
, 0);
6003 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6004 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6005 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
6006 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
6007 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
6008 pis
= call_func3(p_istream_seekg_offset
, &is1
, 0, SEEKDIR_end
);
6009 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6010 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6011 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
6012 is1
.base_ios
.state
= IOSTATE_goodbit
;
6014 pis
= call_func3(p_istream_seekg_offset
, &is1
, 0, SEEKDIR_end
);
6015 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6016 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6017 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
6018 if (0) /* crashes on native */
6019 is1
.base_ios
.sb
= NULL
;
6020 fb1
.base
.gptr
= fb1
.base
.egptr
;
6021 pis
= call_func3(p_istream_seekg_offset
, &is1
, 0, SEEKDIR_end
);
6022 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6023 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6024 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
6025 ok(_tell(fb1
.fd
) == 24, "expected 24 got %ld\n", _tell(fb1
.fd
));
6028 ret
= (int) call_func1(p_istream_sync
, &is1
);
6029 ok(ret
== 0, "expected 0 got %d\n", ret
);
6030 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6031 is1
.base_ios
.state
= IOSTATE_badbit
;
6032 ret
= (int) call_func1(p_istream_sync
, &is1
);
6033 ok(ret
== 0, "expected 0 got %d\n", ret
);
6034 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
6035 is1
.base_ios
.state
= IOSTATE_goodbit
;
6036 ret
= (int) call_func1(p_istream_sync
, &is1
);
6037 ok(ret
== 0, "expected 0 got %d\n", ret
);
6038 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
6039 if (0) /* crashes on native */
6040 is1
.base_ios
.sb
= NULL
;
6041 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
6042 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
6043 ret
= (int) call_func1(p_istream_sync
, &is1
);
6044 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
6045 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
6046 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
6047 ok(fb1
.base
.gptr
== fb1
.base
.base
, "wrong get pointer, expected %p got %p\n", fb1
.base
.base
, fb1
.base
.gptr
);
6048 fb1
.base
.gptr
= fb1
.base
.egptr
;
6049 ret
= (int) call_func1(p_istream_sync
, &is1
);
6050 ok(ret
== 0, "expected 0 got %d\n", ret
);
6051 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
), "expected %d got %d\n",
6052 IOSTATE_badbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
6053 ok(fb1
.base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, fb1
.base
.gptr
);
6054 is1
.base_ios
.state
= IOSTATE_eofbit
;
6057 ret
= (int) call_func1(p_istream_sync
, &is1
);
6058 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
6059 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
), "expected %d got %d\n",
6060 IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
, is1
.base_ios
.state
);
6064 ret
= (int) call_func1(p_istream_tellg
, &is1
);
6065 ok(ret
== 24, "expected 24 got %d\n", ret
);
6066 ok(is1
.base_ios
.state
== (IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
), "expected %d got %d\n",
6067 IOSTATE_badbit
|IOSTATE_failbit
|IOSTATE_eofbit
, is1
.base_ios
.state
);
6068 is1
.base_ios
.state
= IOSTATE_goodbit
;
6069 ret
= (int) call_func1(p_istream_tellg
, &is1
);
6070 ok(ret
== 24, "expected 24 got %d\n", ret
);
6071 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
6072 if (0) /* crashes on native */
6073 is1
.base_ios
.sb
= NULL
;
6074 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.base
;
6075 fb1
.base
.egptr
= fb1
.base
.base
+ 30;
6076 ret
= (int) call_func1(p_istream_tellg
, &is1
);
6077 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
6078 ok(is1
.base_ios
.state
== IOSTATE_failbit
, "expected %d got %d\n", IOSTATE_failbit
, is1
.base_ios
.state
);
6079 is1
.base_ios
.state
= IOSTATE_eofbit
;
6080 ret
= (int) call_func1(p_istream_tellg
, &is1
);
6081 ok(ret
== EOF
, "expected -1 got %d\n", ret
);
6082 ok(is1
.base_ios
.state
== (IOSTATE_eofbit
|IOSTATE_failbit
), "expected %d got %d\n",
6083 IOSTATE_eofbit
|IOSTATE_failbit
, is1
.base_ios
.state
);
6084 fb1
.base
.eback
= fb1
.base
.gptr
= fb1
.base
.egptr
= NULL
;
6086 call_func1(p_istream_vbase_dtor
, &is1
);
6087 call_func1(p_istream_vbase_dtor
, &is2
);
6088 call_func1(p_ostream_vbase_dtor
, &os
);
6089 call_func1(p_filebuf_dtor
, &fb1
);
6090 call_func1(p_filebuf_dtor
, &fb2
);
6091 ok(_unlink(filename1
) == 0, "Couldn't unlink file named '%s'\n", filename1
);
6092 ok(_unlink(filename2
) == 0, "Couldn't unlink file named '%s'\n", filename2
);
6095 static void test_istream_getint(void)
6098 strstreambuf ssb
, *pssb
;
6102 struct istream_getint_test
{
6103 const char *stream_content
;
6104 ios_io_state initial_state
;
6106 int expected_return
;
6107 ios_io_state expected_state
;
6108 int expected_offset
;
6109 const char *expected_buffer
;
6111 {"", IOSTATE_badbit
, FLAGS_skipws
, 0, IOSTATE_badbit
|IOSTATE_failbit
, 0, ""},
6112 {"", IOSTATE_eofbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 0, ""},
6113 {"", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 0, ""},
6114 {" 0 ", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 2, "0"},
6115 {" \n0", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
, 3, "0"},
6116 {"-0", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
, 2, "-0"},
6117 {"000\n", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 3, "000"},
6118 {"015 16", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 3, "015"},
6119 {"099", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 1, "0"},
6120 {" 12345", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
, 6, "12345"},
6121 {"12345\r", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 5, "12345"},
6122 {"0xab ", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_goodbit
, 4, "0xab"},
6123 {" 0xefg", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_goodbit
, 5, "0xef"},
6124 {"0XABc", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_eofbit
, 5, "0XABc"},
6125 {"0xzzz", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_failbit
, 0, ""},
6126 {"0y123", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 1, "0"},
6127 {"\t+42 ", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 4, "+42"},
6128 {"+\t42", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, ""},
6129 {"+4\t2", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 2, "+4"},
6130 {"+0xc", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_eofbit
, 4, "+0xc"},
6131 {" -1 ", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 3, "-1"},
6132 {" -005 ", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 5, "-005"},
6133 {" 2-0 ", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 2, "2"},
6134 {"--3 ", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, ""},
6135 {"+-7", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, ""},
6136 {"+", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, ""},
6137 {"-0x123abc", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_eofbit
, 9, "-0x123abc"},
6138 {"0-x123abc", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 1, "0"},
6139 {"0x-123abc", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_failbit
, 0, ""},
6140 {"2147483648", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
, 10, "2147483648"},
6141 {"99999999999999", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
, 14, "99999999999999"},
6142 {"999999999999999", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 15, "999999999999999"},
6143 {"123456789123456789", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 15, "123456789123456"},
6144 {"000000000000000000", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 15, "000000000000000"},
6145 {"-0xffffffffffffffffff", IOSTATE_goodbit
, FLAGS_skipws
, 16, IOSTATE_goodbit
, 15, "-0xffffffffffff"},
6146 {"3.14159", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 1, "3"},
6147 {"deadbeef", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, ""},
6148 {"0deadbeef", IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 1, "0"},
6149 {"98765L", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 5, "98765"},
6150 {"9999l", IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_goodbit
, 4, "9999"},
6151 {" 1", IOSTATE_goodbit
, 0, 0, IOSTATE_failbit
, 0, ""},
6152 {"1 ", IOSTATE_goodbit
, 0, 0, IOSTATE_goodbit
, 1, "1"},
6153 {"010", IOSTATE_goodbit
, FLAGS_dec
, 10, IOSTATE_eofbit
, 3, "010"},
6154 {"0x123", IOSTATE_goodbit
, FLAGS_dec
, 10, IOSTATE_goodbit
, 1, "0"},
6155 {"x1", IOSTATE_goodbit
, FLAGS_dec
, 10, IOSTATE_failbit
, 0, ""},
6156 {"33", IOSTATE_goodbit
, FLAGS_dec
|FLAGS_oct
, 10, IOSTATE_eofbit
, 2, "33"},
6157 {"abc", IOSTATE_goodbit
, FLAGS_dec
|FLAGS_hex
, 10, IOSTATE_failbit
, 0, ""},
6158 {"33", IOSTATE_goodbit
, FLAGS_oct
, 8, IOSTATE_eofbit
, 2, "33"},
6159 {"9", IOSTATE_goodbit
, FLAGS_oct
, 8, IOSTATE_failbit
, 0, ""},
6160 {"0", IOSTATE_goodbit
, FLAGS_oct
, 8, IOSTATE_eofbit
, 1, "0"},
6161 {"x1", IOSTATE_goodbit
, FLAGS_oct
, 8, IOSTATE_failbit
, 0, ""},
6162 {"9", IOSTATE_goodbit
, FLAGS_oct
|FLAGS_hex
, 16, IOSTATE_eofbit
, 1, "9"},
6163 {"abc", IOSTATE_goodbit
, FLAGS_oct
|FLAGS_hex
, 16, IOSTATE_eofbit
, 3, "abc"},
6164 {"123 ", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_goodbit
, 3, "123"},
6165 {"x123 ", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_failbit
, 0, ""},
6166 {"0x123 ", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_goodbit
, 5, "0x123"},
6167 {"-a", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_eofbit
, 2, "-a"},
6168 {"-j", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_failbit
, 0, ""},
6169 {"-0x-1", IOSTATE_goodbit
, FLAGS_hex
, 16, IOSTATE_failbit
, 0, ""},
6170 {"0", IOSTATE_goodbit
, FLAGS_dec
|FLAGS_oct
|FLAGS_hex
, 10, IOSTATE_eofbit
, 1, "0"},
6171 {"0z", IOSTATE_goodbit
, FLAGS_dec
|FLAGS_oct
|FLAGS_hex
, 10, IOSTATE_goodbit
, 1, "0"}
6174 pssb
= call_func2(p_strstreambuf_dynamic_ctor
, &ssb
, 64);
6175 ok(pssb
== &ssb
, "wrong return, expected %p got %p\n", &ssb
, pssb
);
6176 ret
= (int) call_func1(p_streambuf_allocate
, &ssb
.base
);
6177 ok(ret
== 1, "expected 1 got %d\n", ret
);
6178 pis
= call_func3(p_istream_sb_ctor
, &is
, &ssb
.base
, TRUE
);
6179 ok(pis
== &is
, "wrong return, expected %p got %p\n", &is
, pis
);
6181 for (i
= 0; i
< ARRAY_SIZE(tests
); i
++) {
6182 len
= strlen(tests
[i
].stream_content
);
6183 is
.base_ios
.state
= tests
[i
].initial_state
;
6184 is
.base_ios
.flags
= tests
[i
].flags
;
6185 ssb
.base
.eback
= ssb
.base
.gptr
= ssb
.base
.base
;
6186 ssb
.base
.egptr
= ssb
.base
.base
+ len
;
6187 memcpy(ssb
.base
.base
, tests
[i
].stream_content
, len
);
6189 ret
= (int) call_func2(p_istream_getint
, &is
, buffer
);
6190 ok(ret
== tests
[i
].expected_return
, "Test %d: wrong return, expected %d got %d\n", i
,
6191 tests
[i
].expected_return
, ret
);
6192 ok(is
.base_ios
.state
== tests
[i
].expected_state
, "Test %d: expected %d got %d\n", i
,
6193 tests
[i
].expected_state
, is
.base_ios
.state
);
6194 ok(ssb
.base
.gptr
== ssb
.base
.base
+ tests
[i
].expected_offset
, "Test %d: expected %p got %p\n", i
,
6195 ssb
.base
.base
+ tests
[i
].expected_offset
, ssb
.base
.gptr
);
6196 ok(!strncmp(buffer
, tests
[i
].expected_buffer
, strlen(tests
[i
].expected_buffer
)),
6197 "Test %d: unexpected buffer content, got '%s'\n", i
, buffer
);
6200 call_func1(p_istream_vbase_dtor
, &is
);
6201 call_func1(p_strstreambuf_dtor
, &ssb
);
6204 static void test_istream_getdouble(void)
6207 strstreambuf ssb
, *pssb
;
6211 struct istream_getdouble_test
{
6212 const char *stream_content
;
6214 ios_io_state initial_state
;
6216 int expected_return
;
6217 ios_io_state expected_state
;
6218 int expected_offset
;
6219 const char *expected_buffer
;
6222 {"", 32, IOSTATE_badbit
, FLAGS_skipws
, 0, IOSTATE_badbit
|IOSTATE_failbit
, 0, "", FALSE
},
6223 {"", 0, IOSTATE_badbit
, FLAGS_skipws
, 0, IOSTATE_badbit
|IOSTATE_failbit
, 0, "", FALSE
},
6224 {"", 32, IOSTATE_eofbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 0, "", FALSE
},
6225 {"", 32, IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 0, "", FALSE
},
6226 {" ", 32, IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 1, "", FALSE
},
6227 {" 0", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_eofbit
, 2, "0", FALSE
},
6228 {"156", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_eofbit
, 3, "156", FALSE
},
6229 {"123 ", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_goodbit
, 3, "123", FALSE
},
6230 {"+4 5", 32, IOSTATE_goodbit
, FLAGS_skipws
, 2, IOSTATE_goodbit
, 2, "+4", FALSE
},
6231 {"-88a", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_goodbit
, 3, "-88", FALSE
},
6232 {"-+5", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_failbit
, 1, "-", FALSE
},
6233 {"++7", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_failbit
, 1, "+", FALSE
},
6234 {"+", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_eofbit
|IOSTATE_failbit
, 1, "+", FALSE
},
6235 {"abc", 32, IOSTATE_goodbit
, FLAGS_skipws
, 0, IOSTATE_failbit
, 0, "", FALSE
},
6236 {"0xabc", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_goodbit
, 1, "0", FALSE
},
6237 {"01", 32, IOSTATE_goodbit
, FLAGS_skipws
, 2, IOSTATE_eofbit
, 2, "01", FALSE
},
6238 {"10000000000000000000", 32, IOSTATE_goodbit
, FLAGS_skipws
, 20, IOSTATE_eofbit
, 20, "10000000000000000000", FALSE
},
6239 {"1.2", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_eofbit
, 3, "1.2", FALSE
},
6240 {"\t-0.4444f", 32, IOSTATE_goodbit
, FLAGS_skipws
, 7, IOSTATE_goodbit
, 8, "-0.4444", FALSE
},
6241 {"3.-14159", 32, IOSTATE_goodbit
, FLAGS_skipws
, 2, IOSTATE_goodbit
, 2, "3.", FALSE
},
6242 {"3.14.159", 32, IOSTATE_goodbit
, FLAGS_skipws
, 4, IOSTATE_goodbit
, 4, "3.14", FALSE
},
6243 {"3.000", 32, IOSTATE_goodbit
, FLAGS_skipws
, 5, IOSTATE_eofbit
, 5, "3.000", FALSE
},
6244 {".125f", 32, IOSTATE_goodbit
, FLAGS_skipws
, 4, IOSTATE_goodbit
, 4, ".125", FALSE
},
6245 {"-.125f", 32, IOSTATE_goodbit
, FLAGS_skipws
, 5, IOSTATE_goodbit
, 5, "-.125", FALSE
},
6246 {"5L", 32, IOSTATE_goodbit
, FLAGS_skipws
, 1, IOSTATE_goodbit
, 1, "5", FALSE
},
6247 {"1.", 32, IOSTATE_goodbit
, FLAGS_skipws
, 2, IOSTATE_eofbit
, 2, "1.", FALSE
},
6248 {"55.!", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_goodbit
, 3, "55.", FALSE
},
6249 {"99.99999999999", 32, IOSTATE_goodbit
, FLAGS_skipws
, 14, IOSTATE_eofbit
, 14, "99.99999999999", FALSE
},
6250 {"9.9999999999999999999", 32, IOSTATE_goodbit
, FLAGS_skipws
, 21, IOSTATE_eofbit
, 21, "9.9999999999999999999", FALSE
},
6251 {"0.0000000000000f", 32, IOSTATE_goodbit
, FLAGS_skipws
, 15, IOSTATE_goodbit
, 15, "0.0000000000000", FALSE
},
6252 {"1.0000e5 ", 32, IOSTATE_goodbit
, FLAGS_skipws
, 8, IOSTATE_goodbit
, 8, "1.0000e5", FALSE
},
6253 {"-2.12345e1000 ", 32, IOSTATE_goodbit
, FLAGS_skipws
, 13, IOSTATE_goodbit
, 13, "-2.12345e1000", FALSE
},
6254 {" 8E1", 32, IOSTATE_goodbit
, FLAGS_skipws
, 3, IOSTATE_eofbit
, 5, "8E1", FALSE
},
6255 {"99.99E-99E5", 32, IOSTATE_goodbit
, FLAGS_skipws
, 9, IOSTATE_goodbit
, 9, "99.99E-99", FALSE
},
6256 {"0e0", 32, IOSTATE_goodbit
, FLAGS_skipws
|FLAGS_uppercase
, 3, IOSTATE_eofbit
, 3, "0e0", FALSE
},
6257 {"1.e8.5", 32, IOSTATE_goodbit
, 0, 4, IOSTATE_goodbit
, 4, "1.e8", FALSE
},
6258 {"1.0e-1000000000000000000 ", 32, IOSTATE_goodbit
, 0, 24, IOSTATE_goodbit
, 24, "1.0e-1000000000000000000", FALSE
},
6259 {"1.e+f", 32, IOSTATE_goodbit
, 0, 3, IOSTATE_goodbit
, 3, "1.e", FALSE
},
6260 {"1.ef", 32, IOSTATE_goodbit
, 0, 2, IOSTATE_goodbit
, 2, "1.", FALSE
},
6261 {"1.E-z", 32, IOSTATE_goodbit
, 0, 3, IOSTATE_goodbit
, 3, "1.E", FALSE
},
6262 {".", 32, IOSTATE_goodbit
, 0, 1, IOSTATE_eofbit
|IOSTATE_failbit
, 1, ".", FALSE
},
6263 {".e", 32, IOSTATE_goodbit
, 0, 1, IOSTATE_failbit
, 1, ".", FALSE
},
6264 {".e.", 32, IOSTATE_goodbit
, 0, 1, IOSTATE_failbit
, 1, ".", FALSE
},
6265 {".e5", 32, IOSTATE_goodbit
, 0, 3, IOSTATE_eofbit
|IOSTATE_failbit
, 3, ".e5", FALSE
},
6266 {".2e5", 32, IOSTATE_goodbit
, 0, 4, IOSTATE_eofbit
, 4, ".2e5", FALSE
},
6267 {"9.e", 32, IOSTATE_goodbit
, 0, 2, IOSTATE_goodbit
, 2, "9.", FALSE
},
6268 {"0.0e-0", 32, IOSTATE_goodbit
, 0, 6, IOSTATE_eofbit
, 6, "0.0e-0", FALSE
},
6269 {"e5.2", 32, IOSTATE_goodbit
, 0, 2, IOSTATE_failbit
, 2, "e5", FALSE
},
6270 {"1.0000", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_failbit
, 5, "1.00", TRUE
},
6271 {"-123456", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_failbit
, 5, "-123", TRUE
},
6272 {"3.5e2", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_failbit
, 5, "3.5e", TRUE
},
6273 {"3.e25", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_failbit
, 5, "3.e2", TRUE
},
6274 {"1.11f", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_goodbit
, 4, "1.11", FALSE
},
6275 {".5e-5", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_failbit
, 5, ".5e-", TRUE
},
6276 {".5e-", 5, IOSTATE_goodbit
, 0, 3, IOSTATE_goodbit
, 3, ".5e", FALSE
},
6277 {".5e2", 5, IOSTATE_goodbit
, 0, 4, IOSTATE_eofbit
, 4, ".5e2", FALSE
},
6278 {"1", 0, IOSTATE_goodbit
, 0, -1, IOSTATE_failbit
, 0, "", TRUE
},
6279 {"x", 0, IOSTATE_goodbit
, 0, -1, IOSTATE_failbit
, 0, "", TRUE
},
6280 {"", 0, IOSTATE_goodbit
, 0, -1, IOSTATE_failbit
, 0, "", TRUE
},
6281 {"", 1, IOSTATE_goodbit
, 0, 0, IOSTATE_eofbit
|IOSTATE_failbit
, 0, "", FALSE
},
6282 {"1.0", 1, IOSTATE_goodbit
, 0, 0, IOSTATE_failbit
, 1, "", TRUE
},
6283 {"1.0", 2, IOSTATE_goodbit
, 0, 1, IOSTATE_failbit
, 2, "1", TRUE
}
6286 pssb
= call_func2(p_strstreambuf_dynamic_ctor
, &ssb
, 64);
6287 ok(pssb
== &ssb
, "wrong return, expected %p got %p\n", &ssb
, pssb
);
6288 ret
= (int) call_func1(p_streambuf_allocate
, &ssb
.base
);
6289 ok(ret
== 1, "expected 1 got %d\n", ret
);
6290 pis
= call_func3(p_istream_sb_ctor
, &is
, &ssb
.base
, TRUE
);
6291 ok(pis
== &is
, "wrong return, expected %p got %p\n", &is
, pis
);
6293 for (i
= 0; i
< ARRAY_SIZE(tests
); i
++) {
6294 len
= strlen(tests
[i
].stream_content
);
6295 is
.base_ios
.state
= tests
[i
].initial_state
;
6296 is
.base_ios
.flags
= tests
[i
].flags
;
6297 ssb
.base
.eback
= ssb
.base
.gptr
= ssb
.base
.base
;
6298 ssb
.base
.egptr
= ssb
.base
.base
+ len
;
6299 memcpy(ssb
.base
.base
, tests
[i
].stream_content
, len
);
6301 ret
= (int) call_func3(p_istream_getdouble
, &is
, buffer
, tests
[i
].count
);
6302 ok(ret
== tests
[i
].expected_return
||
6303 /* xp, 2k3 */ broken(tests
[i
].broken
&& ret
== tests
[i
].expected_return
+ 1),
6304 "Test %d: wrong return, expected %d got %d\n", i
, tests
[i
].expected_return
, ret
);
6305 ok(is
.base_ios
.state
== tests
[i
].expected_state
, "Test %d: expected %d got %d\n", i
,
6306 tests
[i
].expected_state
, is
.base_ios
.state
);
6307 ok(ssb
.base
.gptr
== ssb
.base
.base
+ tests
[i
].expected_offset
, "Test %d: expected %p got %p\n",
6308 i
, ssb
.base
.base
+ tests
[i
].expected_offset
, ssb
.base
.gptr
);
6309 ok(!strncmp(buffer
, tests
[i
].expected_buffer
, strlen(tests
[i
].expected_buffer
)),
6310 "Test %d: unexpected buffer content, got '%s'\n", i
, buffer
);
6313 call_func1(p_istream_vbase_dtor
, &is
);
6314 call_func1(p_strstreambuf_dtor
, &ssb
);
6317 static void test_istream_read(void)
6320 strstreambuf ssb
, ssb_test
, *pssb
;
6323 /* makes tables narrower */
6324 const ios_io_state IOSTATE_faileof
= IOSTATE_failbit
|IOSTATE_eofbit
;
6326 char c
, st
[8], char_out
[] = {-85, ' ', 'a', -50};
6327 const char *str_out
[] = {"AAAAAAA", "abc", "a", "abc", "ab", "abcde"};
6328 short s
, short_out
[] = {32767, -32768};
6329 unsigned short us
, ushort_out
[] = {65535u, 65534u, 32768u};
6330 int n
, int_out
[] = {123456789, 0, 1, -500, 0x8000, 2147483646, 2147483647, -2147483647, -2147483647-1, -1};
6331 unsigned un
, uint_out
[] = {4294967295u, 4294967294u, 2147483648u, 1u};
6332 LONG l
, long_out
[] = {2147483647l, -2147483647l-1};
6333 ULONG ul
, ulong_out
[] = {4294967295ul, 4294967294ul, 2147483648ul, 1ul};
6334 float f
, float_out
[] = {123.456f
, 0.0f
, 1.0f
, 0.1f
, -1.0f
, -0.1f
, FLT_MIN
, -FLT_MIN
, FLT_MAX
, -FLT_MAX
};
6335 double d
, double_out
[] = {1.0, 0.1, 0.0, INFINITY
, -INFINITY
};
6336 const char *sbf_out
[] = {"", "abcd\n", "abcdef"};
6337 struct istream_read_test
{
6338 enum { type_chr
, type_str
, type_shrt
, type_ushrt
, type_int
, type_uint
,
6339 type_long
, type_ulong
, type_flt
, type_dbl
, type_ldbl
, type_sbf
} type
;
6340 const char *stream_content
;
6344 ios_io_state expected_state
;
6346 int expected_offset
;
6350 {type_chr
, "", FLAGS_skipws
, 6, /* -85 */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6351 {type_chr
, " ", FLAGS_skipws
, 6, /* -85 */ 0, IOSTATE_faileof
, 6, 2, FALSE
},
6352 {type_chr
, " abc ", 0, 6, /* ' ' */ 1, IOSTATE_goodbit
, 6, 1, FALSE
},
6353 {type_chr
, " abc ", FLAGS_skipws
, 6, /* 'a' */ 2, IOSTATE_goodbit
, 6, 2, FALSE
},
6354 {type_chr
, " a", FLAGS_skipws
, 0, /* 'a' */ 2, IOSTATE_goodbit
, 0, 2, FALSE
},
6355 {type_chr
, "\xce", 0, 6, /* -50 */ 3, IOSTATE_goodbit
, 6, 1, FALSE
},
6357 {type_str
, "", FLAGS_skipws
, 6, /* "AAAAAAA" */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6358 {type_str
, " ", FLAGS_skipws
, 6, /* "AAAAAAA" */ 0, IOSTATE_faileof
, 6, 1, FALSE
},
6359 {type_str
, " abc", FLAGS_skipws
, 6, /* "abc" */ 1, IOSTATE_eofbit
, 0, 4, FALSE
},
6360 {type_str
, " abc ", FLAGS_skipws
, 6, /* "abc" */ 1, IOSTATE_goodbit
, 0, 4, FALSE
},
6361 {type_str
, " a\tc", FLAGS_skipws
, 6, /* "a" */ 2, IOSTATE_goodbit
, 0, 2, FALSE
},
6362 {type_str
, " a\tc", 0, 6, /* "AAAAAAA" */ 0, IOSTATE_failbit
, 0, 0, FALSE
},
6363 {type_str
, "abcde\n", 0, 4, /* "abc" */ 3, IOSTATE_goodbit
, 0, 3, FALSE
},
6364 {type_str
, "abc\n", 0, 4, /* "abc" */ 3, IOSTATE_goodbit
, 0, 3, FALSE
},
6365 {type_str
, "ab\r\n", 0, 3, /* "ab" */ 4, IOSTATE_goodbit
, 0, 2, FALSE
},
6366 {type_str
, "abc", 0, 4, /* "abc" */ 3, IOSTATE_goodbit
, 0, 3, FALSE
},
6367 {type_str
, "abc", 0, 1, /* "AAAAAAA" */ 0, IOSTATE_failbit
, 0, 0, FALSE
},
6368 {type_str
, "\n", 0, 1, /* "AAAAAAA" */ 0, IOSTATE_failbit
, 0, 0, FALSE
},
6369 {type_str
, "abcde\n", 0, 0, /* "abcde" */ 5, IOSTATE_goodbit
, 0, 5, FALSE
},
6370 {type_str
, "\n", 0, 0, /* "AAAAAAA" */ 0, IOSTATE_failbit
, 0, 0, FALSE
},
6371 {type_str
, "abcde", 0, -1, /* "abcde" */ 5, IOSTATE_eofbit
, 0, 5, FALSE
},
6373 {type_shrt
, "32767", 0, 6, /* 32767 */ 0, IOSTATE_eofbit
, 6, 5, FALSE
},
6374 {type_shrt
, "32768", 0, 6, /* 32767 */ 0, IOSTATE_faileof
, 6, 5, FALSE
},
6375 {type_shrt
, "2147483648", 0, 6, /* 32767 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6376 {type_shrt
, "4294967296", 0, 6, /* 32767 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6377 {type_shrt
, "-32768", 0, 6, /* -32768 */ 1, IOSTATE_eofbit
, 6, 6, FALSE
},
6378 {type_shrt
, "-32769", 0, 6, /* -32768 */ 1, IOSTATE_faileof
, 6, 6, FALSE
},
6379 {type_shrt
, "-2147483648", 0, 6, /* -32768 */ 1, IOSTATE_faileof
, 6, 11, FALSE
},
6380 /* unsigned short */
6381 {type_ushrt
, "65535", 0, 6, /* 65535 */ 0, IOSTATE_eofbit
, 6, 5, FALSE
},
6382 {type_ushrt
, "65536", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 5, FALSE
},
6383 {type_ushrt
, "12345678", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 8, FALSE
},
6384 {type_ushrt
, "2147483648", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6385 {type_ushrt
, "4294967296", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6386 {type_ushrt
, "99999999999999", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 14, FALSE
},
6387 {type_ushrt
, "-1", 0, 6, /* 65535 */ 0, IOSTATE_eofbit
, 6, 2, TRUE
},
6388 {type_ushrt
, "-2", 0, 6, /* 65534 */ 1, IOSTATE_eofbit
, 6, 2, FALSE
},
6389 {type_ushrt
, "-32768", 0, 6, /* 32768 */ 2, IOSTATE_eofbit
, 6, 6, FALSE
},
6390 {type_ushrt
, "-32769", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 6, FALSE
},
6391 {type_ushrt
, "-2147483648", 0, 6, /* 65535 */ 0, IOSTATE_faileof
, 6, 11, FALSE
},
6393 {type_int
, "", FLAGS_skipws
, 6, /* 123456789 */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6394 {type_int
, " 0", FLAGS_skipws
, 6, /* 0 */ 1, IOSTATE_eofbit
, 6, 2, FALSE
},
6395 {type_int
, " 0", 0, 6, /* 0 */ 1, IOSTATE_failbit
, 6, 0, FALSE
},
6396 {type_int
, "+1 ", 0, 6, /* 1 */ 2, IOSTATE_goodbit
, 6, 2, FALSE
},
6397 {type_int
, "1L", 0, 6, /* 1 */ 2, IOSTATE_goodbit
, 6, 1, FALSE
},
6398 {type_int
, "-500.0", 0, 6, /* -500 */ 3, IOSTATE_goodbit
, 6, 4, FALSE
},
6399 {type_int
, "0x8000", 0, 6, /* 0x8000 */ 4, IOSTATE_eofbit
, 6, 6, FALSE
},
6400 {type_int
, "0xtest", 0, 6, /* 0 */ 1, IOSTATE_failbit
, 6, 0, FALSE
},
6401 {type_int
, "0test", 0, 6, /* 0 */ 1, IOSTATE_goodbit
, 6, 1, FALSE
},
6402 {type_int
, "0x7ffffffe", 0, 6, /* 2147483646 */ 5, IOSTATE_eofbit
, 6, 10, FALSE
},
6403 {type_int
, "0x7fffffff", 0, 6, /* 2147483647 */ 6, IOSTATE_eofbit
, 6, 10, FALSE
},
6404 {type_int
, "0x80000000", 0, 6, /* 2147483647 */ 6, IOSTATE_eofbit
, 6, 10, FALSE
},
6405 {type_int
, "0xdeadbeef", 0, 6, /* 2147483647 */ 6, IOSTATE_eofbit
, 6, 10, FALSE
},
6406 {type_int
, "2147483648", 0, 6, /* 2147483647 */ 6, IOSTATE_eofbit
, 6, 10, FALSE
},
6407 {type_int
, "4294967295", 0, 6, /* 2147483647 */ 6, IOSTATE_eofbit
, 6, 10, FALSE
},
6408 {type_int
, "-2147483647", 0, 6, /* -2147483647 */ 7, IOSTATE_eofbit
, 6, 11, FALSE
},
6409 {type_int
, "-2147483648", 0, 6, /* -2147483648 */ 8, IOSTATE_eofbit
, 6, 11, FALSE
},
6410 {type_int
, "-2147483649", 0, 6, /* -2147483648 */ 8, IOSTATE_eofbit
, 6, 11, FALSE
},
6411 {type_int
, "-1f", FLAGS_dec
, 6, /* -1 */ 9, IOSTATE_goodbit
, 6, 2, FALSE
},
6413 {type_uint
, "4294967295", 0, 6, /* 4294967295 */ 0, IOSTATE_eofbit
, 6, 10, TRUE
},
6414 {type_uint
, "4294967296", 0, 6, /* 4294967295 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6415 {type_uint
, "99999999999999", 0, 6, /* 4294967295 */ 0, IOSTATE_faileof
, 6, 14, FALSE
},
6416 {type_uint
, "-1", 0, 6, /* 4294967295 */ 0, IOSTATE_eofbit
, 6, 2, TRUE
},
6417 {type_uint
, "-2", 0, 6, /* 4294967294 */ 1, IOSTATE_eofbit
, 6, 2, FALSE
},
6418 {type_uint
, "-2147483648", 0, 6, /* 2147483648 */ 2, IOSTATE_eofbit
, 6, 11, FALSE
},
6419 {type_uint
, "-4294967295", 0, 6, /* 1 */ 3, IOSTATE_eofbit
, 6, 11, FALSE
},
6420 {type_uint
, "-9999999999999", 0, 6, /* 1 */ 3, IOSTATE_eofbit
, 6, 14, FALSE
},
6422 {type_long
, "2147483647", 0, 6, /* 2147483647 */ 0, IOSTATE_eofbit
, 6, 10, TRUE
},
6423 {type_long
, "2147483648", 0, 6, /* 2147483647 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6424 {type_long
, "4294967295", 0, 6, /* 2147483647 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6425 {type_long
, "-2147483648", 0, 6, /* -2147483648 */ 1, IOSTATE_eofbit
, 6, 11, TRUE
},
6426 {type_long
, "-2147483649", 0, 6, /* -2147483648 */ 1, IOSTATE_faileof
, 6, 11, FALSE
},
6427 {type_long
, "-9999999999999", 0, 6, /* -2147483648 */ 1, IOSTATE_faileof
, 6, 14, FALSE
},
6429 {type_ulong
, "4294967295", 0, 6, /* 4294967295 */ 0, IOSTATE_eofbit
, 6, 10, TRUE
},
6430 {type_ulong
, "4294967296", 0, 6, /* 4294967295 */ 0, IOSTATE_faileof
, 6, 10, FALSE
},
6431 {type_ulong
, "99999999999999", 0, 6, /* 4294967295 */ 0, IOSTATE_faileof
, 6, 14, FALSE
},
6432 {type_ulong
, "-1", 0, 6, /* 4294967295 */ 0, IOSTATE_eofbit
, 6, 2, TRUE
},
6433 {type_ulong
, "-2", 0, 6, /* 4294967294 */ 1, IOSTATE_eofbit
, 6, 2, FALSE
},
6434 {type_ulong
, "-2147483648", 0, 6, /* 2147483648 */ 2, IOSTATE_eofbit
, 6, 11, FALSE
},
6435 {type_ulong
, "-4294967295", 0, 6, /* 1 */ 3, IOSTATE_eofbit
, 6, 11, FALSE
},
6436 {type_ulong
, "-9999999999999", 0, 6, /* 1 */ 3, IOSTATE_eofbit
, 6, 14, FALSE
},
6438 {type_flt
, "", FLAGS_skipws
, 6, /* 123.456 */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6439 {type_flt
, "", 0, 6, /* 123.456 */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6440 {type_flt
, " 0", 0, 6, /* 123.456 */ 0, IOSTATE_failbit
, 6, 0, FALSE
},
6441 {type_flt
, " 0", FLAGS_skipws
, 6, /* 0.0 */ 1, IOSTATE_eofbit
, 6, 2, FALSE
},
6442 {type_flt
, "-0 ", 0, 6, /* 0.0 */ 1, IOSTATE_goodbit
, 6, 2, FALSE
},
6443 {type_flt
, "+1.0", 0, 6, /* 1.0 */ 2, IOSTATE_eofbit
, 6, 4, FALSE
},
6444 {type_flt
, "1.#INF", 0, 6, /* 1.0 */ 2, IOSTATE_goodbit
, 6, 2, FALSE
},
6445 {type_flt
, "0.100000000000000e1", 0, 6, /* 1.0 */ 2, IOSTATE_eofbit
, 6, 19, FALSE
},
6447 {type_flt, "0.1000000000000000e1", 0, 6, 0.1 3, IOSTATE_failbit, 6, 20, FALSE}, */
6448 {type_flt
, "0.10000000000000000e1", 0, 6, /* 0.1 */ 3, IOSTATE_failbit
, 6, 20, TRUE
},
6449 {type_flt
, "-0.10000000000000e1", 0, 6, /* -1.0 */ 4, IOSTATE_eofbit
, 6, 19, FALSE
},
6451 {type_flt, "-0.100000000000000e1 ", 0, 6, -0.1 5, IOSTATE_failbit, 6, 20, FALSE}, */
6452 {type_flt
, "-0.1000000000000000e1", 0, 6, /* -0.1 */ 5, IOSTATE_failbit
, 6, 20, TRUE
},
6453 {type_flt
, "5.1691126e-77", 0, 6, /* FLT_MIN */ 6, IOSTATE_eofbit
, 6, 13, FALSE
},
6454 {type_flt
, "-2.49873e-41f", 0, 6, /* -FLT_MIN */ 7, IOSTATE_goodbit
, 6, 12, FALSE
},
6455 {type_flt
, "1.23456789e1234", 0, 6, /* FLT_MAX */ 8, IOSTATE_eofbit
, 6, 15, FALSE
},
6456 {type_flt
, "-1.23456789e1234", 0, 6, /* -FLT_MAX */ 9, IOSTATE_eofbit
, 6, 16, FALSE
},
6458 {type_dbl
, "0.10000000000000000000000e1", 0, 6, /* 1.0 */ 0, IOSTATE_eofbit
, 6, 27, FALSE
},
6460 {type_dbl, "0.100000000000000000000000e1", 0, 6, 0.1 1, IOSTATE_failbit, 6, 28, FALSE}, */
6461 {type_dbl
, "0.1000000000000000000000000e1", 0, 6, /* 0.1 */ 1, IOSTATE_failbit
, 6, 28, TRUE
},
6462 {type_dbl
, "3.698124698114778e-6228", 0, 6, /* 0.0 */ 2, IOSTATE_eofbit
, 6, 23, FALSE
},
6463 {type_dbl
, "-3.698124698114778e-6228", 0, 6, /* 0.0 */ 2, IOSTATE_eofbit
, 6, 24, FALSE
},
6464 {type_dbl
, "3.698124698114778e6228", 0, 6, /* INF */ 3, IOSTATE_eofbit
, 6, 22, FALSE
},
6465 {type_dbl
, "-3.698124698114778e6228A", 0, 6, /* -INF */ 4, IOSTATE_goodbit
, 6, 23, FALSE
},
6467 {type_ldbl
, "0.100000000000000000000000000e1", 0, 6, /* 1.0 */ 0, IOSTATE_eofbit
, 6, 31, FALSE
},
6469 {type_ldbl, "0.1000000000000000000000000000e1", 0, 6, 0.1 1, IOSTATE_failbit, 6, 32, FALSE}, */
6470 {type_ldbl
, "0.10000000000000000000000000000e1", 0, 6, /* 0.1 */ 1, IOSTATE_failbit
, 6, 32, TRUE
},
6471 {type_ldbl
, "1.69781699841e-1475", 0, 6, /* 0.0 */ 2, IOSTATE_eofbit
, 6, 19, FALSE
},
6472 {type_ldbl
, "-1.69781699841e-1475l", 0, 6, /* 0.0 */ 2, IOSTATE_goodbit
, 6, 20, FALSE
},
6473 {type_ldbl
, "1.69781699841e1475", 0, 6, /* INF */ 3, IOSTATE_eofbit
, 6, 18, FALSE
},
6474 {type_ldbl
, "-1.69781699841e1475", 0, 6, /* -INF */ 4, IOSTATE_eofbit
, 6, 19, FALSE
},
6476 {type_sbf
, "", FLAGS_skipws
, 6, /* "" */ 0, IOSTATE_faileof
, 6, 0, FALSE
},
6477 {type_sbf
, " ", FLAGS_skipws
, 6, /* "" */ 0, IOSTATE_faileof
, 6, 2, FALSE
},
6478 {type_sbf
, "\r\nabcd\n", FLAGS_skipws
, 6, /* "abc\n" */ 1, IOSTATE_goodbit
, 6, 8, FALSE
},
6479 {type_sbf
, "abcdefg\n", 0, 6, /* "abcde" */ 2, IOSTATE_failbit
, 6, 9, FALSE
},
6480 {type_sbf
, "abcdefg\n", 0, 0, /* "" */ 0, IOSTATE_failbit
, 0, 9, FALSE
}
6483 pssb
= call_func2(p_strstreambuf_dynamic_ctor
, &ssb_test
, 64);
6484 ok(pssb
== &ssb_test
, "wrong return, expected %p got %p\n", &ssb_test
, pssb
);
6485 ret
= (int) call_func1(p_streambuf_allocate
, &ssb_test
.base
);
6486 ok(ret
== 1, "expected 1 got %d\n", ret
);
6487 ssb_test
.dynamic
= 0;
6488 pssb
= call_func2(p_strstreambuf_dynamic_ctor
, &ssb
, 64);
6489 ok(pssb
== &ssb
, "wrong return, expected %p got %p\n", &ssb
, pssb
);
6490 ret
= (int) call_func1(p_streambuf_allocate
, &ssb
.base
);
6491 ok(ret
== 1, "expected 1 got %d\n", ret
);
6492 pis
= call_func3(p_istream_sb_ctor
, &is
, &ssb
.base
, TRUE
);
6493 ok(pis
== &is
, "wrong return, expected %p got %p\n", &is
, pis
);
6495 for (i
= 0; i
< ARRAY_SIZE(tests
); i
++) {
6496 len
= strlen(tests
[i
].stream_content
);
6497 is
.base_ios
.state
= IOSTATE_goodbit
;
6498 is
.base_ios
.flags
= tests
[i
].flags
;
6499 is
.base_ios
.width
= tests
[i
].width
;
6500 ssb
.base
.eback
= ssb
.base
.gptr
= ssb
.base
.base
;
6501 ssb
.base
.egptr
= ssb
.base
.base
+ len
;
6502 memcpy(ssb
.base
.base
, tests
[i
].stream_content
, len
);
6504 switch (tests
[i
].type
) {
6507 pis
= call_func2(p_istream_read_char
, &is
, &c
);
6508 ok(c
== char_out
[tests
[i
].expected_val
], "Test %d: expected %d got %d\n", i
,
6509 char_out
[tests
[i
].expected_val
], c
);
6512 memset(st
, 'A', sizeof(st
));
6514 pis
= call_func2(p_istream_read_str
, &is
, st
);
6515 ok(!strcmp(st
, str_out
[tests
[i
].expected_val
]), "Test %d: expected %s got %s\n", i
,
6516 str_out
[tests
[i
].expected_val
], st
);
6520 pis
= call_func2(p_istream_read_short
, &is
, &s
);
6521 ok(s
== short_out
[tests
[i
].expected_val
], "Test %d: expected %hd got %hd\n", i
,
6522 short_out
[tests
[i
].expected_val
], s
);
6526 pis
= call_func2(p_istream_read_unsigned_short
, &is
, &us
);
6527 ok(us
== ushort_out
[tests
[i
].expected_val
], "Test %d: expected %hu got %hu\n", i
,
6528 ushort_out
[tests
[i
].expected_val
], us
);
6532 pis
= call_func2(p_istream_read_int
, &is
, &n
);
6533 ok(n
== int_out
[tests
[i
].expected_val
], "Test %d: expected %d got %d\n", i
,
6534 int_out
[tests
[i
].expected_val
], n
);
6538 pis
= call_func2(p_istream_read_unsigned_int
, &is
, &un
);
6539 ok(un
== uint_out
[tests
[i
].expected_val
], "Test %d: expected %u got %u\n", i
,
6540 uint_out
[tests
[i
].expected_val
], un
);
6544 pis
= call_func2(p_istream_read_long
, &is
, &l
);
6545 ok(l
== long_out
[tests
[i
].expected_val
], "Test %d: expected %d got %d\n", i
,
6546 long_out
[tests
[i
].expected_val
], l
);
6550 pis
= call_func2(p_istream_read_unsigned_long
, &is
, &ul
);
6551 ok(ul
== ulong_out
[tests
[i
].expected_val
], "Test %d: expected %u got %u\n", i
,
6552 ulong_out
[tests
[i
].expected_val
], ul
);
6556 pis
= call_func2(p_istream_read_float
, &is
, &f
);
6557 ok(f
== float_out
[tests
[i
].expected_val
], "Test %d: expected %f got %f\n", i
,
6558 float_out
[tests
[i
].expected_val
], f
);
6562 pis
= call_func2(p_istream_read_double
, &is
, &d
);
6563 ok(d
== double_out
[tests
[i
].expected_val
], "Test %d: expected %f got %f\n", i
,
6564 double_out
[tests
[i
].expected_val
], d
);
6568 pis
= call_func2(p_istream_read_long_double
, &is
, &d
);
6569 ok(d
== double_out
[tests
[i
].expected_val
], "Test %d: expected %f got %f\n", i
,
6570 double_out
[tests
[i
].expected_val
], d
);
6573 ssb_test
.base
.pbase
= ssb_test
.base
.pptr
= ssb_test
.base
.base
;
6574 ssb_test
.base
.epptr
= ssb_test
.base
.base
+ tests
[i
].width
;
6575 pis
= call_func2(p_istream_read_streambuf
, &is
, &ssb_test
.base
);
6576 len
= strlen(sbf_out
[tests
[i
].expected_val
]);
6577 ok(ssb_test
.base
.pptr
== ssb_test
.base
.pbase
+ len
, "Test %d: wrong put pointer, expected %p got %p\n",
6578 i
, ssb_test
.base
.pbase
+ len
, ssb_test
.base
.pptr
);
6579 ok(!strncmp(ssb_test
.base
.pbase
, sbf_out
[tests
[i
].expected_val
], len
),
6580 "Test %d: expected %s got %s\n", i
, sbf_out
[tests
[i
].expected_val
], ssb_test
.base
.pbase
);
6584 ok(pis
== &is
, "Test %d: wrong return, expected %p got %p\n", i
, &is
, pis
);
6585 ok(is
.base_ios
.state
== tests
[i
].expected_state
|| /* xp, 2k3 */ broken(tests
[i
].broken
),
6586 "Test %d: expected %d got %d\n", i
, tests
[i
].expected_state
, is
.base_ios
.state
);
6587 ok(is
.base_ios
.width
== tests
[i
].expected_width
, "Test %d: expected %d got %d\n", i
,
6588 tests
[i
].expected_width
, is
.base_ios
.width
);
6589 ok(ssb
.base
.gptr
== ssb
.base
.base
+ tests
[i
].expected_offset
||
6590 /* xp, 2k3 */ broken(tests
[i
].broken
), "Test %d: expected %p got %p\n", i
,
6591 ssb
.base
.base
+ tests
[i
].expected_offset
, ssb
.base
.gptr
);
6594 ssb_test
.dynamic
= 1;
6595 call_func1(p_istream_vbase_dtor
, &is
);
6596 call_func1(p_strstreambuf_dtor
, &ssb
);
6597 call_func1(p_strstreambuf_dtor
, &ssb_test
);
6600 static void test_istream_withassign(void)
6602 istream isa1
, isa2
, *pisa
;
6606 memset(&isa1
, 0xab, sizeof(istream
));
6607 memset(&isa2
, 0xab, sizeof(istream
));
6609 /* constructors/destructors */
6610 pisa
= call_func3(p_istream_withassign_sb_ctor
, &isa1
, NULL
, TRUE
);
6611 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6612 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6613 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6614 ok(isa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.sb
);
6615 ok(isa1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, isa1
.base_ios
.state
);
6616 ok(isa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa1
.base_ios
.delbuf
);
6617 ok(isa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.tie
);
6618 ok(isa1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa1
.base_ios
.flags
);
6619 ok(isa1
.base_ios
.precision
== 6, "expected 6 got %d\n", isa1
.base_ios
.precision
);
6620 ok(isa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa1
.base_ios
.fill
);
6621 ok(isa1
.base_ios
.width
== 0, "expected 0 got %d\n", isa1
.base_ios
.width
);
6622 ok(isa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", isa1
.base_ios
.do_lock
);
6623 call_func1(p_istream_withassign_vbase_dtor
, &isa1
);
6624 isa1
.extract_delim
= isa1
.count
= 0xabababab;
6625 memset(&isa1
.base_ios
, 0xab, sizeof(ios
));
6626 isa1
.base_ios
.delbuf
= 0;
6627 pisa
= call_func3(p_istream_withassign_sb_ctor
, &isa1
, NULL
, FALSE
);
6628 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6629 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6630 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6631 ok(isa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.sb
);
6632 ok(isa1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
6633 0xabababab|IOSTATE_badbit
, isa1
.base_ios
.state
);
6634 ok(isa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa1
.base_ios
.delbuf
);
6635 ok(isa1
.base_ios
.tie
== isa2
.base_ios
.tie
, "expected %p got %p\n", isa2
.base_ios
.tie
, isa1
.base_ios
.tie
);
6636 ok(isa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, isa1
.base_ios
.flags
);
6637 ok(isa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.precision
);
6638 ok(isa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", isa1
.base_ios
.fill
);
6639 ok(isa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.width
);
6640 ok(isa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.do_lock
);
6641 call_func1(p_istream_withassign_dtor
, &isa1
.base_ios
);
6642 isa1
.extract_delim
= isa1
.count
= 0xabababab;
6643 memset(&isa1
.base_ios
, 0xab, sizeof(ios
));
6644 pisa
= call_func3(p_istream_withassign_sb_ctor
, &isa1
, &sb
, TRUE
);
6645 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6646 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6647 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6648 ok(isa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, isa1
.base_ios
.sb
);
6649 ok(isa1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, isa1
.base_ios
.state
);
6650 ok(isa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa1
.base_ios
.delbuf
);
6651 ok(isa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.tie
);
6652 ok(isa1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa1
.base_ios
.flags
);
6653 ok(isa1
.base_ios
.precision
== 6, "expected 6 got %d\n", isa1
.base_ios
.precision
);
6654 ok(isa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa1
.base_ios
.fill
);
6655 ok(isa1
.base_ios
.width
== 0, "expected 0 got %d\n", isa1
.base_ios
.width
);
6656 ok(isa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", isa1
.base_ios
.do_lock
);
6657 call_func1(p_istream_withassign_vbase_dtor
, &isa1
);
6658 isa1
.extract_delim
= isa1
.count
= 0xabababab;
6659 memset(&isa1
.base_ios
, 0xab, sizeof(ios
));
6660 isa1
.base_ios
.delbuf
= 0;
6661 isa1
.base_ios
.state
= 0xabababab | IOSTATE_badbit
;
6662 pisa
= call_func3(p_istream_withassign_sb_ctor
, &isa1
, &sb
, FALSE
);
6663 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6664 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6665 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6666 ok(isa1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, isa1
.base_ios
.sb
);
6667 ok(isa1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.state
);
6668 ok(isa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa1
.base_ios
.delbuf
);
6669 ok(isa1
.base_ios
.tie
== isa2
.base_ios
.tie
, "expected %p got %p\n", isa2
.base_ios
.tie
, isa1
.base_ios
.tie
);
6670 ok(isa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, isa1
.base_ios
.flags
);
6671 ok(isa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.precision
);
6672 ok(isa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", isa1
.base_ios
.fill
);
6673 ok(isa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.width
);
6674 ok(isa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.do_lock
);
6675 call_func1(p_istream_withassign_dtor
, &isa1
.base_ios
);
6676 isa1
.extract_delim
= isa1
.count
= 0xabababab;
6677 pisa
= call_func2(p_istream_withassign_ctor
, &isa1
, TRUE
);
6678 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6679 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6680 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6681 ok(isa1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.sb
);
6682 ok(isa1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, isa1
.base_ios
.state
);
6683 ok(isa1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa1
.base_ios
.delbuf
);
6684 ok(isa1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa1
.base_ios
.tie
);
6685 ok(isa1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa1
.base_ios
.flags
);
6686 ok(isa1
.base_ios
.precision
== 6, "expected 6 got %d\n", isa1
.base_ios
.precision
);
6687 ok(isa1
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa1
.base_ios
.fill
);
6688 ok(isa1
.base_ios
.width
== 0, "expected 0 got %d\n", isa1
.base_ios
.width
);
6689 ok(isa1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", isa1
.base_ios
.do_lock
);
6690 call_func1(p_istream_withassign_vbase_dtor
, &isa1
);
6691 isa1
.extract_delim
= isa1
.count
= 0xabababab;
6692 memset(&isa1
.base_ios
, 0xab, sizeof(ios
));
6693 pisa
= call_func2(p_istream_withassign_ctor
, &isa1
, FALSE
);
6694 ok(pisa
== &isa1
, "wrong return, expected %p got %p\n", &isa1
, pisa
);
6695 ok(isa1
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6696 ok(isa1
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6697 ok(isa1
.base_ios
.sb
== isa2
.base_ios
.sb
, "expected %p got %p\n", isa2
.base_ios
.sb
, isa1
.base_ios
.sb
);
6698 ok(isa1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.state
);
6699 ok(isa1
.base_ios
.delbuf
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.delbuf
);
6700 ok(isa1
.base_ios
.tie
== isa2
.base_ios
.tie
, "expected %p got %p\n", isa2
.base_ios
.tie
, isa1
.base_ios
.tie
);
6701 ok(isa1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, isa1
.base_ios
.flags
);
6702 ok(isa1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.precision
);
6703 ok(isa1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", isa1
.base_ios
.fill
);
6704 ok(isa1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.width
);
6705 ok(isa1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa1
.base_ios
.do_lock
);
6706 call_func1(p_istream_withassign_dtor
, &isa1
.base_ios
);
6707 isa1
.extract_delim
= isa1
.count
= 0xcdcdcdcd;
6708 memset(&isa1
.base_ios
, 0xcd, sizeof(ios
));
6709 pisa
= call_func3(p_istream_withassign_copy_ctor
, &isa2
, &isa1
, TRUE
);
6710 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6711 ok(isa2
.extract_delim
== 0, "expected 0 got %d\n", isa1
.extract_delim
);
6712 ok(isa2
.count
== 0, "expected 0 got %d\n", isa1
.count
);
6713 ok(isa2
.base_ios
.sb
== isa1
.base_ios
.sb
, "expected %p got %p\n", isa1
.base_ios
.sb
, isa2
.base_ios
.sb
);
6714 ok(isa2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, isa2
.base_ios
.state
);
6715 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6716 ok(isa2
.base_ios
.tie
== isa1
.base_ios
.tie
, "expected %p got %p\n", isa1
.base_ios
.tie
, isa2
.base_ios
.tie
);
6717 ok(isa2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, isa2
.base_ios
.flags
);
6718 ok(isa2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", isa2
.base_ios
.precision
);
6719 ok(isa2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", isa2
.base_ios
.fill
);
6720 ok(isa2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", isa2
.base_ios
.width
);
6721 ok(isa2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", isa2
.base_ios
.do_lock
);
6722 call_func1(p_istream_withassign_vbase_dtor
, &isa2
);
6723 isa1
.base_ios
.sb
= NULL
;
6724 isa2
.extract_delim
= isa2
.count
= 0xabababab;
6725 memset(&isa2
.base_ios
, 0xab, sizeof(ios
));
6726 isa2
.base_ios
.delbuf
= 0;
6727 isa2
.base_ios
.flags
&= ~FLAGS_skipws
;
6728 pos
= isa2
.base_ios
.tie
;
6729 pisa
= call_func3(p_istream_withassign_copy_ctor
, &isa2
, &isa1
, FALSE
);
6730 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6731 ok(isa2
.extract_delim
== 0, "expected 0 got %d\n", isa2
.extract_delim
);
6732 ok(isa2
.count
== 0, "expected 0 got %d\n", isa2
.count
);
6733 ok(isa2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.sb
);
6734 ok(isa2
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
6735 0xabababab|IOSTATE_badbit
, isa2
.base_ios
.state
);
6736 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6737 ok(isa2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, isa2
.base_ios
.tie
);
6738 ok(isa2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, isa2
.base_ios
.flags
);
6739 ok(isa2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.precision
);
6740 ok(isa2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", isa2
.base_ios
.fill
);
6741 ok(isa2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.width
);
6742 ok(isa2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.do_lock
);
6743 call_func1(p_istream_withassign_dtor
, &isa2
.base_ios
);
6746 isa2
.extract_delim
= isa2
.count
= 0xabababab;
6747 isa2
.base_ios
.delbuf
= 0xabababab;
6748 pisa
= call_func2(p_istream_withassign_assign_sb
, &isa2
, &sb
);
6749 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6750 ok(isa2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.extract_delim
);
6751 ok(isa2
.count
== 0, "expected 0 got %d\n", isa2
.count
);
6752 ok(isa2
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, isa2
.base_ios
.sb
);
6753 ok(isa2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, isa2
.base_ios
.state
);
6754 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6755 ok(isa2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.tie
);
6756 ok(isa2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa2
.base_ios
.flags
);
6757 ok(isa2
.base_ios
.precision
== 6, "expected 6 got %d\n", isa2
.base_ios
.precision
);
6758 ok(isa2
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa2
.base_ios
.fill
);
6759 ok(isa2
.base_ios
.width
== 0, "expected 0 got %d\n", isa2
.base_ios
.width
);
6760 ok(isa2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.do_lock
);
6761 isa2
.count
= 0xabababab;
6762 memset(&isa2
.base_ios
, 0xab, sizeof(ios
));
6763 isa2
.base_ios
.delbuf
= 0;
6764 pisa
= call_func2(p_istream_withassign_assign_sb
, &isa2
, NULL
);
6765 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6766 ok(isa2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.extract_delim
);
6767 ok(isa2
.count
== 0, "expected 0 got %d\n", isa2
.count
);
6768 ok(isa2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.sb
);
6769 ok(isa2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, isa2
.base_ios
.state
);
6770 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6771 ok(isa2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.tie
);
6772 ok(isa2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa2
.base_ios
.flags
);
6773 ok(isa2
.base_ios
.precision
== 6, "expected 6 got %d\n", isa2
.base_ios
.precision
);
6774 ok(isa2
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa2
.base_ios
.fill
);
6775 ok(isa2
.base_ios
.width
== 0, "expected 0 got %d\n", isa2
.base_ios
.width
);
6776 ok(isa2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.do_lock
);
6777 isa2
.count
= 0xabababab;
6778 memset(&isa2
.base_ios
, 0xab, sizeof(ios
));
6779 isa2
.base_ios
.delbuf
= 0;
6780 pisa
= call_func2(p_istream_withassign_assign_is
, &isa2
, &isa1
);
6781 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6782 ok(isa2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.extract_delim
);
6783 ok(isa2
.count
== 0, "expected 0 got %d\n", isa2
.count
);
6784 ok(isa2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.sb
);
6785 ok(isa2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, isa2
.base_ios
.state
);
6786 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6787 ok(isa2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.tie
);
6788 ok(isa2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa2
.base_ios
.flags
);
6789 ok(isa2
.base_ios
.precision
== 6, "expected 6 got %d\n", isa2
.base_ios
.precision
);
6790 ok(isa2
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa2
.base_ios
.fill
);
6791 ok(isa2
.base_ios
.width
== 0, "expected 0 got %d\n", isa2
.base_ios
.width
);
6792 ok(isa2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.do_lock
);
6793 isa1
.base_ios
.sb
= &sb
;
6794 isa2
.count
= 0xabababab;
6795 memset(&isa2
.base_ios
, 0xab, sizeof(ios
));
6796 isa2
.base_ios
.delbuf
= 0;
6797 pisa
= call_func2(p_istream_withassign_assign
, &isa2
, &isa1
);
6798 ok(pisa
== &isa2
, "wrong return, expected %p got %p\n", &isa2
, pisa
);
6799 ok(isa2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.extract_delim
);
6800 ok(isa2
.count
== 0, "expected 0 got %d\n", isa2
.count
);
6801 ok(isa2
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, isa2
.base_ios
.sb
);
6802 ok(isa2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, isa2
.base_ios
.state
);
6803 ok(isa2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", isa2
.base_ios
.delbuf
);
6804 ok(isa2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, isa2
.base_ios
.tie
);
6805 ok(isa2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, isa2
.base_ios
.flags
);
6806 ok(isa2
.base_ios
.precision
== 6, "expected 6 got %d\n", isa2
.base_ios
.precision
);
6807 ok(isa2
.base_ios
.fill
== ' ', "expected 32 got %d\n", isa2
.base_ios
.fill
);
6808 ok(isa2
.base_ios
.width
== 0, "expected 0 got %d\n", isa2
.base_ios
.width
);
6809 ok(isa2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, isa2
.base_ios
.do_lock
);
6812 static void test_istrstream(void)
6814 istream is1
, is2
, *pis
;
6819 memset(&is1
, 0xab, sizeof(istream
));
6820 memset(&is2
, 0xab, sizeof(istream
));
6822 /* constructors/destructors */
6823 pis
= call_func4(p_istrstream_buffer_ctor
, &is1
, buffer
, 32, TRUE
);
6824 pssb
= (strstreambuf
*) is1
.base_ios
.sb
;
6825 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6826 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
6827 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
6828 ok(is1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is1
.base_ios
.sb
);
6829 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
6830 ok(is1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", is1
.base_ios
.delbuf
);
6831 ok(is1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.tie
);
6832 ok(is1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, is1
.base_ios
.flags
);
6833 ok(is1
.base_ios
.precision
== 6, "expected 6 got %d\n", is1
.base_ios
.precision
);
6834 ok(is1
.base_ios
.fill
== ' ', "expected 32 got %d\n", is1
.base_ios
.fill
);
6835 ok(is1
.base_ios
.width
== 0, "expected 0 got %d\n", is1
.base_ios
.width
);
6836 ok(is1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", is1
.base_ios
.do_lock
);
6837 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
6838 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
6839 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
6840 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
6841 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
6842 ok(pssb
->base
.ebuf
== buffer
+ 32, "wrong buffer end, expected %p got %p\n", buffer
+ 32, pssb
->base
.ebuf
);
6843 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
6844 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
6845 ok(pssb
->base
.egptr
== buffer
+ 32, "wrong get end, expected %p got %p\n", buffer
+ 32, pssb
->base
.egptr
);
6846 ok(pssb
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pssb
->base
.pbase
);
6847 ok(pssb
->base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, pssb
->base
.pptr
);
6848 ok(pssb
->base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, pssb
->base
.epptr
);
6849 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
6850 call_func1(p_istrstream_vbase_dtor
, &is1
);
6851 ok(is1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.sb
);
6852 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
6853 memset(&is1
, 0xab, sizeof(istream
));
6854 pis
= call_func4(p_istrstream_buffer_ctor
, &is1
, NULL
, -1, TRUE
);
6855 pssb
= (strstreambuf
*) is1
.base_ios
.sb
;
6856 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6857 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
6858 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
6859 ok(is1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is1
.base_ios
.sb
);
6860 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
6861 ok(is1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", is1
.base_ios
.delbuf
);
6862 ok(is1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.tie
);
6863 ok(is1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, is1
.base_ios
.flags
);
6864 ok(is1
.base_ios
.precision
== 6, "expected 6 got %d\n", is1
.base_ios
.precision
);
6865 ok(is1
.base_ios
.fill
== ' ', "expected 32 got %d\n", is1
.base_ios
.fill
);
6866 ok(is1
.base_ios
.width
== 0, "expected 0 got %d\n", is1
.base_ios
.width
);
6867 ok(is1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", is1
.base_ios
.do_lock
);
6868 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
6869 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
6870 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
6871 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
6872 ok(pssb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pssb
->base
.base
);
6873 ok(pssb
->base
.ebuf
== (char*) 0x7fffffff || pssb
->base
.ebuf
== (char*) -1,
6874 "wrong buffer end, expected 0x7fffffff or -1, got %p\n", pssb
->base
.ebuf
);
6875 ok(pssb
->base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, pssb
->base
.eback
);
6876 ok(pssb
->base
.gptr
== NULL
, "wrong get pointer, expected %p got %p\n", NULL
, pssb
->base
.gptr
);
6877 ok(pssb
->base
.egptr
== (char*) 0x7fffffff || pssb
->base
.egptr
== (char*) -1,
6878 "wrong get end, expected 0x7fffffff or -1, got %p\n", pssb
->base
.egptr
);
6879 ok(pssb
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pssb
->base
.pbase
);
6880 ok(pssb
->base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, pssb
->base
.pptr
);
6881 ok(pssb
->base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, pssb
->base
.epptr
);
6882 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
6883 call_func1(p_istrstream_vbase_dtor
, &is1
);
6884 ok(is1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.sb
);
6885 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
6886 is1
.extract_delim
= is1
.count
= 0xabababab;
6887 memset(&is1
.base_ios
, 0xab, sizeof(ios
));
6888 is1
.base_ios
.delbuf
= 0;
6889 strcpy(buffer
, "Test");
6890 pis
= call_func4(p_istrstream_buffer_ctor
, &is1
, buffer
, 0, FALSE
);
6891 pssb
= (strstreambuf
*) is1
.base_ios
.sb
;
6892 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6893 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
6894 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
6895 ok(is1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is1
.base_ios
.sb
);
6896 ok(is1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.state
);
6897 ok(is1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", is1
.base_ios
.delbuf
);
6898 ok(is1
.base_ios
.tie
== is2
.base_ios
.tie
, "expected %p got %p\n", is2
.base_ios
.tie
, is1
.base_ios
.tie
);
6899 ok(is1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, is1
.base_ios
.flags
);
6900 ok(is1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.precision
);
6901 ok(is1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", is1
.base_ios
.fill
);
6902 ok(is1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.width
);
6903 ok(is1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.do_lock
);
6904 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
6905 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
6906 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
6907 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
6908 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
6909 ok(pssb
->base
.ebuf
== buffer
+ 4, "wrong buffer end, expected %p got %p\n", buffer
+ 4, pssb
->base
.ebuf
);
6910 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
6911 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
6912 ok(pssb
->base
.egptr
== buffer
+ 4, "wrong get end, expected %p got %p\n", buffer
+ 4, pssb
->base
.egptr
);
6913 ok(pssb
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pssb
->base
.pbase
);
6914 ok(pssb
->base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, pssb
->base
.pptr
);
6915 ok(pssb
->base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, pssb
->base
.epptr
);
6916 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
6917 call_func1(p_istrstream_dtor
, &is1
.base_ios
);
6918 ok(is1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, is1
.base_ios
.sb
);
6919 ok(is1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.state
);
6920 call_func1(p_strstreambuf_dtor
, pssb
);
6921 p_operator_delete(pssb
);
6923 memset(&is1
, 0xab, sizeof(istream
));
6925 pis
= call_func3(p_istrstream_str_ctor
, &is1
, buffer
, TRUE
);
6926 pssb
= (strstreambuf
*) is1
.base_ios
.sb
;
6927 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6928 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
6929 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
6930 ok(is1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is1
.base_ios
.sb
);
6931 ok(is1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is1
.base_ios
.state
);
6932 ok(is1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", is1
.base_ios
.delbuf
);
6933 ok(is1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.tie
);
6934 ok(is1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, is1
.base_ios
.flags
);
6935 ok(is1
.base_ios
.precision
== 6, "expected 6 got %d\n", is1
.base_ios
.precision
);
6936 ok(is1
.base_ios
.fill
== ' ', "expected 32 got %d\n", is1
.base_ios
.fill
);
6937 ok(is1
.base_ios
.width
== 0, "expected 0 got %d\n", is1
.base_ios
.width
);
6938 ok(is1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", is1
.base_ios
.do_lock
);
6939 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
6940 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
6941 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
6942 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
6943 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
6944 ok(pssb
->base
.ebuf
== buffer
, "wrong buffer end, expected %p got %p\n", buffer
, pssb
->base
.ebuf
);
6945 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
6946 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
6947 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
6948 ok(pssb
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pssb
->base
.pbase
);
6949 ok(pssb
->base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, pssb
->base
.pptr
);
6950 ok(pssb
->base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, pssb
->base
.epptr
);
6951 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
6952 call_func1(p_istrstream_vbase_dtor
, &is1
);
6953 ok(is1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is1
.base_ios
.sb
);
6954 ok(is1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is1
.base_ios
.state
);
6955 if (0) /* crashes on native */
6956 pis
= call_func3(p_istrstream_str_ctor
, &is1
, NULL
, TRUE
);
6957 is1
.extract_delim
= is1
.count
= 0xabababab;
6958 memset(&is1
.base_ios
, 0xab, sizeof(ios
));
6959 is1
.base_ios
.delbuf
= 0;
6960 pis
= call_func3(p_istrstream_str_ctor
, &is1
, buffer
, FALSE
);
6961 pssb
= (strstreambuf
*) is1
.base_ios
.sb
;
6962 ok(pis
== &is1
, "wrong return, expected %p got %p\n", &is1
, pis
);
6963 ok(is1
.extract_delim
== 0, "expected 0 got %d\n", is1
.extract_delim
);
6964 ok(is1
.count
== 0, "expected 0 got %d\n", is1
.count
);
6965 ok(is1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, is1
.base_ios
.sb
);
6966 ok(is1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.state
);
6967 ok(is1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", is1
.base_ios
.delbuf
);
6968 ok(is1
.base_ios
.tie
== is2
.base_ios
.tie
, "expected %p got %p\n", is2
.base_ios
.tie
, is1
.base_ios
.tie
);
6969 ok(is1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, is1
.base_ios
.flags
);
6970 ok(is1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.precision
);
6971 ok(is1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", is1
.base_ios
.fill
);
6972 ok(is1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.width
);
6973 ok(is1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.do_lock
);
6974 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
6975 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
6976 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
6977 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
6978 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
6979 ok(pssb
->base
.ebuf
== buffer
, "wrong buffer end, expected %p got %p\n", buffer
, pssb
->base
.ebuf
);
6980 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
6981 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
6982 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
6983 ok(pssb
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pssb
->base
.pbase
);
6984 ok(pssb
->base
.pptr
== NULL
, "wrong put pointer, expected %p got %p\n", NULL
, pssb
->base
.pptr
);
6985 ok(pssb
->base
.epptr
== NULL
, "wrong put end, expected %p got %p\n", NULL
, pssb
->base
.epptr
);
6986 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
6987 call_func1(p_istrstream_dtor
, &is1
.base_ios
);
6988 ok(is1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, is1
.base_ios
.sb
);
6989 ok(is1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is1
.base_ios
.state
);
6990 call_func1(p_strstreambuf_dtor
, pssb
);
6991 p_operator_delete(pssb
);
6993 is1
.extract_delim
= is1
.count
= 0xcdcdcdcd;
6994 memset(&is1
.base_ios
, 0xcd, sizeof(ios
));
6995 pis
= call_func3(p_istrstream_copy_ctor
, &is2
, &is1
, TRUE
);
6996 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
6997 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
6998 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
6999 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
7000 ok(is2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, is2
.base_ios
.state
);
7001 ok(is2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", is2
.base_ios
.delbuf
);
7002 ok(is2
.base_ios
.tie
== is1
.base_ios
.tie
, "expected %p got %p\n", is1
.base_ios
.tie
, is2
.base_ios
.tie
);
7003 ok(is2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, is2
.base_ios
.flags
);
7004 ok(is2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", is2
.base_ios
.precision
);
7005 ok(is2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", is2
.base_ios
.fill
);
7006 ok(is2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", is2
.base_ios
.width
);
7007 ok(is2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", is2
.base_ios
.do_lock
);
7008 call_func1(p_istrstream_vbase_dtor
, &is2
);
7009 ok(is2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.sb
);
7010 ok(is2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, is2
.base_ios
.state
);
7011 is2
.extract_delim
= is2
.count
= 0xabababab;
7012 memset(&is2
.base_ios
, 0xab, sizeof(ios
));
7013 is2
.base_ios
.delbuf
= 0;
7014 pos
= is2
.base_ios
.tie
;
7015 pis
= call_func3(p_istrstream_copy_ctor
, &is2
, &is1
, FALSE
);
7016 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
7017 ok(is2
.extract_delim
== 0, "expected 0 got %d\n", is2
.extract_delim
);
7018 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
7019 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
7020 ok(is2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.state
);
7021 ok(is2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", is2
.base_ios
.delbuf
);
7022 ok(is2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, is2
.base_ios
.tie
);
7023 ok(is2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, is2
.base_ios
.flags
);
7024 ok(is2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.precision
);
7025 ok(is2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", is2
.base_ios
.fill
);
7026 ok(is2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.width
);
7027 ok(is2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.do_lock
);
7028 call_func1(p_istrstream_dtor
, &is2
.base_ios
);
7031 is2
.extract_delim
= is2
.count
= 0xabababab;
7032 memset(&is2
.base_ios
, 0xab, sizeof(ios
));
7033 is2
.base_ios
.delbuf
= 0;
7034 pis
= call_func2(p_istrstream_assign
, &is2
, &is1
);
7035 ok(pis
== &is2
, "wrong return, expected %p got %p\n", &is2
, pis
);
7036 ok(is2
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.extract_delim
);
7037 ok(is2
.count
== 0, "expected 0 got %d\n", is2
.count
);
7038 ok(is2
.base_ios
.sb
== is1
.base_ios
.sb
, "expected %p got %p\n", is1
.base_ios
.sb
, is2
.base_ios
.sb
);
7039 ok(is2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, is2
.base_ios
.state
);
7040 ok(is2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", is2
.base_ios
.delbuf
);
7041 ok(is2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, is2
.base_ios
.tie
);
7042 ok(is2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, is2
.base_ios
.flags
);
7043 ok(is2
.base_ios
.precision
== 6, "expected 6 got %d\n", is2
.base_ios
.precision
);
7044 ok(is2
.base_ios
.fill
== ' ', "expected 32 got %d\n", is2
.base_ios
.fill
);
7045 ok(is2
.base_ios
.width
== 0, "expected 0 got %d\n", is2
.base_ios
.width
);
7046 ok(is2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, is2
.base_ios
.do_lock
);
7049 static void test_iostream(void)
7051 iostream ios1
, ios2
, *pios
;
7055 memset(&ios1
, 0xab, sizeof(iostream
));
7056 memset(&ios2
, 0xab, sizeof(iostream
));
7058 /* constructors/destructors */
7059 pios
= call_func3(p_iostream_sb_ctor
, &ios1
, NULL
, TRUE
);
7060 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7061 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7062 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7063 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7064 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7065 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7066 ok(ios1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios1
.base_ios
.delbuf
);
7067 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7068 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7069 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7070 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7071 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7072 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7073 call_func1(p_iostream_vbase_dtor
, &ios1
);
7074 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7075 ios1
.base2
.unknown
= 0xabababab;
7076 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7077 ios1
.base_ios
.delbuf
= 0;
7078 pios
= call_func3(p_iostream_sb_ctor
, &ios1
, NULL
, FALSE
);
7079 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7080 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7081 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7082 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7083 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7084 ok(ios1
.base_ios
.state
== (0xabababab|IOSTATE_badbit
), "expected %d got %d\n",
7085 0xabababab|IOSTATE_badbit
, ios1
.base_ios
.state
);
7086 ok(ios1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios1
.base_ios
.delbuf
);
7087 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7088 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7089 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7090 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7091 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7092 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
7093 call_func1(p_iostream_dtor
, &ios1
.base_ios
);
7094 memset(&ios1
, 0xab, sizeof(iostream
));
7095 pios
= call_func3(p_iostream_sb_ctor
, &ios1
, &sb
, TRUE
);
7096 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7097 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7098 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7099 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7100 ok(ios1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, ios1
.base_ios
.sb
);
7101 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7102 ok(ios1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios1
.base_ios
.delbuf
);
7103 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7104 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7105 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7106 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7107 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7108 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7109 call_func1(p_iostream_vbase_dtor
, &ios1
);
7110 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7111 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7112 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7113 ios1
.base2
.unknown
= 0xabababab;
7114 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7115 ios1
.base_ios
.delbuf
= 0;
7116 pios
= call_func3(p_iostream_sb_ctor
, &ios1
, &sb
, FALSE
);
7117 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7118 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7119 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7120 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7121 ok(ios1
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, ios1
.base_ios
.sb
);
7122 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7123 ok(ios1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios1
.base_ios
.delbuf
);
7124 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7125 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7126 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7127 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7128 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7129 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
7130 call_func1(p_iostream_dtor
, &ios1
.base_ios
);
7131 memset(&ios1
, 0xab, sizeof(iostream
));
7132 pios
= call_func2(p_iostream_ctor
, &ios1
, TRUE
);
7133 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7134 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7135 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7136 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7137 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7138 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7139 ok(ios1
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios1
.base_ios
.delbuf
);
7140 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7141 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7142 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7143 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7144 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7145 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7146 call_func1(p_iostream_vbase_dtor
, &ios1
);
7147 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7148 ios1
.base2
.unknown
= 0xabababab;
7149 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7150 pios
= call_func2(p_iostream_ctor
, &ios1
, FALSE
);
7151 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7152 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7153 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7154 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7155 ok(ios1
.base_ios
.sb
== ios2
.base_ios
.sb
, "expected %p got %p\n", ios2
.base_ios
.sb
, ios1
.base_ios
.sb
);
7156 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7157 ok(ios1
.base_ios
.delbuf
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.delbuf
);
7158 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7159 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7160 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7161 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7162 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7163 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
7164 call_func1(p_iostream_dtor
, &ios1
.base_ios
);
7165 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7166 ios1
.base2
.unknown
= 0xabababab;
7167 memset(&ios2
, 0xcd, sizeof(iostream
));
7168 pios
= call_func3(p_iostream_copy_ctor
, &ios2
, &ios1
, TRUE
);
7169 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7170 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
7171 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7172 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
7173 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
7174 ok(ios2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios2
.base_ios
.state
);
7175 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7176 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7177 ok(ios2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios2
.base_ios
.flags
);
7178 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7179 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7180 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7181 ok(ios2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios2
.base_ios
.do_lock
);
7182 call_func1(p_iostream_vbase_dtor
, &ios2
);
7183 ios1
.base_ios
.sb
= NULL
;
7184 memset(&ios2
, 0xcd, sizeof(iostream
));
7185 pios
= call_func3(p_iostream_copy_ctor
, &ios2
, &ios1
, TRUE
);
7186 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7187 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
7188 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7189 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
7190 ok(ios2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.sb
);
7191 ok(ios2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios2
.base_ios
.state
);
7192 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7193 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7194 ok(ios2
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios2
.base_ios
.flags
);
7195 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7196 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7197 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7198 ok(ios2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios2
.base_ios
.do_lock
);
7199 call_func1(p_iostream_vbase_dtor
, &ios2
);
7200 ios1
.base_ios
.sb
= &sb
;
7201 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xcdcdcdcd;
7202 ios2
.base2
.unknown
= 0xcdcdcdcd;
7203 memset(&ios2
.base_ios
, 0xcd, sizeof(ios
));
7204 ios2
.base_ios
.delbuf
= 0;
7205 pos
= ios2
.base_ios
.tie
;
7206 pios
= call_func3(p_iostream_copy_ctor
, &ios2
, &ios1
, FALSE
);
7207 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7208 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
7209 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7210 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
7211 ok(ios2
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, ios2
.base_ios
.sb
);
7212 ok(ios2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, ios2
.base_ios
.state
);
7213 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7214 ok(ios2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, ios2
.base_ios
.tie
);
7215 ok(ios2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, ios2
.base_ios
.flags
);
7216 ok(ios2
.base_ios
.precision
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.precision
);
7217 ok(ios2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.fill
);
7218 ok(ios2
.base_ios
.width
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.width
);
7219 ok(ios2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.do_lock
);
7220 call_func1(p_iostream_dtor
, &ios2
.base_ios
);
7223 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xcdcdcdcd;
7224 ios2
.base2
.unknown
= 0xcdcdcdcd;
7225 ios2
.base_ios
.sb
= (streambuf
*) 0xcdcdcdcd;
7226 ios2
.base_ios
.state
= 0xcdcdcdcd;
7227 pios
= call_func2(p_iostream_assign_sb
, &ios2
, &sb
);
7228 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7229 ok(ios2
.base1
.extract_delim
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base1
.extract_delim
);
7230 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7231 ok(ios2
.base2
.unknown
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base2
.unknown
);
7232 ok(ios2
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, ios2
.base_ios
.sb
);
7233 ok(ios2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios2
.base_ios
.state
);
7234 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7235 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7236 ok(ios2
.base_ios
.flags
== 0, "expected 0 got %x\n", ios2
.base_ios
.flags
);
7237 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7238 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7239 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7240 ok(ios2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.do_lock
);
7241 ios2
.base1
.count
= 0xcdcdcdcd;
7242 memset(&ios2
.base_ios
, 0xcd, sizeof(ios
));
7243 ios2
.base_ios
.delbuf
= 0;
7244 pios
= call_func2(p_iostream_assign_sb
, &ios2
, NULL
);
7245 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7246 ok(ios2
.base1
.extract_delim
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base1
.extract_delim
);
7247 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7248 ok(ios2
.base2
.unknown
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base2
.unknown
);
7249 ok(ios2
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.sb
);
7250 ok(ios2
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios2
.base_ios
.state
);
7251 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7252 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7253 ok(ios2
.base_ios
.flags
== 0, "expected 0 got %x\n", ios2
.base_ios
.flags
);
7254 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7255 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7256 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7257 ok(ios2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.do_lock
);
7258 ios2
.base1
.count
= 0xcdcdcdcd;
7259 memset(&ios2
.base_ios
, 0xcd, sizeof(ios
));
7260 ios2
.base_ios
.delbuf
= 0;
7261 if (0) /* crashes on native */
7262 pios
= call_func2(p_iostream_assign
, &ios2
, NULL
);
7263 pios
= call_func2(p_iostream_assign
, &ios2
, &ios1
);
7264 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7265 ok(ios2
.base1
.extract_delim
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base1
.extract_delim
);
7266 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7267 ok(ios2
.base2
.unknown
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base2
.unknown
);
7268 ok(ios2
.base_ios
.sb
== &sb
, "expected %p got %p\n", &sb
, ios2
.base_ios
.sb
);
7269 ok(ios2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios2
.base_ios
.state
);
7270 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7271 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7272 ok(ios2
.base_ios
.flags
== 0, "expected 0 got %x\n", ios2
.base_ios
.flags
);
7273 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7274 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7275 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7276 ok(ios2
.base_ios
.do_lock
== 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2
.base_ios
.do_lock
);
7279 static void test_ifstream(void)
7281 const char *filename
= "ifstream_test";
7282 istream ifs
, ifs_copy
, *pifs
;
7289 memset(&ifs
, 0xab, sizeof(istream
));
7291 /* constructors/destructors */
7292 pifs
= call_func2(p_ifstream_ctor
, &ifs
, TRUE
);
7293 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7294 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7295 ok(ifs
.extract_delim
== 0, "expected 0 got %d\n", ifs
.extract_delim
);
7296 ok(ifs
.count
== 0, "expected 0 got %d\n", ifs
.count
);
7297 ok(ifs
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ifs
.base_ios
.sb
);
7298 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7299 ok(ifs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ifs
.base_ios
.delbuf
);
7300 ok(ifs
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ifs
.base_ios
.tie
);
7301 ok(ifs
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ifs
.base_ios
.flags
);
7302 ok(ifs
.base_ios
.precision
== 6, "expected 6 got %d\n", ifs
.base_ios
.precision
);
7303 ok(ifs
.base_ios
.fill
== ' ', "expected 32 got %d\n", ifs
.base_ios
.fill
);
7304 ok(ifs
.base_ios
.width
== 0, "expected 0 got %d\n", ifs
.base_ios
.width
);
7305 ok(ifs
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ifs
.base_ios
.do_lock
);
7306 ok(pfb
->fd
== -1, "wrong fd, expected -1 got %d\n", pfb
->fd
);
7307 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
7308 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
7309 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
7310 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
7311 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
7312 ok(pfb
->fd
== -1, "wrong fd, expected 0 got %d\n", pfb
->fd
);
7313 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7315 pifs
= call_func3(p_ifstream_fd_ctor
, &ifs
, 42, TRUE
);
7316 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7317 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7318 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7319 ok(ifs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ifs
.base_ios
.delbuf
);
7320 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
7321 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
7322 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
7323 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
7324 ok(pfb
->fd
== 42, "wrong fd, expected 42 got %d\n", pfb
->fd
);
7325 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
7327 pifs
= call_func3(p_ifstream_copy_ctor
, &ifs_copy
, &ifs
, TRUE
);
7328 pfb
= (filebuf
*) ifs_copy
.base_ios
.sb
;
7329 ok(pifs
== &ifs_copy
, "wrong return, expected %p got %p\n", &ifs_copy
, pifs
);
7330 ok(ifs_copy
.base_ios
.sb
== ifs
.base_ios
.sb
, "expected shared streambuf\n");
7331 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7332 ok(ifs_copy
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs_copy
.base_ios
.state
);
7334 call_func1(p_ifstream_vbase_dtor
, &ifs_copy
);
7335 call_func1(p_ifstream_dtor
, &ifs
.base_ios
);
7337 pifs
= call_func5(p_ifstream_buffer_ctor
, &ifs
, 53, buffer
, ARRAY_SIZE(buffer
), TRUE
);
7338 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7339 ok(ifs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ifs
.base_ios
.delbuf
);
7340 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7341 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7342 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
7343 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
7344 ok(pfb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pfb
->base
.base
);
7345 ok(pfb
->base
.ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), pfb
->base
.ebuf
);
7346 ok(pfb
->fd
== 53, "wrong fd, expected 53 got %d\n", pfb
->fd
);
7347 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
7348 call_func1(p_ifstream_dtor
, &ifs
.base_ios
);
7350 pifs
= call_func5(p_ifstream_buffer_ctor
, &ifs
, 64, NULL
, 0, TRUE
);
7351 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7352 ok(ifs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ifs
.base_ios
.delbuf
);
7353 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7354 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7355 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7356 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
7357 ok(pfb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pfb
->base
.unbuffered
);
7358 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
7359 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
7360 ok(pfb
->fd
== 64, "wrong fd, expected 64 got %d\n", pfb
->fd
);
7361 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
7362 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7364 pifs
= call_func5(p_ifstream_open_ctor
, &ifs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
7365 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7366 ok(ifs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ifs
.base_ios
.delbuf
);
7367 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7368 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7369 ok(pfb
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pfb
->base
.allocated
);
7370 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
7371 ok(pfb
->base
.base
!= NULL
, "wrong buffer, expected not %p got %p\n", NULL
, pfb
->base
.base
);
7372 ok(pfb
->base
.ebuf
!= NULL
, "wrong ebuf, expected not %p got %p\n", NULL
, pfb
->base
.ebuf
);
7373 ok(pfb
->fd
!= -1, "wrong fd, expected not -1 got %d\n", pfb
->fd
);
7375 ok(pfb
->close
== 1, "wrong value, expected 1 got %d\n", pfb
->close
);
7376 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7377 ok(_close(fd
) == -1, "expected ifstream to close opened file\n");
7380 call_func5(p_ifstream_buffer_ctor
, &ifs
, -1, NULL
, 0, TRUE
);
7381 ok(ifs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7382 ok(ifs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7383 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pfb
->base
.unbuffered
);
7384 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7386 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
, ARRAY_SIZE(buffer
));
7387 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7388 ok(ifs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ifs
.base_ios
.sb
->base
);
7389 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7390 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7391 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7392 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7394 psb
= call_func3(p_ifstream_setbuf
, &ifs
, NULL
, 0);
7395 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7396 ok(ifs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ifs
.base_ios
.sb
->base
);
7397 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7398 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7399 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7400 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7401 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7403 call_func2(p_ifstream_ctor
, &ifs
, TRUE
);
7404 ok(ifs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7405 ok(ifs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7406 ok(ifs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7407 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7408 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7410 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
, ARRAY_SIZE(buffer
));
7411 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7412 ok(ifs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ifs
.base_ios
.sb
->base
);
7413 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7414 ok(ifs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7415 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7416 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7418 psb
= call_func3(p_ifstream_setbuf
, &ifs
, NULL
, 0);
7419 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7420 ok(ifs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, ifs
.base_ios
.sb
->base
);
7421 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7422 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7423 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7424 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7426 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
+ 8, ARRAY_SIZE(buffer
) - 8);
7427 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7428 ok(ifs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, ifs
.base_ios
.sb
->base
);
7429 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7430 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7431 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7432 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7434 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
+ 8, 0);
7435 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7436 ok(ifs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, ifs
.base_ios
.sb
->base
);
7437 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7438 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7439 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7440 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7442 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
+ 4, ARRAY_SIZE(buffer
) - 4);
7443 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7444 ok(ifs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, ifs
.base_ios
.sb
->base
);
7445 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7446 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7447 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7448 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7450 psb
= call_func3(p_ifstream_setbuf
, &ifs
, NULL
, 5);
7451 ok(psb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, psb
);
7452 ok(ifs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, ifs
.base_ios
.sb
->base
);
7453 ok(ifs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), ifs
.base_ios
.sb
->ebuf
);
7454 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7455 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7456 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7457 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7459 /* setbuf - seems to be a nop and always return NULL in those other cases */
7460 pifs
= call_func5(p_ifstream_buffer_ctor
, &ifs
, 42, NULL
, 0, TRUE
);
7461 ok(ifs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7462 ok(ifs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7463 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7464 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7466 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7467 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
, ARRAY_SIZE(buffer
));
7468 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
7469 ok(ifs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7470 ok(ifs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7471 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7472 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7473 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
7475 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7476 psb
= call_func3(p_ifstream_setbuf
, &ifs
, NULL
, 0);
7477 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
7478 ok(ifs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7479 ok(ifs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7480 ok(ifs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7481 ok(ifs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", ifs
.base_ios
.sb
->allocated
);
7482 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
7483 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7485 pifs
= call_func5(p_ifstream_open_ctor
, &ifs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
7486 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7487 psb
= call_func3(p_ifstream_setbuf
, &ifs
, NULL
, 0);
7488 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
7489 ok(ifs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7490 ok(ifs
.base_ios
.sb
->ebuf
!= NULL
, "wrong ebuf value, expected NULL got %p\n", ifs
.base_ios
.sb
->ebuf
);
7491 ok(ifs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7492 ok(ifs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", ifs
.base_ios
.sb
->allocated
);
7493 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
7495 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7496 psb
= call_func3(p_ifstream_setbuf
, &ifs
, buffer
, ARRAY_SIZE(buffer
));
7497 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
7498 ok(ifs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", ifs
.base_ios
.sb
->base
);
7499 ok(ifs
.base_ios
.sb
->base
!= buffer
, "wrong base value, expected not %p got %p\n", buffer
, ifs
.base_ios
.sb
->base
);
7500 ok(ifs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", ifs
.base_ios
.sb
->unbuffered
);
7501 ok(ifs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", ifs
.base_ios
.sb
->allocated
);
7502 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
7503 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7506 pifs
= call_func2(p_ifstream_ctor
, &ifs
, TRUE
);
7507 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7508 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7509 call_func2(p_ifstream_attach
, &ifs
, 42);
7510 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "attaching on vanilla stream set some state bits\n");
7511 fd
= (int) call_func1(p_ifstream_fd
, &ifs
);
7512 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
7513 ok(pfb
->close
== 0, "wrong close value, expected 0 got %d\n", pfb
->close
);
7514 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7515 call_func2(p_ifstream_attach
, &ifs
, 53);
7516 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
7517 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
7518 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7521 pifs
= call_func2(p_ifstream_ctor
, &ifs
, TRUE
);
7522 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7523 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7524 fd
= (int) call_func1(p_ifstream_fd
, &ifs
);
7525 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7526 ok(fd
== -1, "wrong fd, expected -1 but got %d\n", fd
);
7527 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7529 pifs
= call_func5(p_ifstream_open_ctor
, &ifs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
7530 pfb
= (filebuf
*) ifs
.base_ios
.sb
;
7531 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7532 fd
= (int) call_func1(p_ifstream_fd
, &ifs
);
7533 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7534 ok(fd
== pfb
->fd
, "wrong fd, expected %d but got %d\n", pfb
->fd
, fd
);
7537 pfb
= (filebuf
*) call_func1(p_ifstream_rdbuf
, &ifs
);
7538 ok((streambuf
*) pfb
== ifs
.base_ios
.sb
, "wrong return, expected %p got %p\n", ifs
.base_ios
.sb
, pfb
);
7539 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7542 ret
= (int) call_func2(p_ifstream_setmode
, &ifs
, filebuf_binary
);
7543 ok(ret
== filebuf_text
, "wrong return, expected %d got %d\n", filebuf_text
, ret
);
7544 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7545 ret
= (int) call_func2(p_ifstream_setmode
, &ifs
, filebuf_binary
);
7546 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
7547 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7548 ret
= (int) call_func2(p_ifstream_setmode
, &ifs
, filebuf_text
);
7549 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
7550 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7551 ret
= (int) call_func2(p_ifstream_setmode
, &ifs
, 0x9000);
7552 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
7553 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ifs
.base_ios
.state
);
7555 /* close && is_open */
7556 ok((int) call_func1(p_ifstream_is_open
, &ifs
) == 1, "expected ifstream to be open\n");
7557 ifs
.base_ios
.state
= IOSTATE_eofbit
| IOSTATE_failbit
;
7558 call_func1(p_ifstream_close
, &ifs
);
7559 ok(ifs
.base_ios
.state
== IOSTATE_goodbit
, "close did not clear state = %d\n", ifs
.base_ios
.state
);
7560 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7561 call_func1(p_ifstream_close
, &ifs
);
7562 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "close on a closed stream did not set failbit\n");
7563 ok((int) call_func1(p_ifstream_is_open
, &ifs
) == 0, "expected ifstream to not be open\n");
7564 ok(_close(fd
) == -1, "expected close to close the opened file\n");
7567 ifs
.base_ios
.state
= IOSTATE_eofbit
;
7568 call_func4(p_ifstream_open
, &ifs
, filename
, OPENMODE_in
, filebuf_openprot
);
7569 fd
= (int) call_func1(p_ifstream_fd
, &ifs
);
7570 ok(fd
!= -1, "wrong fd, expected not -1 got %d\n", fd
);
7571 ok(ifs
.base_ios
.state
== IOSTATE_eofbit
, "open did not succeed\n");
7572 call_func4(p_ifstream_open
, &ifs
, filename
, OPENMODE_in
, filebuf_openprot
);
7573 ok(ifs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "second open did not set failbit\n");
7574 call_func1(p_ifstream_close
, &ifs
);
7576 /* write something we can read later */
7577 fd
= _open(filename
, _O_TRUNC
|_O_CREAT
|_O_RDWR
, _S_IWRITE
);
7578 ok(fd
!= -1, "_open failed\n");
7579 ok(_write(fd
, "test 12", 7) == 7, "_write failed\n");
7580 ok(_close(fd
) == 0, "_close failed\n");
7582 /* integration with parent istream - reading */
7583 ifs
.base_ios
.state
= IOSTATE_goodbit
; /* open doesn't clear the state */
7584 call_func4(p_ifstream_open
, &ifs
, filename
, OPENMODE_out
, filebuf_openprot
); /* make sure that OPENMODE_in is implicit */
7585 memset(st
, 'A', sizeof(st
));
7587 pifs
= call_func2(p_istream_read_str
, &ifs
, st
);
7588 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7589 ok(!strcmp(st
, "test"), "expected 'test' got '%s'\n", st
);
7592 pifs
= call_func2(p_istream_read_int
, pifs
, &i
);
7593 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7594 ok(i
== 12, "expected 12 got %d\n", i
);
7595 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7597 /* make sure that OPENMODE_in is implicit with open_ctor */
7598 pifs
= call_func5(p_ifstream_open_ctor
, &ifs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
7599 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7600 memset(st
, 'A', sizeof(st
));
7602 pifs
= call_func2(p_istream_read_str
, &ifs
, st
);
7603 ok(pifs
== &ifs
, "wrong return, expected %p got %p\n", &ifs
, pifs
);
7604 ok(!strcmp(st
, "test"), "expected 'test' got '%s'\n", st
);
7605 call_func1(p_ifstream_vbase_dtor
, &ifs
);
7606 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
7609 static void test_strstream(void)
7611 iostream ios1
, ios2
, *pios
;
7616 memset(&ios1
, 0xab, sizeof(iostream
));
7617 memset(&ios2
, 0xab, sizeof(iostream
));
7619 /* constructors/destructors */
7620 pios
= call_func2(p_strstream_ctor
, &ios1
, TRUE
);
7621 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7622 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7623 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7624 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7625 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7626 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7627 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7628 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7629 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7630 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7631 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7632 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7633 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7634 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7635 ok(pssb
->dynamic
== 1, "expected 1, got %d\n", pssb
->dynamic
);
7636 ok(pssb
->increase
== 1, "expected 1, got %d\n", pssb
->increase
);
7637 ok(pssb
->constant
== 0, "expected 0, got %d\n", pssb
->constant
);
7638 ok(pssb
->f_alloc
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_alloc
);
7639 ok(pssb
->f_free
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_free
);
7640 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7641 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7642 ok(pssb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pssb
->base
.base
);
7643 ok(pssb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pssb
->base
.ebuf
);
7644 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7645 call_func1(p_strstream_vbase_dtor
, &ios1
);
7646 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7647 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7648 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7649 ios1
.base2
.unknown
= 0xabababab;
7650 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7651 ios1
.base_ios
.delbuf
= 0;
7652 pios
= call_func2(p_strstream_ctor
, &ios1
, FALSE
);
7653 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7654 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7655 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7656 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7657 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7658 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7659 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7660 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7661 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7662 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7663 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7664 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7665 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7666 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
7667 ok(pssb
->dynamic
== 1, "expected 1, got %d\n", pssb
->dynamic
);
7668 ok(pssb
->increase
== 1, "expected 1, got %d\n", pssb
->increase
);
7669 ok(pssb
->constant
== 0, "expected 0, got %d\n", pssb
->constant
);
7670 ok(pssb
->f_alloc
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_alloc
);
7671 ok(pssb
->f_free
== NULL
, "expected %p, got %p\n", NULL
, pssb
->f_free
);
7672 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7673 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7674 ok(pssb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pssb
->base
.base
);
7675 ok(pssb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pssb
->base
.ebuf
);
7676 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7677 call_func1(p_strstream_dtor
, &ios1
.base_ios
);
7678 ok(ios1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, ios1
.base_ios
.sb
);
7679 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7680 call_func1(p_strstreambuf_dtor
, pssb
);
7681 p_operator_delete(pssb
);
7683 memset(&ios1
, 0xab, sizeof(iostream
));
7684 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, 32, 0, TRUE
);
7685 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7686 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7687 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7688 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7689 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7690 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7691 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7692 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7693 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7694 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7695 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7696 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7697 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7698 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7699 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7700 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7701 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7702 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7703 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7704 ok(pssb
->base
.ebuf
== buffer
+ 32, "wrong buffer end, expected %p got %p\n", buffer
+ 32, pssb
->base
.ebuf
);
7705 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7706 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7707 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7708 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7709 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
7710 ok(pssb
->base
.epptr
== buffer
+ 32, "wrong put end, expected %p got %p\n", buffer
+ 32, pssb
->base
.epptr
);
7711 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7712 call_func1(p_strstream_vbase_dtor
, &ios1
);
7713 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7714 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7715 memset(&ios1
, 0xab, sizeof(iostream
));
7716 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, 16, OPENMODE_in
, TRUE
);
7717 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7718 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7719 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7720 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7721 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7722 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7723 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7724 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7725 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7726 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7727 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7728 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7729 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7730 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7731 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7732 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7733 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7734 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7735 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7736 ok(pssb
->base
.ebuf
== buffer
+ 16, "wrong buffer end, expected %p got %p\n", buffer
+ 16, pssb
->base
.ebuf
);
7737 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7738 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7739 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7740 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7741 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
7742 ok(pssb
->base
.epptr
== buffer
+ 16, "wrong put end, expected %p got %p\n", buffer
+ 16, pssb
->base
.epptr
);
7743 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7744 call_func1(p_strstream_vbase_dtor
, &ios1
);
7745 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7746 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7747 memset(&ios1
, 0xab, sizeof(iostream
));
7748 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, -1, OPENMODE_in
|OPENMODE_out
, TRUE
);
7749 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7750 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7751 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7752 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7753 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7754 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7755 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7756 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7757 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7758 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7759 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7760 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7761 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7762 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7763 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7764 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7765 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7766 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7767 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7768 ok(pssb
->base
.ebuf
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || pssb
->base
.ebuf
== (char*) -1,
7769 "wrong buffer end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, pssb
->base
.ebuf
);
7770 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7771 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7772 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7773 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7774 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
7775 ok(pssb
->base
.epptr
== (char *)((ULONG_PTR
)buffer
+ 0x7fffffff) || pssb
->base
.epptr
== (char*) -1,
7776 "wrong buffer end, expected %p + 0x7fffffff or -1, got %p\n", buffer
, pssb
->base
.epptr
);
7777 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7778 call_func1(p_strstream_vbase_dtor
, &ios1
);
7779 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7780 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7781 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7782 ios1
.base2
.unknown
= 0xabababab;
7783 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7784 ios1
.base_ios
.delbuf
= 0;
7785 strcpy(buffer
, "Test");
7786 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, 0, OPENMODE_in
|OPENMODE_app
, FALSE
);
7787 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7788 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7789 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7790 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7791 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7792 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7793 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7794 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7795 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7796 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7797 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7798 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7799 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7800 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
7801 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7802 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7803 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7804 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7805 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7806 ok(pssb
->base
.ebuf
== buffer
+ 4, "wrong buffer end, expected %p got %p\n", buffer
+ 4, pssb
->base
.ebuf
);
7807 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7808 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7809 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7810 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7811 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
7812 ok(pssb
->base
.epptr
== buffer
+ 4, "wrong put end, expected %p got %p\n", buffer
+ 4, pssb
->base
.epptr
);
7813 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7814 call_func1(p_strstream_dtor
, &ios1
.base_ios
);
7815 ok(ios1
.base_ios
.sb
== &pssb
->base
, "expected %p got %p\n", &pssb
->base
, ios1
.base_ios
.sb
);
7816 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7817 call_func1(p_strstreambuf_dtor
, pssb
);
7818 p_operator_delete(pssb
);
7819 memset(&ios1
, 0xab, sizeof(iostream
));
7820 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, 16, OPENMODE_ate
, TRUE
);
7821 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7822 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7823 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7824 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7825 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7826 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7827 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7828 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7829 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7830 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7831 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7832 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7833 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7834 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7835 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7836 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7837 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7838 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7839 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7840 ok(pssb
->base
.ebuf
== buffer
+ 16, "wrong buffer end, expected %p got %p\n", buffer
+ 16, pssb
->base
.ebuf
);
7841 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7842 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7843 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7844 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7845 ok(pssb
->base
.pptr
== buffer
, "wrong put pointer, expected %p got %p\n", buffer
, pssb
->base
.pptr
);
7846 ok(pssb
->base
.epptr
== buffer
+ 16, "wrong put end, expected %p got %p\n", buffer
+ 16, pssb
->base
.epptr
);
7847 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7848 call_func1(p_strstream_vbase_dtor
, &ios1
);
7849 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7850 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7851 pios
= call_func5(p_strstream_buffer_ctor
, &ios1
, buffer
, 16, OPENMODE_out
|OPENMODE_ate
, TRUE
);
7852 pssb
= (strstreambuf
*) ios1
.base_ios
.sb
;
7853 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7854 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7855 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7856 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7857 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7858 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7859 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7860 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7861 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7862 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7863 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7864 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7865 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7866 ok(pssb
->dynamic
== 0, "expected 0, got %d\n", pssb
->dynamic
);
7867 ok(pssb
->constant
== 1, "expected 1, got %d\n", pssb
->constant
);
7868 ok(pssb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pssb
->base
.allocated
);
7869 ok(pssb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pssb
->base
.unbuffered
);
7870 ok(pssb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pssb
->base
.base
);
7871 ok(pssb
->base
.ebuf
== buffer
+ 16, "wrong buffer end, expected %p got %p\n", buffer
+ 16, pssb
->base
.ebuf
);
7872 ok(pssb
->base
.eback
== buffer
, "wrong get base, expected %p got %p\n", buffer
, pssb
->base
.eback
);
7873 ok(pssb
->base
.gptr
== buffer
, "wrong get pointer, expected %p got %p\n", buffer
, pssb
->base
.gptr
);
7874 ok(pssb
->base
.egptr
== buffer
, "wrong get end, expected %p got %p\n", buffer
, pssb
->base
.egptr
);
7875 ok(pssb
->base
.pbase
== buffer
, "wrong put base, expected %p got %p\n", buffer
, pssb
->base
.pbase
);
7876 ok(pssb
->base
.pptr
== buffer
+ 4, "wrong put pointer, expected %p got %p\n", buffer
+ 4, pssb
->base
.pptr
);
7877 ok(pssb
->base
.epptr
== buffer
+ 16, "wrong put end, expected %p got %p\n", buffer
+ 16, pssb
->base
.epptr
);
7878 ok(pssb
->base
.do_lock
== -1, "expected -1 got %d\n", pssb
->base
.do_lock
);
7879 call_func1(p_strstream_vbase_dtor
, &ios1
);
7880 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7881 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7883 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xcdcdcdcd;
7884 ios1
.base2
.unknown
= 0xcdcdcdcd;
7885 memset(&ios1
.base_ios
, 0xcd, sizeof(ios
));
7886 pios
= call_func3(p_strstream_copy_ctor
, &ios2
, &ios1
, TRUE
);
7887 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7888 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
7889 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7890 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
7891 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
7892 ok(ios2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, ios2
.base_ios
.state
);
7893 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7894 ok(ios2
.base_ios
.tie
== ios1
.base_ios
.tie
, "expected %p got %p\n", ios1
.base_ios
.tie
, ios2
.base_ios
.tie
);
7895 ok(ios2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, ios2
.base_ios
.flags
);
7896 ok(ios2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.precision
);
7897 ok(ios2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.fill
);
7898 ok(ios2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.width
);
7899 ok(ios2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios2
.base_ios
.do_lock
);
7900 call_func1(p_strstream_vbase_dtor
, &ios2
);
7901 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xabababab;
7902 ios2
.base2
.unknown
= 0xabababab;
7903 memset(&ios2
.base_ios
, 0xab, sizeof(ios
));
7904 ios2
.base_ios
.delbuf
= 0;
7905 pos
= ios2
.base_ios
.tie
;
7906 pios
= call_func3(p_strstream_copy_ctor
, &ios2
, &ios1
, FALSE
);
7907 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
7908 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
7909 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7910 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
7911 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
7912 ok(ios2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.state
);
7913 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7914 ok(ios2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, ios2
.base_ios
.tie
);
7915 ok(ios2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios2
.base_ios
.flags
);
7916 ok(ios2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.precision
);
7917 ok(ios2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios2
.base_ios
.fill
);
7918 ok(ios2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.width
);
7919 ok(ios2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.do_lock
);
7920 call_func1(p_strstream_dtor
, &ios2
.base_ios
);
7923 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xabababab;
7924 ios2
.base2
.unknown
= 0xabababab;
7925 memset(&ios2
.base_ios
, 0xab, sizeof(ios
));
7926 ios2
.base_ios
.delbuf
= 0;
7927 pios
= call_func2(p_strstream_assign
, &ios2
, &ios1
);
7928 ok(ios2
.base1
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base1
.extract_delim
);
7929 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
7930 ok(ios2
.base2
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base2
.unknown
);
7931 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
7932 ok(ios2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios2
.base_ios
.state
);
7933 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
7934 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
7935 ok(ios2
.base_ios
.flags
== 0, "expected 0 got %x\n", ios2
.base_ios
.flags
);
7936 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
7937 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
7938 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
7939 ok(ios2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.do_lock
);
7942 static void test_stdiostream(void)
7944 iostream ios1
, ios2
, *pios
;
7948 const char filename
[] = "stdiostream_test";
7950 memset(&ios1
, 0xab, sizeof(iostream
));
7951 memset(&ios2
, 0xab, sizeof(iostream
));
7953 file
= fopen(filename
, "w+");
7954 ok(file
!= NULL
, "Couldn't open the file named '%s'\n", filename
);
7956 /* constructors/destructors */
7957 pios
= call_func3(p_stdiostream_file_ctor
, &ios1
, file
, TRUE
);
7958 pstb
= (stdiobuf
*) ios1
.base_ios
.sb
;
7959 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7960 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7961 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7962 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7963 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7964 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
7965 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7966 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
7967 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
7968 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
7969 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
7970 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
7971 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
7972 ok(pstb
->file
== file
, "expected %p, got %p\n", file
, pstb
->file
);
7973 ok(pstb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pstb
->base
.allocated
);
7974 ok(pstb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pstb
->base
.unbuffered
);
7975 ok(pstb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pstb
->base
.base
);
7976 ok(pstb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pstb
->base
.ebuf
);
7977 ok(pstb
->base
.do_lock
== -1, "expected -1 got %d\n", pstb
->base
.do_lock
);
7978 call_func1(p_stdiostream_vbase_dtor
, &ios1
);
7979 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7980 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
7981 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xabababab;
7982 ios1
.base2
.unknown
= 0xabababab;
7983 memset(&ios1
.base_ios
, 0xab, sizeof(ios
));
7984 ios1
.base_ios
.delbuf
= 0;
7985 pios
= call_func3(p_stdiostream_file_ctor
, &ios1
, file
, FALSE
);
7986 pstb
= (stdiobuf
*) ios1
.base_ios
.sb
;
7987 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
7988 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
7989 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
7990 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
7991 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
7992 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
7993 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
7994 ok(ios1
.base_ios
.tie
== ios2
.base_ios
.tie
, "expected %p got %p\n", ios2
.base_ios
.tie
, ios1
.base_ios
.tie
);
7995 ok(ios1
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios1
.base_ios
.flags
);
7996 ok(ios1
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.precision
);
7997 ok(ios1
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios1
.base_ios
.fill
);
7998 ok(ios1
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.width
);
7999 ok(ios1
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.do_lock
);
8000 ok(pstb
->file
== file
, "expected %p, got %p\n", file
, pstb
->file
);
8001 ok(pstb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pstb
->base
.allocated
);
8002 ok(pstb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pstb
->base
.unbuffered
);
8003 ok(pstb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pstb
->base
.base
);
8004 ok(pstb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pstb
->base
.ebuf
);
8005 ok(pstb
->base
.do_lock
== -1, "expected -1 got %d\n", pstb
->base
.do_lock
);
8006 call_func1(p_stdiostream_dtor
, &ios1
.base_ios
);
8007 ok(ios1
.base_ios
.sb
== &pstb
->base
, "expected %p got %p\n", &pstb
->base
, ios1
.base_ios
.sb
);
8008 ok(ios1
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios1
.base_ios
.state
);
8009 call_func1(p_stdiobuf_dtor
, pstb
);
8010 p_operator_delete(pstb
);
8011 memset(&ios1
, 0xab, sizeof(iostream
));
8012 pios
= call_func3(p_stdiostream_file_ctor
, &ios1
, NULL
, TRUE
);
8013 pstb
= (stdiobuf
*) ios1
.base_ios
.sb
;
8014 ok(pios
== &ios1
, "wrong return, expected %p got %p\n", &ios1
, pios
);
8015 ok(ios1
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios1
.base1
.extract_delim
);
8016 ok(ios1
.base1
.count
== 0, "expected 0 got %d\n", ios1
.base1
.count
);
8017 ok(ios1
.base2
.unknown
== 0, "expected 0 got %d\n", ios1
.base2
.unknown
);
8018 ok(ios1
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, ios1
.base_ios
.sb
);
8019 ok(ios1
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios1
.base_ios
.state
);
8020 ok(ios1
.base_ios
.delbuf
== 1, "expected 1 got %d\n", ios1
.base_ios
.delbuf
);
8021 ok(ios1
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.tie
);
8022 ok(ios1
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, ios1
.base_ios
.flags
);
8023 ok(ios1
.base_ios
.precision
== 6, "expected 6 got %d\n", ios1
.base_ios
.precision
);
8024 ok(ios1
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios1
.base_ios
.fill
);
8025 ok(ios1
.base_ios
.width
== 0, "expected 0 got %d\n", ios1
.base_ios
.width
);
8026 ok(ios1
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios1
.base_ios
.do_lock
);
8027 ok(pstb
->file
== NULL
, "expected %p, got %p\n", NULL
, pstb
->file
);
8028 ok(pstb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pstb
->base
.allocated
);
8029 ok(pstb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pstb
->base
.unbuffered
);
8030 ok(pstb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pstb
->base
.base
);
8031 ok(pstb
->base
.ebuf
== NULL
, "wrong buffer end, expected %p got %p\n", NULL
, pstb
->base
.ebuf
);
8032 ok(pstb
->base
.do_lock
== -1, "expected -1 got %d\n", pstb
->base
.do_lock
);
8033 call_func1(p_stdiostream_vbase_dtor
, &ios1
);
8034 ok(ios1
.base_ios
.sb
== NULL
, "expected %p got %p\n", NULL
, ios1
.base_ios
.sb
);
8035 ok(ios1
.base_ios
.state
== IOSTATE_badbit
, "expected %d got %d\n", IOSTATE_badbit
, ios1
.base_ios
.state
);
8037 ios1
.base1
.extract_delim
= ios1
.base1
.count
= 0xcdcdcdcd;
8038 ios1
.base2
.unknown
= 0xcdcdcdcd;
8039 memset(&ios1
.base_ios
, 0xcd, sizeof(ios
));
8040 pios
= call_func3(p_stdiostream_copy_ctor
, &ios2
, &ios1
, TRUE
);
8041 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
8042 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
8043 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
8044 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
8045 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
8046 ok(ios2
.base_ios
.state
== 0xcdcdcdc9, "expected %d got %d\n", 0xcdcdcdc9, ios2
.base_ios
.state
);
8047 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
8048 ok(ios2
.base_ios
.tie
== ios1
.base_ios
.tie
, "expected %p got %p\n", ios1
.base_ios
.tie
, ios2
.base_ios
.tie
);
8049 ok(ios2
.base_ios
.flags
== 0xcdcdcdcd, "expected %x got %x\n", 0xcdcdcdcd, ios2
.base_ios
.flags
);
8050 ok(ios2
.base_ios
.precision
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.precision
);
8051 ok(ios2
.base_ios
.fill
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.fill
);
8052 ok(ios2
.base_ios
.width
== (char) 0xcd, "expected -51 got %d\n", ios2
.base_ios
.width
);
8053 ok(ios2
.base_ios
.do_lock
== -1, "expected -1 got %d\n", ios2
.base_ios
.do_lock
);
8054 call_func1(p_stdiostream_vbase_dtor
, &ios2
);
8055 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xabababab;
8056 ios2
.base2
.unknown
= 0xabababab;
8057 memset(&ios2
.base_ios
, 0xab, sizeof(ios
));
8058 ios2
.base_ios
.delbuf
= 0;
8059 pos
= ios2
.base_ios
.tie
;
8060 pios
= call_func3(p_stdiostream_copy_ctor
, &ios2
, &ios1
, FALSE
);
8061 ok(pios
== &ios2
, "wrong return, expected %p got %p\n", &ios2
, pios
);
8062 ok(ios2
.base1
.extract_delim
== 0, "expected 0 got %d\n", ios2
.base1
.extract_delim
);
8063 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
8064 ok(ios2
.base2
.unknown
== 0, "expected 0 got %d\n", ios2
.base2
.unknown
);
8065 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
8066 ok(ios2
.base_ios
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.state
);
8067 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
8068 ok(ios2
.base_ios
.tie
== pos
, "expected %p got %p\n", pos
, ios2
.base_ios
.tie
);
8069 ok(ios2
.base_ios
.flags
== 0xabababab, "expected %x got %x\n", 0xabababab, ios2
.base_ios
.flags
);
8070 ok(ios2
.base_ios
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.precision
);
8071 ok(ios2
.base_ios
.fill
== (char) 0xab, "expected -85 got %d\n", ios2
.base_ios
.fill
);
8072 ok(ios2
.base_ios
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.width
);
8073 ok(ios2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.do_lock
);
8074 call_func1(p_stdiostream_dtor
, &ios2
.base_ios
);
8077 ios2
.base1
.extract_delim
= ios2
.base1
.count
= 0xabababab;
8078 ios2
.base2
.unknown
= 0xabababab;
8079 memset(&ios2
.base_ios
, 0xab, sizeof(ios
));
8080 ios2
.base_ios
.delbuf
= 0;
8081 pios
= call_func2(p_stdiostream_assign
, &ios2
, &ios1
);
8082 ok(ios2
.base1
.extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base1
.extract_delim
);
8083 ok(ios2
.base1
.count
== 0, "expected 0 got %d\n", ios2
.base1
.count
);
8084 ok(ios2
.base2
.unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base2
.unknown
);
8085 ok(ios2
.base_ios
.sb
== ios1
.base_ios
.sb
, "expected %p got %p\n", ios1
.base_ios
.sb
, ios2
.base_ios
.sb
);
8086 ok(ios2
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, ios2
.base_ios
.state
);
8087 ok(ios2
.base_ios
.delbuf
== 0, "expected 0 got %d\n", ios2
.base_ios
.delbuf
);
8088 ok(ios2
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, ios2
.base_ios
.tie
);
8089 ok(ios2
.base_ios
.flags
== 0, "expected 0 got %x\n", ios2
.base_ios
.flags
);
8090 ok(ios2
.base_ios
.precision
== 6, "expected 6 got %d\n", ios2
.base_ios
.precision
);
8091 ok(ios2
.base_ios
.fill
== ' ', "expected 32 got %d\n", ios2
.base_ios
.fill
);
8092 ok(ios2
.base_ios
.width
== 0, "expected 0 got %d\n", ios2
.base_ios
.width
);
8093 ok(ios2
.base_ios
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios2
.base_ios
.do_lock
);
8096 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8099 static void test_Iostream_init(void)
8106 memset(&ios_obj
, 0xab, sizeof(ios
));
8108 pinit
= call_func3(p_Iostream_init_ios_ctor
, NULL
, &ios_obj
, 0);
8109 ok(pinit
== NULL
, "wrong return, expected %p got %p\n", NULL
, pinit
);
8110 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
8111 ok(ios_obj
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.state
);
8112 ok(ios_obj
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[0]);
8113 ok(ios_obj
.special
[1] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[1]);
8114 ok(ios_obj
.delbuf
== 1, "expected 1 got %d\n", ios_obj
.delbuf
);
8115 ok(ios_obj
.tie
== p_cout
, "expected %p got %p\n", p_cout
, ios_obj
.tie
);
8116 ok(ios_obj
.flags
== 0xabababab, "expected %d got %x\n", 0xabababab, ios_obj
.flags
);
8117 ok(ios_obj
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.precision
);
8118 ok(ios_obj
.fill
== (char) 0xab, "expected -85 got %d\n", ios_obj
.fill
);
8119 ok(ios_obj
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.width
);
8120 ok(ios_obj
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.do_lock
);
8122 memset(&ios_obj
, 0xab, sizeof(ios
));
8124 pinit
= call_func3(p_Iostream_init_ios_ctor
, NULL
, &ios_obj
, -1);
8125 ok(pinit
== NULL
, "wrong return, expected %p got %p\n", NULL
, pinit
);
8126 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
8127 ok(ios_obj
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.state
);
8128 ok(ios_obj
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[0]);
8129 ok(ios_obj
.special
[1] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[1]);
8130 ok(ios_obj
.delbuf
== 1, "expected 1 got %d\n", ios_obj
.delbuf
);
8131 ok(ios_obj
.tie
== pos
, "expected %p got %p\n", pos
, ios_obj
.tie
);
8132 ok(ios_obj
.flags
== 0xabababab, "expected %d got %x\n", 0xabababab, ios_obj
.flags
);
8133 ok(ios_obj
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.precision
);
8134 ok(ios_obj
.fill
== (char) 0xab, "expected -85 got %d\n", ios_obj
.fill
);
8135 ok(ios_obj
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.width
);
8136 ok(ios_obj
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.do_lock
);
8138 memset(&ios_obj
, 0xab, sizeof(ios
));
8139 pinit
= call_func3(p_Iostream_init_ios_ctor
, NULL
, &ios_obj
, -100);
8140 ok(pinit
== NULL
, "wrong return, expected %p got %p\n", NULL
, pinit
);
8141 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
8142 ok(ios_obj
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.state
);
8143 ok(ios_obj
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[0]);
8144 ok(ios_obj
.special
[1] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[1]);
8145 ok(ios_obj
.delbuf
== 1, "expected 1 got %d\n", ios_obj
.delbuf
);
8146 ok(ios_obj
.tie
== pos
, "expected %p got %p\n", pos
, ios_obj
.tie
);
8147 ok(ios_obj
.flags
== 0xabababab, "expected %d got %x\n", 0xabababab, ios_obj
.flags
);
8148 ok(ios_obj
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.precision
);
8149 ok(ios_obj
.fill
== (char) 0xab, "expected -85 got %d\n", ios_obj
.fill
);
8150 ok(ios_obj
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.width
);
8151 ok(ios_obj
.do_lock
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.do_lock
);
8153 if (0) /* crashes on native */
8154 pinit
= call_func3(p_Iostream_init_ios_ctor
, NULL
, NULL
, -1);
8156 memset(&ios_obj
, 0xab, sizeof(ios
));
8157 ios_obj
.flags
= 0xcdcdcdcd;
8158 ios_obj
.do_lock
= 0x34343434;
8159 pinit
= call_func3(p_Iostream_init_ios_ctor
, (void*) 0xdeadbeef, &ios_obj
, 1);
8160 ok(pinit
== (void*) 0xdeadbeef, "wrong return, expected %p got %p\n", (void*) 0xdeadbeef, pinit
);
8161 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
8162 ok(ios_obj
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.state
);
8163 ok(ios_obj
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[0]);
8164 ok(ios_obj
.special
[1] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[1]);
8165 ok(ios_obj
.delbuf
== 1, "expected 1 got %d\n", ios_obj
.delbuf
);
8166 ok(ios_obj
.tie
== p_cout
, "expected %p got %p\n", p_cout
, ios_obj
.tie
);
8167 ok(ios_obj
.flags
== (0xcdcdcdcd|FLAGS_unitbuf
), "expected %d got %x\n",
8168 0xcdcdcdcd|FLAGS_unitbuf
, ios_obj
.flags
);
8169 ok(ios_obj
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.precision
);
8170 ok(ios_obj
.fill
== (char) 0xab, "expected -85 got %d\n", ios_obj
.fill
);
8171 ok(ios_obj
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.width
);
8172 ok(ios_obj
.do_lock
== 0x34343434, "expected %d got %d\n", 0x34343434, ios_obj
.do_lock
);
8174 memset(&ios_obj
, 0xab, sizeof(ios
));
8175 ios_obj
.flags
= 0xcdcdcdcd;
8176 ios_obj
.do_lock
= 0x34343434;
8177 pinit
= call_func3(p_Iostream_init_ios_ctor
, (void*) 0xabababab, &ios_obj
, 5);
8178 ok(pinit
== (void*) 0xabababab, "wrong return, expected %p got %p\n", (void*) 0xabababab, pinit
);
8179 ok(ios_obj
.sb
== psb
, "expected %p got %p\n", psb
, ios_obj
.sb
);
8180 ok(ios_obj
.state
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.state
);
8181 ok(ios_obj
.special
[0] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[0]);
8182 ok(ios_obj
.special
[1] == 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.special
[1]);
8183 ok(ios_obj
.delbuf
== 1, "expected 1 got %d\n", ios_obj
.delbuf
);
8184 ok(ios_obj
.tie
== p_cout
, "expected %p got %p\n", p_cout
, ios_obj
.tie
);
8185 ok(ios_obj
.flags
== (0xcdcdcdcd|FLAGS_unitbuf
), "expected %d got %x\n",
8186 0xcdcdcdcd|FLAGS_unitbuf
, ios_obj
.flags
);
8187 ok(ios_obj
.precision
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.precision
);
8188 ok(ios_obj
.fill
== (char) 0xab, "expected -85 got %d\n", ios_obj
.fill
);
8189 ok(ios_obj
.width
== 0xabababab, "expected %d got %d\n", 0xabababab, ios_obj
.width
);
8190 ok(ios_obj
.do_lock
== 0x34343434, "expected %d got %d\n", 0x34343434, ios_obj
.do_lock
);
8193 static void test_std_streams(void)
8195 filebuf
*pfb_cin
= (filebuf
*) p_cin
->base_ios
.sb
;
8196 filebuf
*pfb_cout
= (filebuf
*) p_cout
->base_ios
.sb
;
8197 filebuf
*pfb_cerr
= (filebuf
*) p_cerr
->base_ios
.sb
;
8198 filebuf
*pfb_clog
= (filebuf
*) p_clog
->base_ios
.sb
;
8199 stdiobuf
*pstb_cin
, *pstb_cout
, *pstb_cerr
, *pstb_clog
;
8201 ok(p_cin
->extract_delim
== 0, "expected 0 got %d\n", p_cin
->extract_delim
);
8202 ok(p_cin
->count
== 0, "expected 0 got %d\n", p_cin
->count
);
8203 ok(p_cin
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cin
->base_ios
.state
);
8204 ok(p_cin
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cin
->base_ios
.delbuf
);
8205 ok(p_cin
->base_ios
.tie
== p_cout
, "expected %p got %p\n", p_cout
, p_cin
->base_ios
.tie
);
8206 ok(p_cin
->base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, p_cin
->base_ios
.flags
);
8207 ok(p_cin
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cin
->base_ios
.precision
);
8208 ok(p_cin
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cin
->base_ios
.fill
);
8209 ok(p_cin
->base_ios
.width
== 0, "expected 0 got %d\n", p_cin
->base_ios
.width
);
8210 ok(p_cin
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cin
->base_ios
.do_lock
);
8211 ok(pfb_cin
->fd
== 0, "wrong fd, expected 0 got %d\n", pfb_cin
->fd
);
8212 ok(pfb_cin
->close
== 0, "wrong value, expected 0 got %d\n", pfb_cin
->close
);
8213 ok(pfb_cin
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb_cin
->base
.allocated
);
8214 ok(pfb_cin
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb_cin
->base
.unbuffered
);
8216 ok(p_cout
->unknown
== 0, "expected 0 got %d\n", p_cout
->unknown
);
8217 ok(p_cout
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cout
->base_ios
.state
);
8218 ok(p_cout
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cout
->base_ios
.delbuf
);
8219 ok(p_cout
->base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, p_cout
->base_ios
.tie
);
8220 ok(p_cout
->base_ios
.flags
== 0, "expected 0 got %x\n", p_cout
->base_ios
.flags
);
8221 ok(p_cout
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cout
->base_ios
.precision
);
8222 ok(p_cout
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cout
->base_ios
.fill
);
8223 ok(p_cout
->base_ios
.width
== 0, "expected 0 got %d\n", p_cout
->base_ios
.width
);
8224 ok(p_cout
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cout
->base_ios
.do_lock
);
8225 ok(pfb_cout
->fd
== 1, "wrong fd, expected 1 got %d\n", pfb_cout
->fd
);
8226 ok(pfb_cout
->close
== 0, "wrong value, expected 0 got %d\n", pfb_cout
->close
);
8227 ok(pfb_cout
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb_cout
->base
.allocated
);
8228 ok(pfb_cout
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb_cout
->base
.unbuffered
);
8230 ok(p_cerr
->unknown
== 0, "expected 0 got %d\n", p_cerr
->unknown
);
8231 ok(p_cerr
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cerr
->base_ios
.state
);
8232 ok(p_cerr
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cerr
->base_ios
.delbuf
);
8233 ok(p_cerr
->base_ios
.tie
== p_cout
, "expected %p got %p\n", p_cout
, p_cerr
->base_ios
.tie
);
8234 ok(p_cerr
->base_ios
.flags
== FLAGS_unitbuf
, "expected %x got %x\n", FLAGS_unitbuf
, p_cerr
->base_ios
.flags
);
8235 ok(p_cerr
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cerr
->base_ios
.precision
);
8236 ok(p_cerr
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cerr
->base_ios
.fill
);
8237 ok(p_cerr
->base_ios
.width
== 0, "expected 0 got %d\n", p_cerr
->base_ios
.width
);
8238 ok(p_cerr
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cerr
->base_ios
.do_lock
);
8239 ok(pfb_cerr
->fd
== 2, "wrong fd, expected 2 got %d\n", pfb_cerr
->fd
);
8240 ok(pfb_cerr
->close
== 0, "wrong value, expected 0 got %d\n", pfb_cerr
->close
);
8241 ok(pfb_cerr
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb_cerr
->base
.allocated
);
8242 ok(pfb_cerr
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb_cerr
->base
.unbuffered
);
8244 ok(p_clog
->unknown
== 0, "expected 0 got %d\n", p_clog
->unknown
);
8245 ok(p_clog
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_clog
->base_ios
.state
);
8246 ok(p_clog
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_clog
->base_ios
.delbuf
);
8247 ok(p_clog
->base_ios
.tie
== p_cout
, "expected %p got %p\n", p_cout
, p_clog
->base_ios
.tie
);
8248 ok(p_clog
->base_ios
.flags
== 0, "expected 0 got %x\n", p_clog
->base_ios
.flags
);
8249 ok(p_clog
->base_ios
.precision
== 6, "expected 6 got %d\n", p_clog
->base_ios
.precision
);
8250 ok(p_clog
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_clog
->base_ios
.fill
);
8251 ok(p_clog
->base_ios
.width
== 0, "expected 0 got %d\n", p_clog
->base_ios
.width
);
8252 ok(p_clog
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_clog
->base_ios
.do_lock
);
8253 ok(pfb_clog
->fd
== 2, "wrong fd, expected 2 got %d\n", pfb_clog
->fd
);
8254 ok(pfb_clog
->close
== 0, "wrong value, expected 0 got %d\n", pfb_clog
->close
);
8255 ok(pfb_clog
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb_clog
->base
.allocated
);
8256 ok(pfb_clog
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb_clog
->base
.unbuffered
);
8258 /* sync_with_stdio */
8259 ok(*p_ios_sunk_with_stdio
== 0, "expected 0 got %d\n", *p_ios_sunk_with_stdio
);
8260 p_cin
->extract_delim
= p_cin
->count
= 0xabababab;
8261 p_cin
->base_ios
.state
= 0xabababab;
8262 p_cin
->base_ios
.fill
= 0xab;
8263 p_cin
->base_ios
.precision
= p_cin
->base_ios
.width
= 0xabababab;
8264 p_cout
->unknown
= 0xabababab;
8265 p_cout
->base_ios
.state
= 0xabababab;
8266 p_cout
->base_ios
.fill
= 0xab;
8267 p_cout
->base_ios
.precision
= p_cout
->base_ios
.width
= 0xabababab;
8268 p_cerr
->unknown
= 0xabababab;
8269 p_cerr
->base_ios
.state
= 0xabababab;
8270 p_cerr
->base_ios
.fill
= 0xab;
8271 p_cerr
->base_ios
.precision
= p_cerr
->base_ios
.width
= 0xabababab;
8272 p_clog
->unknown
= 0xabababab;
8273 p_clog
->base_ios
.state
= 0xabababab;
8274 p_clog
->base_ios
.fill
= 0xab;
8275 p_clog
->base_ios
.precision
= p_clog
->base_ios
.width
= 0xabababab;
8276 p_ios_sync_with_stdio();
8277 ok(*p_ios_sunk_with_stdio
== 1, "expected 1 got %d\n", *p_ios_sunk_with_stdio
);
8279 pstb_cin
= (stdiobuf
*) p_cin
->base_ios
.sb
;
8280 ok(p_cin
->extract_delim
== 0xabababab, "expected %d got %d\n", 0xabababab, p_cin
->extract_delim
);
8281 ok(p_cin
->count
== 0, "expected 0 got %d\n", p_cin
->count
);
8282 ok(p_cin
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cin
->base_ios
.state
);
8283 ok(p_cin
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cin
->base_ios
.delbuf
);
8284 ok(p_cin
->base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, p_cin
->base_ios
.tie
);
8285 ok(p_cin
->base_ios
.flags
== (FLAGS_skipws
|FLAGS_stdio
), "expected %x got %x\n",
8286 FLAGS_skipws
|FLAGS_stdio
, p_cin
->base_ios
.flags
);
8287 ok(p_cin
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cin
->base_ios
.precision
);
8288 ok(p_cin
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cin
->base_ios
.fill
);
8289 ok(p_cin
->base_ios
.width
== 0, "expected 0 got %d\n", p_cin
->base_ios
.width
);
8290 ok(p_cin
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cin
->base_ios
.do_lock
);
8291 ok(pstb_cin
->file
== stdin
, "wrong file pointer, expected %p got %p\n", stdin
, pstb_cin
->file
);
8292 ok(pstb_cin
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pstb_cin
->base
.allocated
);
8293 ok(pstb_cin
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pstb_cin
->base
.unbuffered
);
8294 ok(pstb_cin
->base
.ebuf
== NULL
, "wrong ebuf pointer, expected %p got %p\n", NULL
, pstb_cin
->base
.eback
);
8295 ok(pstb_cin
->base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, pstb_cin
->base
.eback
);
8296 ok(pstb_cin
->base
.pbase
== NULL
, "wrong put base, expected %p got %p\n", NULL
, pstb_cin
->base
.pbase
);
8298 pstb_cout
= (stdiobuf
*) p_cout
->base_ios
.sb
;
8299 ok(p_cout
->unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, p_cout
->unknown
);
8300 ok(p_cout
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cout
->base_ios
.state
);
8301 ok(p_cout
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cout
->base_ios
.delbuf
);
8302 ok(p_cout
->base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, p_cout
->base_ios
.tie
);
8303 ok(p_cout
->base_ios
.flags
== (FLAGS_unitbuf
|FLAGS_stdio
), "expected %x got %x\n",
8304 FLAGS_unitbuf
|FLAGS_stdio
, p_cout
->base_ios
.flags
);
8305 ok(p_cout
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cout
->base_ios
.precision
);
8306 ok(p_cout
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cout
->base_ios
.fill
);
8307 ok(p_cout
->base_ios
.width
== 0, "expected 0 got %d\n", p_cout
->base_ios
.width
);
8308 ok(p_cout
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cout
->base_ios
.do_lock
);
8309 ok(pstb_cout
->file
== stdout
, "wrong file pointer, expected %p got %p\n", stdout
, pstb_cout
->file
);
8310 ok(pstb_cout
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pstb_cout
->base
.allocated
);
8311 ok(pstb_cout
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pstb_cout
->base
.unbuffered
);
8312 ok(pstb_cout
->base
.ebuf
== pstb_cout
->base
.base
+ 80, "wrong ebuf pointer, expected %p got %p\n",
8313 pstb_cout
->base
.base
+ 80, pstb_cout
->base
.eback
);
8314 ok(pstb_cout
->base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, pstb_cout
->base
.eback
);
8315 ok(pstb_cout
->base
.pbase
== pstb_cout
->base
.base
, "wrong put base, expected %p got %p\n",
8316 pstb_cout
->base
.base
, pstb_cout
->base
.pbase
);
8317 ok(pstb_cout
->base
.pptr
== pstb_cout
->base
.base
, "wrong put pointer, expected %p got %p\n",
8318 pstb_cout
->base
.base
, pstb_cout
->base
.pptr
);
8319 ok(pstb_cout
->base
.epptr
== pstb_cout
->base
.base
+ 80, "wrong put end, expected %p got %p\n",
8320 pstb_cout
->base
.base
+ 80, pstb_cout
->base
.epptr
);
8322 pstb_cerr
= (stdiobuf
*) p_cerr
->base_ios
.sb
;
8323 ok(p_cerr
->unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, p_cerr
->unknown
);
8324 ok(p_cerr
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_cerr
->base_ios
.state
);
8325 ok(p_cerr
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_cerr
->base_ios
.delbuf
);
8326 ok(p_cerr
->base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, p_cerr
->base_ios
.tie
);
8327 ok(p_cerr
->base_ios
.flags
== (FLAGS_unitbuf
|FLAGS_stdio
), "expected %x got %x\n",
8328 FLAGS_unitbuf
|FLAGS_stdio
, p_cerr
->base_ios
.flags
);
8329 ok(p_cerr
->base_ios
.precision
== 6, "expected 6 got %d\n", p_cerr
->base_ios
.precision
);
8330 ok(p_cerr
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_cerr
->base_ios
.fill
);
8331 ok(p_cerr
->base_ios
.width
== 0, "expected 0 got %d\n", p_cerr
->base_ios
.width
);
8332 ok(p_cerr
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_cerr
->base_ios
.do_lock
);
8333 ok(pstb_cerr
->file
== stderr
, "wrong file pointer, expected %p got %p\n", stderr
, pstb_cerr
->file
);
8334 ok(pstb_cerr
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pstb_cerr
->base
.allocated
);
8335 ok(pstb_cerr
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pstb_cerr
->base
.unbuffered
);
8336 ok(pstb_cerr
->base
.ebuf
== pstb_cerr
->base
.base
+ 80, "wrong ebuf pointer, expected %p got %p\n",
8337 pstb_cerr
->base
.base
+ 80, pstb_cerr
->base
.eback
);
8338 ok(pstb_cerr
->base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, pstb_cerr
->base
.eback
);
8339 ok(pstb_cerr
->base
.pbase
== pstb_cerr
->base
.base
, "wrong put base, expected %p got %p\n",
8340 pstb_cerr
->base
.base
, pstb_cerr
->base
.pbase
);
8341 ok(pstb_cerr
->base
.pptr
== pstb_cerr
->base
.base
, "wrong put pointer, expected %p got %p\n",
8342 pstb_cerr
->base
.base
, pstb_cerr
->base
.pptr
);
8343 ok(pstb_cerr
->base
.epptr
== pstb_cerr
->base
.base
+ 80, "wrong put end, expected %p got %p\n",
8344 pstb_cerr
->base
.base
+ 80, pstb_cerr
->base
.epptr
);
8346 pstb_clog
= (stdiobuf
*) p_clog
->base_ios
.sb
;
8347 ok(p_clog
->unknown
== 0xabababab, "expected %d got %d\n", 0xabababab, p_clog
->unknown
);
8348 ok(p_clog
->base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, p_clog
->base_ios
.state
);
8349 ok(p_clog
->base_ios
.delbuf
== 1, "expected 1 got %d\n", p_clog
->base_ios
.delbuf
);
8350 ok(p_clog
->base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, p_clog
->base_ios
.tie
);
8351 ok(p_clog
->base_ios
.flags
== FLAGS_stdio
, "expected %x got %x\n", FLAGS_stdio
, p_clog
->base_ios
.flags
);
8352 ok(p_clog
->base_ios
.precision
== 6, "expected 6 got %d\n", p_clog
->base_ios
.precision
);
8353 ok(p_clog
->base_ios
.fill
== ' ', "expected 32 got %d\n", p_clog
->base_ios
.fill
);
8354 ok(p_clog
->base_ios
.width
== 0, "expected 0 got %d\n", p_clog
->base_ios
.width
);
8355 ok(p_clog
->base_ios
.do_lock
== -1, "expected -1 got %d\n", p_clog
->base_ios
.do_lock
);
8356 ok(pstb_clog
->file
== stderr
, "wrong file pointer, expected %p got %p\n", stderr
, pstb_clog
->file
);
8357 ok(pstb_clog
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pstb_clog
->base
.allocated
);
8358 ok(pstb_clog
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pstb_clog
->base
.unbuffered
);
8359 ok(pstb_clog
->base
.ebuf
== pstb_clog
->base
.base
+ 512, "wrong ebuf pointer, expected %p got %p\n",
8360 pstb_clog
->base
.base
+ 512, pstb_clog
->base
.eback
);
8361 ok(pstb_clog
->base
.eback
== NULL
, "wrong get base, expected %p got %p\n", NULL
, pstb_clog
->base
.eback
);
8362 ok(pstb_clog
->base
.pbase
== pstb_clog
->base
.base
, "wrong put base, expected %p got %p\n",
8363 pstb_clog
->base
.base
, pstb_clog
->base
.pbase
);
8364 ok(pstb_clog
->base
.pptr
== pstb_clog
->base
.base
, "wrong put pointer, expected %p got %p\n",
8365 pstb_clog
->base
.base
, pstb_clog
->base
.pptr
);
8366 ok(pstb_clog
->base
.epptr
== pstb_clog
->base
.base
+ 512, "wrong put end, expected %p got %p\n",
8367 pstb_clog
->base
.base
+ 512, pstb_clog
->base
.epptr
);
8369 p_cin
->count
= 0xabababab;
8370 p_ios_sync_with_stdio();
8371 ok(*p_ios_sunk_with_stdio
== 1, "expected 1 got %d\n", *p_ios_sunk_with_stdio
);
8372 ok(p_cin
->count
== 0xabababab, "expected %d got %d\n", 0xabababab, p_cin
->count
);
8373 p_ios_sync_with_stdio();
8374 ok(*p_ios_sunk_with_stdio
== 1, "expected 1 got %d\n", *p_ios_sunk_with_stdio
);
8375 ok(p_cin
->count
== 0xabababab, "expected %d got %d\n", 0xabababab, p_cin
->count
);
8378 static void test_fstream(void)
8380 const char *filename
= "fstream_test";
8381 iostream fs
, fs_copy
, *pfs
;
8390 memset(&fs
, 0xab, sizeof(iostream
));
8392 /* constructors/destructors */
8393 pfs
= call_func2(p_fstream_ctor
, &fs
, TRUE
);
8394 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8395 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8396 ok(fs
.base1
.extract_delim
== 0, "expected 0 got %d\n", fs
.base1
.extract_delim
);
8397 ok(fs
.base1
.count
== 0, "expected 0 got %d\n", fs
.base1
.count
);
8398 ok(fs
.base2
.unknown
== 0, "expected 0 got %d\n", fs
.base2
.unknown
);
8399 ok(fs
.base_ios
.sb
!= NULL
, "expected not %p got %p\n", NULL
, fs
.base_ios
.sb
);
8400 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8401 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8402 ok(fs
.base_ios
.tie
== NULL
, "expected %p got %p\n", NULL
, fs
.base_ios
.tie
);
8403 ok(fs
.base_ios
.flags
== FLAGS_skipws
, "expected %x got %x\n", FLAGS_skipws
, fs
.base_ios
.flags
);
8404 ok(fs
.base_ios
.precision
== 6, "expected 6 got %d\n", fs
.base_ios
.precision
);
8405 ok(fs
.base_ios
.fill
== ' ', "expected 32 got %d\n", fs
.base_ios
.fill
);
8406 ok(fs
.base_ios
.width
== 0, "expected 0 got %d\n", fs
.base_ios
.width
);
8407 ok(fs
.base_ios
.do_lock
== -1, "expected -1 got %d\n", fs
.base_ios
.do_lock
);
8408 ok(pfb
->fd
== -1, "wrong fd, expected -1 got %d\n", pfb
->fd
);
8409 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
8410 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
8411 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
8412 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
8413 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
8414 ok(pfb
->fd
== -1, "wrong fd, expected 0 got %d\n", pfb
->fd
);
8415 call_func1(p_fstream_vbase_dtor
, &fs
);
8417 pfs
= call_func3(p_fstream_fd_ctor
, &fs
, 42, TRUE
);
8418 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8419 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8420 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8421 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8422 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
8423 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
8424 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
8425 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
8426 ok(pfb
->fd
== 42, "wrong fd, expected 42 got %d\n", pfb
->fd
);
8427 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
8429 pfs
= call_func3(p_fstream_copy_ctor
, &fs_copy
, &fs
, TRUE
);
8430 pfb
= (filebuf
*) fs_copy
.base_ios
.sb
;
8431 ok(pfs
== &fs_copy
, "wrong return, expected %p got %p\n", &fs_copy
, pfs
);
8432 ok(fs_copy
.base_ios
.sb
== fs
.base_ios
.sb
, "expected shared streambuf\n");
8433 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8434 ok(fs_copy
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs_copy
.base_ios
.state
);
8436 call_func1(p_fstream_vbase_dtor
, &fs_copy
);
8437 call_func1(p_fstream_dtor
, &fs
.base_ios
);
8439 pfs
= call_func5(p_fstream_buffer_ctor
, &fs
, 53, buffer
, ARRAY_SIZE(buffer
), TRUE
);
8440 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8441 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8442 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8443 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8444 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
8445 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
8446 ok(pfb
->base
.base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, pfb
->base
.base
);
8447 ok(pfb
->base
.ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), pfb
->base
.ebuf
);
8448 ok(pfb
->fd
== 53, "wrong fd, expected 53 got %d\n", pfb
->fd
);
8449 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
8450 call_func1(p_fstream_dtor
, &fs
.base_ios
);
8452 pfs
= call_func5(p_fstream_buffer_ctor
, &fs
, 64, NULL
, 0, TRUE
);
8453 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8454 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8455 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8456 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8457 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8458 ok(pfb
->base
.allocated
== 0, "wrong allocate value, expected 0 got %d\n", pfb
->base
.allocated
);
8459 ok(pfb
->base
.unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", pfb
->base
.unbuffered
);
8460 ok(pfb
->base
.base
== NULL
, "wrong buffer, expected %p got %p\n", NULL
, pfb
->base
.base
);
8461 ok(pfb
->base
.ebuf
== NULL
, "wrong ebuf, expected %p got %p\n", NULL
, pfb
->base
.ebuf
);
8462 ok(pfb
->fd
== 64, "wrong fd, expected 64 got %d\n", pfb
->fd
);
8463 ok(pfb
->close
== 0, "wrong value, expected 0 got %d\n", pfb
->close
);
8464 call_func1(p_fstream_vbase_dtor
, &fs
);
8466 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
8467 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8468 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8469 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8470 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8471 ok(pfb
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pfb
->base
.allocated
);
8472 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
8473 ok(pfb
->base
.base
!= NULL
, "wrong buffer, expected not %p got %p\n", NULL
, pfb
->base
.base
);
8474 ok(pfb
->base
.ebuf
!= NULL
, "wrong ebuf, expected not %p got %p\n", NULL
, pfb
->base
.ebuf
);
8475 ok(pfb
->fd
!= -1, "wrong fd, expected not -1 got %d\n", pfb
->fd
);
8477 ok(pfb
->close
== 1, "wrong value, expected 1 got %d\n", pfb
->close
);
8478 call_func1(p_fstream_vbase_dtor
, &fs
);
8479 ok(_close(fd
) == -1, "expected fstream to close opened file\n");
8480 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8482 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
8483 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8484 ok(fs
.base_ios
.delbuf
== 1, "expected 1 got %d\n", fs
.base_ios
.delbuf
);
8485 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8486 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8487 ok(pfb
->base
.allocated
== 1, "wrong allocate value, expected 1 got %d\n", pfb
->base
.allocated
);
8488 ok(pfb
->base
.unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", pfb
->base
.unbuffered
);
8489 ok(pfb
->base
.base
!= NULL
, "wrong buffer, expected not %p got %p\n", NULL
, pfb
->base
.base
);
8490 ok(pfb
->base
.ebuf
!= NULL
, "wrong ebuf, expected not %p got %p\n", NULL
, pfb
->base
.ebuf
);
8491 ok(pfb
->fd
!= -1, "wrong fd, expected not -1 got %d\n", pfb
->fd
);
8493 ok(pfb
->close
== 1, "wrong value, expected 1 got %d\n", pfb
->close
);
8494 call_func1(p_fstream_vbase_dtor
, &fs
);
8495 ok(_close(fd
) == -1, "expected fstream to close opened file\n");
8496 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8499 call_func5(p_fstream_buffer_ctor
, &fs
, -1, NULL
, 0, TRUE
);
8500 ok(fs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8501 ok(fs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8502 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8503 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8505 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
, ARRAY_SIZE(buffer
));
8506 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8507 ok(fs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8508 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8509 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8510 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8511 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8513 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 0);
8514 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8515 ok(fs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8516 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8517 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8518 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8519 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8520 call_func1(p_fstream_vbase_dtor
, &fs
);
8522 call_func2(p_fstream_ctor
, &fs
, TRUE
);
8523 ok(fs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8524 ok(fs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8525 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8526 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8527 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8529 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
, ARRAY_SIZE(buffer
));
8530 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8531 ok(fs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8532 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8533 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8534 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8535 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8537 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 0);
8538 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8539 ok(fs
.base_ios
.sb
->base
== buffer
, "wrong buffer, expected %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8540 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8541 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8542 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8543 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8545 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
+ 8, ARRAY_SIZE(buffer
) - 8);
8546 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8547 ok(fs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, fs
.base_ios
.sb
->base
);
8548 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8549 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8550 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8551 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8553 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
+ 8, 0);
8554 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8555 ok(fs
.base_ios
.sb
->base
== buffer
+ 8, "wrong buffer, expected %p got %p\n", buffer
+ 8, fs
.base_ios
.sb
->base
);
8556 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8557 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8558 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8559 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8561 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
+ 4, ARRAY_SIZE(buffer
) - 4);
8562 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8563 ok(fs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, fs
.base_ios
.sb
->base
);
8564 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8565 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8566 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8567 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8569 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 5);
8570 ok(psb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, psb
);
8571 ok(fs
.base_ios
.sb
->base
== buffer
+ 4, "wrong buffer, expected %p got %p\n", buffer
+ 4, fs
.base_ios
.sb
->base
);
8572 ok(fs
.base_ios
.sb
->ebuf
== buffer
+ ARRAY_SIZE(buffer
), "wrong ebuf, expected %p got %p\n", buffer
+ ARRAY_SIZE(buffer
), fs
.base_ios
.sb
->ebuf
);
8573 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8574 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8575 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8576 call_func1(p_fstream_vbase_dtor
, &fs
);
8578 /* setbuf - seems to be a nop and always return NULL in those other cases */
8579 pfs
= call_func5(p_fstream_buffer_ctor
, &fs
, 42, NULL
, 0, TRUE
);
8580 ok(fs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8581 ok(fs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8582 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8583 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8585 fs
.base_ios
.state
= IOSTATE_eofbit
;
8586 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
, ARRAY_SIZE(buffer
));
8587 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8588 ok(fs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8589 ok(fs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8590 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8591 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8592 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8594 fs
.base_ios
.state
= IOSTATE_eofbit
;
8595 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 0);
8596 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8597 ok(fs
.base_ios
.sb
->base
== NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8598 ok(fs
.base_ios
.sb
->ebuf
== NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8599 ok(fs
.base_ios
.sb
->unbuffered
== 1, "wrong unbuffered value, expected 1 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8600 ok(fs
.base_ios
.sb
->allocated
== 0, "wrong allocated value, expected 0 got %d\n", fs
.base_ios
.sb
->allocated
);
8601 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8602 call_func1(p_fstream_vbase_dtor
, &fs
);
8604 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
8605 fs
.base_ios
.state
= IOSTATE_eofbit
;
8606 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 0);
8607 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8608 ok(fs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8609 ok(fs
.base_ios
.sb
->ebuf
!= NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8610 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8611 ok(fs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", fs
.base_ios
.sb
->allocated
);
8612 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8614 fs
.base_ios
.state
= IOSTATE_eofbit
;
8615 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
, ARRAY_SIZE(buffer
));
8616 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8617 ok(fs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8618 ok(fs
.base_ios
.sb
->base
!= buffer
, "wrong base value, expected not %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8619 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8620 ok(fs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", fs
.base_ios
.sb
->allocated
);
8621 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8622 call_func1(p_fstream_vbase_dtor
, &fs
);
8623 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8625 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
8626 fs
.base_ios
.state
= IOSTATE_eofbit
;
8627 psb
= call_func3(p_fstream_setbuf
, &fs
, NULL
, 0);
8628 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8629 ok(fs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8630 ok(fs
.base_ios
.sb
->ebuf
!= NULL
, "wrong ebuf value, expected NULL got %p\n", fs
.base_ios
.sb
->ebuf
);
8631 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8632 ok(fs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", fs
.base_ios
.sb
->allocated
);
8633 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8635 fs
.base_ios
.state
= IOSTATE_eofbit
;
8636 psb
= call_func3(p_fstream_setbuf
, &fs
, buffer
, ARRAY_SIZE(buffer
));
8637 ok(psb
== NULL
, "wrong return, expected NULL got %p\n", psb
);
8638 ok(fs
.base_ios
.sb
->base
!= NULL
, "wrong base value, expected NULL got %p\n", fs
.base_ios
.sb
->base
);
8639 ok(fs
.base_ios
.sb
->base
!= buffer
, "wrong base value, expected not %p got %p\n", buffer
, fs
.base_ios
.sb
->base
);
8640 ok(fs
.base_ios
.sb
->unbuffered
== 0, "wrong unbuffered value, expected 0 got %d\n", fs
.base_ios
.sb
->unbuffered
);
8641 ok(fs
.base_ios
.sb
->allocated
== 1, "wrong allocated value, expected 1 got %d\n", fs
.base_ios
.sb
->allocated
);
8642 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8643 call_func1(p_fstream_vbase_dtor
, &fs
);
8644 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8647 pfs
= call_func2(p_fstream_ctor
, &fs
, TRUE
);
8648 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8649 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8650 call_func2(p_fstream_attach
, &fs
, 42);
8651 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "attaching on vanilla stream set some state bits\n");
8652 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8653 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
8654 ok(pfb
->close
== 0, "wrong close value, expected 0 got %d\n", pfb
->close
);
8655 fs
.base_ios
.state
= IOSTATE_eofbit
;
8656 call_func2(p_fstream_attach
, &fs
, 53);
8657 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "attaching on already setup stream did not set failbit\n");
8658 ok(fd
== 42, "wrong fd, expected 42 got %d\n", fd
);
8659 call_func1(p_fstream_vbase_dtor
, &fs
);
8662 pfs
= call_func2(p_fstream_ctor
, &fs
, TRUE
);
8663 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8664 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8665 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8666 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8667 ok(fd
== -1, "wrong fd, expected -1 but got %d\n", fd
);
8668 call_func1(p_fstream_vbase_dtor
, &fs
);
8670 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
8671 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8672 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8673 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8674 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8675 ok(fd
== pfb
->fd
, "wrong fd, expected %d but got %d\n", pfb
->fd
, fd
);
8676 call_func1(p_fstream_vbase_dtor
, &fs
);
8677 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8679 pfs
= call_func2(p_fstream_ctor
, &fs
, TRUE
);
8680 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8681 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8682 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8683 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8684 ok(fd
== -1, "wrong fd, expected -1 but got %d\n", fd
);
8685 call_func1(p_fstream_vbase_dtor
, &fs
);
8687 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
8688 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8689 ok(pfs
== &fs
, "wrong return, expected %p got %p\n", &fs
, pfs
);
8690 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8691 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8692 ok(fd
== pfb
->fd
, "wrong fd, expected %d but got %d\n", pfb
->fd
, fd
);
8695 pfb
= (filebuf
*) call_func1(p_fstream_rdbuf
, &fs
);
8696 ok((streambuf
*) pfb
== fs
.base_ios
.sb
, "wrong return, expected %p got %p\n", fs
.base_ios
.sb
, pfb
);
8697 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8700 ret
= (int) call_func2(p_fstream_setmode
, &fs
, filebuf_binary
);
8701 ok(ret
== filebuf_text
, "wrong return, expected %d got %d\n", filebuf_text
, ret
);
8702 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8703 ret
= (int) call_func2(p_fstream_setmode
, &fs
, filebuf_binary
);
8704 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
8705 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8706 ret
= (int) call_func2(p_fstream_setmode
, &fs
, filebuf_text
);
8707 ok(ret
== filebuf_binary
, "wrong return, expected %d got %d\n", filebuf_binary
, ret
);
8708 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8709 ret
= (int) call_func2(p_fstream_setmode
, &fs
, 0x9000);
8710 ok(ret
== -1, "wrong return, expected -1 got %d\n", ret
);
8711 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8713 /* close && is_open */
8714 ok((int) call_func1(p_fstream_is_open
, &fs
) == 1, "expected fstream to be open\n");
8715 fs
.base_ios
.state
= IOSTATE_eofbit
| IOSTATE_failbit
;
8716 call_func1(p_fstream_close
, &fs
);
8717 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "close did not clear state = %d\n", fs
.base_ios
.state
);
8718 fs
.base_ios
.state
= IOSTATE_eofbit
;
8719 call_func1(p_fstream_close
, &fs
);
8720 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "close on a closed stream did not set failbit\n");
8721 ok((int) call_func1(p_fstream_is_open
, &fs
) == 0, "expected fstream to not be open\n");
8722 ok(_close(fd
) == -1, "expected close to close the opened file\n");
8725 fs
.base_ios
.state
= IOSTATE_eofbit
;
8726 call_func4(p_fstream_open
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
);
8727 fd
= (int) call_func1(p_fstream_fd
, &fs
);
8728 ok(fd
!= -1, "wrong fd, expected not -1 got %d\n", fd
);
8729 ok(fs
.base_ios
.state
== IOSTATE_eofbit
, "open did not succeed\n");
8730 call_func4(p_fstream_open
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
);
8731 ok(fs
.base_ios
.state
== (IOSTATE_eofbit
| IOSTATE_failbit
), "second open did not set failbit\n");
8732 call_func1(p_fstream_close
, &fs
);
8733 call_func1(p_fstream_vbase_dtor
, &fs
);
8734 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s'\n", filename
);
8736 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_out
, filebuf_openprot
, TRUE
);
8737 ok(pfs
== &fs
, "constructor returned wrong pointer, expected %p got %p\n", &fs
, pfs
);
8738 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "wrong stream state, expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8739 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8740 ok((int) call_func1(p_filebuf_is_open
, pfb
) == TRUE
, "expected filebuf to be open\n");
8741 ok(fs
.base_ios
.delbuf
== 1, "internal filebuf not marked for deletion\n");
8743 /* integration with ostream */
8744 pos
= call_func2(p_ostream_print_str
, (ostream
*) &fs
.base2
, "ftest ");
8745 ok(pos
== (ostream
*) &fs
.base2
, "stream operation returned wrong pointer, expected %p got %p\n", &fs
, &fs
.base2
);
8746 pos
= call_func2(p_ostream_print_int
, (ostream
*) &fs
.base2
, 15);
8747 ok(pos
== (ostream
*) &fs
.base2
, "stream operation returned wrong pointer, expected %p got %p\n", &fs
, &fs
.base2
);
8749 /* make sure that OPENMODE_in is not implied */
8750 ok(_lseek(pfb
->fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
8751 ok(_read(pfb
->fd
, st
, 1) == -1, "_read succeeded on OPENMODE_out only fstream\n");
8753 /* reopen the file for reading */
8754 call_func1(p_fstream_vbase_dtor
, &fs
);
8755 pfs
= call_func5(p_fstream_open_ctor
, &fs
, filename
, OPENMODE_in
, filebuf_openprot
, TRUE
);
8756 ok(pfs
== &fs
, "constructor returned wrong pointer, expected %p got %p\n", &fs
, pfs
);
8757 ok(fs
.base_ios
.state
== IOSTATE_goodbit
, "wrong stream state, expected %d got %d\n", IOSTATE_goodbit
, fs
.base_ios
.state
);
8758 pfb
= (filebuf
*) fs
.base_ios
.sb
;
8759 ok((int) call_func1(p_filebuf_is_open
, pfb
) == TRUE
, "expected filebuf to be open\n");
8761 /* integration with istream */
8762 memset(st
, 'A', sizeof(st
));
8763 pis
= call_func2(p_istream_read_str
, (istream
*) &fs
.base1
, st
);
8764 ok(pis
== (istream
*) &fs
.base1
, "stream operation returned wrong pointer, expected %p got %p\n", &fs
, &fs
.base1
);
8766 ok(!strcmp(st
, "ftest"), "expected 'ftest' got '%s'\n", st
);
8769 pis
= call_func2(p_istream_read_int
, (istream
*) &fs
.base1
, &i
);
8770 ok(pis
== (istream
*) &fs
.base1
, "stream operation returned wrong pointer, expected %p got %p\n", &fs
, &fs
.base1
);
8771 ok(i
== 15, "expected 12 got %d\n", i
);
8773 /* make sure that OPENMODE_out is not implied */
8774 ok(_lseek(pfb
->fd
, 0, SEEK_SET
) == 0, "_lseek failed\n");
8775 ok(_write(pfb
->fd
, "blabla", 6) == -1, "_write succeeded on OPENMODE_in fstream\n");
8778 call_func1(p_fstream_vbase_dtor
, &fs
);
8779 ok(_unlink(filename
) == 0, "Couldn't unlink file named '%s', some filedescs are still open?\n", filename
);
8782 static void test_exception(void)
8784 const char *unknown
= "Unknown exception";
8785 const char *test
= "test";
8791 memset(&e
, 0, sizeof(e
));
8792 what
= call_func1(p_exception_what
, (void*) &e
);
8793 ok(!strcmp(what
, unknown
), "expected %s got %s\n", unknown
, what
);
8795 call_func2(p_exception_ctor
, (void*) &e
, &test
);
8796 what
= call_func1(p_exception_what
, (void*) &e
);
8797 ok(!strcmp(what
, test
), "expected %s got %s\n", test
, what
);
8798 call_func1(p_exception_dtor
, (void*) &e
);
8801 memset(&le
, 0xff, sizeof(le
));
8802 call_func2(p_logic_error_ctor
, (void*) &le
, &test
);
8803 ok(!strcmp(le
.e
.name
, test
), "expected %s got %s\n", test
, le
.e
.name
);
8804 ok(le
.e
.do_free
, "expected TRUE, got FALSE\n");
8805 what
= call_func1(p_exception_what
, (void*) &le
.e
);
8806 ok(!strcmp(what
, test
), "expected %s got %s\n", test
, what
);
8807 call_func1(p_logic_error_dtor
, (void*) &le
);
8810 static DWORD WINAPI
_try_enter_critical(void *crit
)
8812 BOOL ret
= TryEnterCriticalSection(crit
);
8815 LeaveCriticalSection(crit
);
8820 static void test_mtlock_mtunlock(void)
8822 CRITICAL_SECTION crit
;
8824 DWORD exit_code
, ret
;
8826 InitializeCriticalSection(&crit
);
8830 thread
= CreateThread(NULL
, 0, _try_enter_critical
, &crit
, 0, NULL
);
8831 ok(thread
!= NULL
, "failed to create a thread, error: %x\n", GetLastError());
8832 ret
= WaitForSingleObject(thread
, 1000);
8833 ok(ret
== WAIT_OBJECT_0
, "failed to wait for the thread, ret: %d, error: %x\n", ret
, GetLastError());
8834 ok(GetExitCodeThread(thread
, &exit_code
), "failed to get exit code of the thread\n");
8835 ok(exit_code
== FALSE
, "the thread entered critical section\n");
8836 ret
= CloseHandle(thread
);
8837 ok(ret
, "failed to close thread's handle, error: %x\n", GetLastError());
8841 thread
= CreateThread(NULL
, 0, _try_enter_critical
, &crit
, 0, NULL
);
8842 ok(thread
!= NULL
, "failed to create a thread, error: %x\n", GetLastError());
8843 ret
= WaitForSingleObject(thread
, 1000);
8844 ok(ret
== WAIT_OBJECT_0
, "failed to wait for the thread, ret: %d, error: %x\n", ret
, GetLastError());
8845 ok(GetExitCodeThread(thread
, &exit_code
), "failed to get exit code of the thread\n");
8846 ok(exit_code
== TRUE
, "the thread was not able to enter critical section\n");
8847 ret
= CloseHandle(thread
);
8848 ok(ret
, "failed to close thread's handle, error: %x\n", GetLastError());
8858 test_strstreambuf();
8862 test_ostream_print();
8863 test_ostream_withassign();
8867 test_istream_getint();
8868 test_istream_getdouble();
8869 test_istream_read();
8870 test_istream_withassign();
8876 test_Iostream_init();
8880 test_mtlock_mtunlock();
8882 FreeLibrary(msvcrt
);
8883 FreeLibrary(msvcirt
);