d3drm/tests: Add tests for IDirect3DRMTexture*_InitFromFile().
Signed-off-by: Aaryaman Vasishta <jem456.vasishta@gmail.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
a93334638b
commit
f1dab9ff80
|
@ -5569,10 +5569,11 @@ static void test_load_texture(void)
|
||||||
IDirect3DRM3 *d3drm3;
|
IDirect3DRM3 *d3drm3;
|
||||||
IDirect3DRM2 *d3drm2;
|
IDirect3DRM2 *d3drm2;
|
||||||
IDirect3DRM *d3drm1;
|
IDirect3DRM *d3drm1;
|
||||||
|
ULONG ref1, ref2;
|
||||||
|
unsigned int i;
|
||||||
char *filename;
|
char *filename;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
int i;
|
|
||||||
|
|
||||||
static const struct
|
static const struct
|
||||||
{
|
{
|
||||||
|
@ -5595,6 +5596,7 @@ static void test_load_texture(void)
|
||||||
ok(SUCCEEDED(hr), "Failed to get IDirect3DRM2 interface, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get IDirect3DRM2 interface, hr %#x.\n", hr);
|
||||||
hr = IDirect3DRM_QueryInterface(d3drm1, &IID_IDirect3DRM3, (void **)&d3drm3);
|
hr = IDirect3DRM_QueryInterface(d3drm1, &IID_IDirect3DRM3, (void **)&d3drm3);
|
||||||
ok(SUCCEEDED(hr), "Failed to get IDirect3DRM3 interface, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get IDirect3DRM3 interface, hr %#x.\n", hr);
|
||||||
|
ref1 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(tests); ++i)
|
for (i = 0; i < ARRAY_SIZE(tests); ++i)
|
||||||
{
|
{
|
||||||
|
@ -5602,26 +5604,80 @@ static void test_load_texture(void)
|
||||||
|
|
||||||
hr = IDirect3DRM_LoadTexture(d3drm1, filename, &texture1);
|
hr = IDirect3DRM_LoadTexture(d3drm1, filename, &texture1);
|
||||||
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
todo_wine ok(ref2 > ref1, "Test %u: expected ref2 > ref1, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
|
||||||
|
hr = IDirect3DRMTexture_InitFromFile(texture1, filename);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
/* InitFromFile() seems to AddRef() IDirect3DRM even if it fails. */
|
||||||
|
if (hr == D3DRMERR_BADOBJECT)
|
||||||
|
IDirect3DRM_Release(d3drm1);
|
||||||
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
|
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
|
||||||
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
if (d3drm_img)
|
if (d3drm_img)
|
||||||
test_bitmap_data(i * 4, d3drm_img, FALSE, tests[i].w, tests[i].h, tests[i].palettized);
|
test_bitmap_data(i * 7, d3drm_img, FALSE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
|
IDirect3DRMTexture_Release(texture1);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
ok(ref1 == ref2, "Test %u: expected ref1 == ref2, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
hr = IDirect3DRM_CreateObject(d3drm1, &CLSID_CDirect3DRMTexture,
|
||||||
|
NULL, &IID_IDirect3DRMTexture, (void **)&texture1);
|
||||||
|
ok(SUCCEEDED(hr), "Test %u: Failed to create texture, hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture_InitFromFile(texture1, NULL);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture_InitFromFile(texture1, "");
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture_InitFromFile(texture1, filename);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "Test %u: Failed to initialise texture from file, hr %#x.\n", i, hr);
|
||||||
|
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
|
||||||
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
|
if (d3drm_img)
|
||||||
|
test_bitmap_data(i * 7 + 1, d3drm_img, FALSE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
IDirect3DRMTexture_Release(texture1);
|
IDirect3DRMTexture_Release(texture1);
|
||||||
|
|
||||||
hr = IDirect3DRM2_LoadTexture(d3drm2, filename, &texture2);
|
hr = IDirect3DRM2_LoadTexture(d3drm2, filename, &texture2);
|
||||||
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
todo_wine ok(ref2 > ref1, "Test %u: expected ref2 > ref1, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
|
||||||
|
hr = IDirect3DRMTexture2_InitFromFile(texture2, filename);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
if (hr == D3DRMERR_BADOBJECT)
|
||||||
|
IDirect3DRM_Release(d3drm1);
|
||||||
d3drm_img = IDirect3DRMTexture2_GetImage(texture2);
|
d3drm_img = IDirect3DRMTexture2_GetImage(texture2);
|
||||||
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
if (d3drm_img)
|
if (d3drm_img)
|
||||||
test_bitmap_data(i * 4 + 1, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
test_bitmap_data(i * 7 + 2, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
|
IDirect3DRMTexture2_Release(texture2);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
ok(ref1 == ref2, "Test %u: expected ref1 == ref2, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
hr = IDirect3DRM2_CreateObject(d3drm2, &CLSID_CDirect3DRMTexture,
|
||||||
|
NULL, &IID_IDirect3DRMTexture2, (void **)&texture2);
|
||||||
|
ok(SUCCEEDED(hr), "Test %u: Failed to create texture, hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture2_InitFromFile(texture2, NULL);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture2_InitFromFile(texture2, "");
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture2_InitFromFile(texture2, filename);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "Test %u: Failed to initialise texture from file, hr %#x.\n", i, hr);
|
||||||
|
d3drm_img = IDirect3DRMTexture2_GetImage(texture2);
|
||||||
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
|
if (d3drm_img)
|
||||||
|
test_bitmap_data(i * 7 + 3, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
IDirect3DRMTexture2_Release(texture2);
|
IDirect3DRMTexture2_Release(texture2);
|
||||||
|
|
||||||
hr = IDirect3DRM3_LoadTexture(d3drm3, filename, &texture3);
|
hr = IDirect3DRM3_LoadTexture(d3drm3, filename, &texture3);
|
||||||
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
ok(SUCCEEDED(hr), "Test %u: Failed to load texture, hr %#x.\n", i, hr);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
todo_wine ok(ref2 > ref1, "Test %u: expected ref2 > ref1, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
|
||||||
|
hr = IDirect3DRMTexture3_InitFromFile(texture3, filename);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
if (hr == D3DRMERR_BADOBJECT)
|
||||||
|
IDirect3DRM_Release(d3drm1);
|
||||||
d3drm_img = IDirect3DRMTexture3_GetImage(texture3);
|
d3drm_img = IDirect3DRMTexture3_GetImage(texture3);
|
||||||
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
if (d3drm_img)
|
if (d3drm_img)
|
||||||
test_bitmap_data(i * 4 + 2, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
test_bitmap_data(i * 7 + 4, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
/* Test whether querying a version 1 texture from version 3 causes a
|
/* Test whether querying a version 1 texture from version 3 causes a
|
||||||
* change in the loading behavior. */
|
* change in the loading behavior. */
|
||||||
hr = IDirect3DRMTexture3_QueryInterface(texture3, &IID_IDirect3DRMTexture, (void **)&texture1);
|
hr = IDirect3DRMTexture3_QueryInterface(texture3, &IID_IDirect3DRMTexture, (void **)&texture1);
|
||||||
|
@ -5629,9 +5685,26 @@ static void test_load_texture(void)
|
||||||
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
|
d3drm_img = IDirect3DRMTexture_GetImage(texture1);
|
||||||
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
if (d3drm_img)
|
if (d3drm_img)
|
||||||
test_bitmap_data(i * 4 + 3, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
test_bitmap_data(i * 7 + 5, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
IDirect3DRMTexture_Release(texture1);
|
IDirect3DRMTexture_Release(texture1);
|
||||||
IDirect3DRMTexture3_Release(texture3);
|
IDirect3DRMTexture3_Release(texture3);
|
||||||
|
ref2 = get_refcount((IUnknown *)d3drm1);
|
||||||
|
ok(ref1 == ref2, "Test %u: expected ref1 == ref2, got ref1 = %u, ref2 = %u.\n", i, ref1, ref2);
|
||||||
|
|
||||||
|
hr = IDirect3DRM3_CreateObject(d3drm3, &CLSID_CDirect3DRMTexture,
|
||||||
|
NULL, &IID_IDirect3DRMTexture3, (void **)&texture3);
|
||||||
|
ok(SUCCEEDED(hr), "Test %u: Failed to create texture, hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture3_InitFromFile(texture3, NULL);
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture3_InitFromFile(texture3, "");
|
||||||
|
todo_wine ok(hr == D3DRMERR_BADOBJECT, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||||
|
hr = IDirect3DRMTexture3_InitFromFile(texture3, filename);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "Test %u: Failed to initialize texture from file, hr %#x.\n", i, hr);
|
||||||
|
d3drm_img = IDirect3DRMTexture3_GetImage(texture3);
|
||||||
|
todo_wine ok(!!d3drm_img, "Test %u: Failed to get image.\n", i);
|
||||||
|
if (d3drm_img)
|
||||||
|
test_bitmap_data(i * 7 + 6, d3drm_img, TRUE, tests[i].w, tests[i].h, tests[i].palettized);
|
||||||
|
IDirect3DRMTexture3_Release(texture3);
|
||||||
|
|
||||||
ret = DeleteFileA(filename);
|
ret = DeleteFileA(filename);
|
||||||
ok(ret, "Test %u: Failed to delete bitmap \"%s\".\n", i, filename);
|
ok(ret, "Test %u: Failed to delete bitmap \"%s\".\n", i, filename);
|
||||||
|
|
Loading…
Reference in New Issue