winmm/tests: Add more mmioSeek tests.
This commit is contained in:
parent
42bdb48c67
commit
10c7f5859c
|
@ -668,6 +668,125 @@ static void test_mmioOpen_fourcc(void)
|
|||
mmioInstallIOProc(FOURCC_DOS, NULL, MMIO_REMOVEPROC);
|
||||
}
|
||||
|
||||
static BOOL create_test_file(char *temp_file)
|
||||
{
|
||||
char temp_path[MAX_PATH];
|
||||
DWORD ret, written;
|
||||
HANDLE h;
|
||||
|
||||
ret = GetTempPath(sizeof(temp_path), temp_path);
|
||||
ok(ret, "Failed to get a temp path, err %d\n", GetLastError());
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
|
||||
ret = GetTempFileName(temp_path, "mmio", 0, temp_file);
|
||||
ok(ret, "Failed to get a temp name, err %d\n", GetLastError());
|
||||
if (!ret)
|
||||
return FALSE;
|
||||
|
||||
h = CreateFileA(temp_file, GENERIC_WRITE, 0, NULL,
|
||||
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
ok(h != INVALID_HANDLE_VALUE, "Failed to create a file, err %d\n", GetLastError());
|
||||
if (h == INVALID_HANDLE_VALUE) return FALSE;
|
||||
|
||||
ret = WriteFile(h, RIFF_buf, sizeof(RIFF_buf), &written, NULL);
|
||||
ok(ret, "Failed to write a file, err %d\n", GetLastError());
|
||||
CloseHandle(h);
|
||||
if (!ret) DeleteFileA(temp_file);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void test_mmioSeek(void)
|
||||
{
|
||||
HMMIO hmmio;
|
||||
MMIOINFO mmio;
|
||||
LONG end, pos;
|
||||
const LONG size = sizeof(RIFF_buf), offset = 16;
|
||||
char test_file[MAX_PATH];
|
||||
MMRESULT res;
|
||||
|
||||
/* test memory file */
|
||||
memset(&mmio, 0, sizeof(mmio));
|
||||
mmio.fccIOProc = FOURCC_MEM;
|
||||
mmio.pchBuffer = (char*)&RIFF_buf;
|
||||
mmio.cchBuffer = sizeof(RIFF_buf);
|
||||
hmmio = mmioOpen(NULL, &mmio, MMIO_READ);
|
||||
ok(hmmio != NULL, "mmioOpen error %u\n", mmio.wErrorRet);
|
||||
if (hmmio != NULL) {
|
||||
/* seek to the end */
|
||||
end = mmioSeek(hmmio, 0, SEEK_END);
|
||||
todo_wine ok(end == size, "expected %d, got %d\n", size, end);
|
||||
|
||||
/* seek backward from the end */
|
||||
pos = mmioSeek(hmmio, offset, SEEK_END);
|
||||
ok(pos == size-offset, "expected %d, got %d\n", size-offset, pos);
|
||||
|
||||
mmioClose(hmmio, 0);
|
||||
}
|
||||
|
||||
if (!create_test_file(test_file)) return;
|
||||
|
||||
/* test standard file without buffering */
|
||||
hmmio = NULL;
|
||||
memset(&mmio, 0, sizeof(mmio));
|
||||
mmio.fccIOProc = FOURCC_DOS;
|
||||
mmio.pchBuffer = 0;
|
||||
mmio.cchBuffer = 0;
|
||||
hmmio = mmioOpen(test_file, &mmio, MMIO_READ);
|
||||
ok(hmmio != NULL, "mmioOpen error %u\n", mmio.wErrorRet);
|
||||
if (hmmio != NULL) {
|
||||
/* seek to the end */
|
||||
end = mmioSeek(hmmio, 0, SEEK_END);
|
||||
ok(end == size, "expected %d, got %d\n", size, end);
|
||||
|
||||
/* test MMIOINFO values */
|
||||
res = mmioGetInfo(hmmio, &mmio, 0);
|
||||
ok(res == MMSYSERR_NOERROR, "expected 0, got %d\n", res);
|
||||
ok(mmio.pchNext == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchNext);
|
||||
ok(mmio.pchEndRead == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchEndRead);
|
||||
ok(mmio.pchEndWrite == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchEndWrite);
|
||||
todo_wine ok(mmio.lBufOffset == size, "expected %d, got %d\n", size, mmio.lBufOffset);
|
||||
ok(mmio.lDiskOffset == size, "expected %d, got %d\n", size, mmio.lDiskOffset);
|
||||
|
||||
/* seek backward from the end */
|
||||
pos = mmioSeek(hmmio, offset, SEEK_END);
|
||||
todo_wine ok(pos == size-offset, "expected %d, got %d\n", size-offset, pos);
|
||||
|
||||
mmioClose(hmmio, 0);
|
||||
}
|
||||
|
||||
/* test standard file with buffering */
|
||||
hmmio = NULL;
|
||||
memset(&mmio, 0, sizeof(mmio));
|
||||
mmio.fccIOProc = FOURCC_DOS;
|
||||
mmio.pchBuffer = 0;
|
||||
mmio.cchBuffer = 0;
|
||||
hmmio = mmioOpen(test_file, &mmio, MMIO_READ | MMIO_ALLOCBUF);
|
||||
ok(hmmio != NULL, "mmioOpen error %u\n", mmio.wErrorRet);
|
||||
if (hmmio != NULL) {
|
||||
/* seek to the end */
|
||||
end = mmioSeek(hmmio, 0, SEEK_END);
|
||||
ok(end == size, "expected %d, got %d\n", size, end);
|
||||
|
||||
/* test MMIOINFO values */
|
||||
res = mmioGetInfo(hmmio, &mmio, 0);
|
||||
ok(res == MMSYSERR_NOERROR, "expected 0, got %d\n", res);
|
||||
ok(mmio.pchNext == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchNext);
|
||||
ok(mmio.pchEndRead == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchEndRead);
|
||||
ok(mmio.pchEndWrite == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchEndWrite);
|
||||
ok(mmio.lBufOffset == end, "expected %d, got %d\n", end, mmio.lBufOffset);
|
||||
ok(mmio.lDiskOffset == size, "expected %d, got %d\n", size, mmio.lDiskOffset);
|
||||
|
||||
/* seek backward from the end */
|
||||
pos = mmioSeek(hmmio, offset, SEEK_END);
|
||||
ok(pos == size-offset, "expected %d, got %d\n", size-offset, pos);
|
||||
|
||||
mmioClose(hmmio, 0);
|
||||
}
|
||||
|
||||
DeleteFileA(test_file);
|
||||
}
|
||||
|
||||
START_TEST(mmio)
|
||||
{
|
||||
/* Make it possible to run the tests against a specific AVI file in
|
||||
|
@ -683,4 +802,5 @@ START_TEST(mmio)
|
|||
test_mmioSetBuffer(NULL);
|
||||
test_mmioSetBuffer(fname);
|
||||
test_mmioOpen_fourcc();
|
||||
test_mmioSeek();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue