msvcrt/tests: Add test for ioinfo->exflag.

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Paul Gofman 2022-04-04 18:52:17 +03:00 committed by Alexandre Julliard
parent a074d0c3a8
commit 2636c9e80e
1 changed files with 49 additions and 0 deletions

View File

@ -37,6 +37,20 @@
#include <locale.h>
#include <winternl.h>
#define WX_OPEN 0x01
#define WX_ATEOF 0x02
#define WX_READNL 0x04
#define WX_PIPE 0x08
#define WX_DONTINHERIT 0x10
#define WX_APPEND 0x20
#define WX_TTY 0x40
#define WX_TEXT 0x80
#define EF_UTF8 0x01
#define EF_UTF16 0x02
#define EF_CRIT_INIT 0x04
#define EF_UNK_UNICODE 0x08
#define MSVCRT_FD_BLOCK_SIZE 32
typedef struct {
HANDLE handle;
@ -2851,6 +2865,40 @@ static void test_open_hints(void)
unlink(tempfile);
}
static void test_ioinfo_flags(void)
{
HANDLE handle;
ioinfo *info;
char *tempf;
int tempfd;
tempf = _tempnam(".","wne");
tempfd = _open(tempf, _O_CREAT|_O_TRUNC|_O_WRONLY|_O_WTEXT, _S_IWRITE);
ok(tempfd != -1, "_open failed with error: %d\n", errno);
handle = (HANDLE)_get_osfhandle(tempfd);
info = &__pioinfo[tempfd / MSVCRT_FD_BLOCK_SIZE][tempfd % MSVCRT_FD_BLOCK_SIZE];
ok(!!info, "NULL info.\n");
ok(info->handle == handle, "Unexpected handle %p, expected %p.\n", info->handle, handle);
ok(info->exflag == (EF_UTF16 | EF_CRIT_INIT | EF_UNK_UNICODE), "Unexpected exflag %#x.\n", info->exflag);
ok(info->wxflag == (WX_TEXT | WX_OPEN), "Unexpected wxflag %#x.\n", info->wxflag);
close(tempfd);
ok(info->handle == INVALID_HANDLE_VALUE, "Unexpected handle %p.\n", info->handle);
ok(info->exflag == (EF_UTF16 | EF_CRIT_INIT | EF_UNK_UNICODE), "Unexpected exflag %#x.\n", info->exflag);
ok(!info->wxflag, "Unexpected wxflag %#x.\n", info->wxflag);
info = &__pioinfo[(tempfd + 4) / MSVCRT_FD_BLOCK_SIZE][(tempfd + 4) % MSVCRT_FD_BLOCK_SIZE];
ok(!!info, "NULL info.\n");
ok(info->handle == INVALID_HANDLE_VALUE, "Unexpected handle %p.\n", info->handle);
ok(!info->exflag, "Unexpected exflag %#x.\n", info->exflag);
unlink(tempf);
free(tempf);
}
START_TEST(file)
{
int arg_c;
@ -2925,6 +2973,7 @@ START_TEST(file)
test_lseek();
test_fopen_hints();
test_open_hints();
test_ioinfo_flags();
/* Wait for the (_P_NOWAIT) spawned processes to finish to make sure the report
* file contains lines in the correct order