301 if (!pSHLWAPI_17 || !pSHLWAPI_18 || !pSHLWAPI_19 || !pSHLWAPI_20 ||
302 !pSHLWAPI_21 || !pSHLWAPI_22)
312 for (
i = 0;
i <
item->ulSize;
i++)
316 bRet = pSHLWAPI_20(&
list, inserted);
317 ok(bRet ==
TRUE,
"failed list add\n");
324 inserted = pSHLWAPI_22(
list,
item->ulId);
325 ok(inserted !=
NULL,
"lost after adding\n");
327 ok(!inserted || inserted->
ulId != ~0
U,
"find returned a container\n");
330 if (inserted && inserted->
ulSize & 0x3)
333 ok(inserted[-1].ulId == ~0
U,
"invalid size is not countained\n");
335 "container too small\n");
340 "id %d wrong size %d\n", inserted->
ulId, inserted->
ulSize);
351 ok(bDataOK ==
TRUE,
"data corrupted on insert\n");
353 ok(!inserted || inserted->
ulId==
item->ulId,
"find got wrong item\n");
361 hRet = pSHLWAPI_17(&streamobj.IStream_iface,
list);
362 ok(hRet ==
S_OK,
"write failed\n");
367 ok(streamobj.readcalls == 0,
"called Read() in write\n");
368 ok(streamobj.seekcalls == 0,
"called Seek() in write\n");
373 streamobj.failwritecall =
TRUE;
374 hRet = pSHLWAPI_17(&streamobj.IStream_iface,
list);
376 ok(streamobj.writecalls == 1,
"called object after failure\n");
377 ok(streamobj.readcalls == 0,
"called Read() after failure\n");
378 ok(streamobj.seekcalls == 0,
"called Seek() after failure\n");
381 streamobj.failwritesize =
TRUE;
382 hRet = pSHLWAPI_17(&streamobj.IStream_iface,
list);
384 "changed size failure return\n");
385 ok(streamobj.writecalls == 1,
"called object after size failure\n");
386 ok(streamobj.readcalls == 0,
"called Read() after failure\n");
387 ok(streamobj.seekcalls == 0,
"called Seek() after failure\n");
393 bRet = pSHLWAPI_20(&
list, inserted);
394 ok(bRet ==
FALSE,
"Expected failure\n");
396 inserted = pSHLWAPI_22(
list, 33);
397 ok(inserted ==
NULL,
"inserted bad element size\n");
401 inserted->
ulId = ~0
U;
402 bRet = pSHLWAPI_20(&
list, inserted);
403 ok(bRet ==
FALSE,
"Expected failure\n");
408 inserted = pSHLWAPI_22(
list, 99999999);
409 ok(inserted ==
NULL,
"found a nonexistent item\n");
415 ok(bRet ==
TRUE,
"couldn't find item to delete\n");
420 inserted = pSHLWAPI_22(
list, 99999999);
421 ok(inserted ==
NULL,
"found an item in empty list\n");
426 hRet = pSHLWAPI_18(&streamobj.IStream_iface, &
list);
427 ok(hRet ==
S_OK,
"failed create from Read()\n");
430 ok(streamobj.readbeyondend ==
FALSE,
"read beyond end\n");
433 ok(streamobj.writecalls == 0,
"called Write() from create\n");
434 ok(streamobj.seekcalls == 0,
"called Seek() from create\n");
441 inserted = pSHLWAPI_22(
list,
item->ulId);
442 ok(inserted !=
NULL,
"lost after adding\n");
444 ok(!inserted || inserted->
ulId != ~0
U,
"find returned a container\n");
447 if (inserted && inserted->
ulSize & 0x3)
450 ok(inserted[-1].ulId == ~0
U,
"invalid size is not countained\n");
452 "container too small\n");
457 "id %d wrong size %d\n", inserted->
ulId, inserted->
ulSize);
459 ok(!inserted || inserted->
ulId==
item->ulId,
"find got wrong item\n");
469 ok(bDataOK ==
TRUE,
"data corrupted on insert\n");
477 streamobj.failreadcall =
TRUE;
478 hRet = pSHLWAPI_18(&streamobj.IStream_iface, &
list);
480 ok(streamobj.readbeyondend ==
FALSE,
"read beyond end\n");
481 ok(streamobj.readcalls == 1,
"called object after read failure\n");
482 ok(streamobj.writecalls == 0,
"called Write() after read failure\n");
483 ok(streamobj.seekcalls == 0,
"called Seek() after read failure\n");
487 streamobj.readreturnlarge =
TRUE;
488 hRet = pSHLWAPI_18(&streamobj.IStream_iface, &
list);
489 ok(hRet ==
S_OK,
"failed create from Read() with large item\n");
490 ok(streamobj.readbeyondend ==
FALSE,
"read beyond end\n");
491 ok(streamobj.readcalls == 1,
"wrong call count\n");
492 ok(streamobj.writecalls == 0,
"called Write() after read failure\n");
493 ok(streamobj.seekcalls == 2,
"wrong Seek() call count (%d)\n", streamobj.seekcalls);
struct tagSHLWAPI_CLIST * LPSHLWAPI_CLIST
#define STG_E_ACCESSDENIED
static void InitDummyStream(struct dummystream *obj)
struct tagSHLWAPI_CLIST SHLWAPI_CLIST
static const SHLWAPI_CLIST SHLWAPI_CLIST_items[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static unsigned char buff[32768]