gameux: Add implementation of IGameStatistics::SetCategoryTitle.
This commit is contained in:
parent
6fa52cd37d
commit
35692e40b1
|
@ -39,6 +39,29 @@ WINE_DEFAULT_DEBUG_CHANNEL(gameux);
|
||||||
#define MAX_VALUE_LENGTH 30
|
#define MAX_VALUE_LENGTH 30
|
||||||
#define MAX_CATEGORIES 10
|
#define MAX_CATEGORIES 10
|
||||||
#define MAX_STATS_PER_CATEGORY 10
|
#define MAX_STATS_PER_CATEGORY 10
|
||||||
|
/*******************************************************************************
|
||||||
|
* Game statistics helper components
|
||||||
|
*/
|
||||||
|
/*******************************************************************************
|
||||||
|
* struct GAMEUX_STATS
|
||||||
|
*
|
||||||
|
* set of structures for containing game's data
|
||||||
|
*/
|
||||||
|
struct GAMEUX_STATS_STAT
|
||||||
|
{
|
||||||
|
WCHAR sName[MAX_NAME_LENGTH+1];
|
||||||
|
WCHAR sValue[MAX_VALUE_LENGTH+1];
|
||||||
|
};
|
||||||
|
struct GAMEUX_STATS_CATEGORY
|
||||||
|
{
|
||||||
|
WCHAR sName[MAX_CATEGORY_LENGTH+1];
|
||||||
|
struct GAMEUX_STATS_STAT stats[MAX_STATS_PER_CATEGORY];
|
||||||
|
};
|
||||||
|
struct GAMEUX_STATS
|
||||||
|
{
|
||||||
|
WCHAR sStatsFile[MAX_PATH];
|
||||||
|
struct GAMEUX_STATS_CATEGORY categories[MAX_CATEGORIES];
|
||||||
|
};
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* IGameStatistics implementation
|
* IGameStatistics implementation
|
||||||
*/
|
*/
|
||||||
|
@ -46,6 +69,7 @@ typedef struct _GameStatisticsImpl
|
||||||
{
|
{
|
||||||
const struct IGameStatisticsVtbl *lpVtbl;
|
const struct IGameStatisticsVtbl *lpVtbl;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
struct GAMEUX_STATS stats;
|
||||||
} GameStatisticsImpl;
|
} GameStatisticsImpl;
|
||||||
|
|
||||||
static inline GameStatisticsImpl *impl_from_IGameStatistics( IGameStatistics *iface )
|
static inline GameStatisticsImpl *impl_from_IGameStatistics( IGameStatistics *iface )
|
||||||
|
@ -177,8 +201,27 @@ static HRESULT WINAPI GameStatisticsImpl_SetCategoryTitle(
|
||||||
WORD categoryIndex,
|
WORD categoryIndex,
|
||||||
LPCWSTR title)
|
LPCWSTR title)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
HRESULT hr = S_OK;
|
||||||
return E_NOTIMPL;
|
DWORD dwLength;
|
||||||
|
GameStatisticsImpl *This = impl_from_IGameStatistics(iface);
|
||||||
|
|
||||||
|
TRACE("(%p, %d, %s)\n", This, categoryIndex, debugstr_w(title));
|
||||||
|
|
||||||
|
if(!title || categoryIndex >= MAX_CATEGORIES)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
dwLength = lstrlenW(title);
|
||||||
|
|
||||||
|
if(dwLength > MAX_CATEGORY_LENGTH)
|
||||||
|
{
|
||||||
|
hr = S_FALSE;
|
||||||
|
dwLength = MAX_CATEGORY_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
lstrcpynW(This->stats.categories[categoryIndex].sName,
|
||||||
|
title, dwLength+1);
|
||||||
|
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI GameStatisticsImpl_GetCategoryTitle(
|
static HRESULT WINAPI GameStatisticsImpl_GetCategoryTitle(
|
||||||
|
|
|
@ -271,10 +271,10 @@ static void test_gamestatisticsmgr( void )
|
||||||
|
|
||||||
/* write sample statistics */
|
/* write sample statistics */
|
||||||
hr = IGameStatistics_SetCategoryTitle(gs, wMaxCategories, NULL);
|
hr = IGameStatistics_SetCategoryTitle(gs, wMaxCategories, NULL);
|
||||||
todo_wine ok(hr==E_INVALIDARG, "setting category title invalid value: 0x%x\n", hr);
|
ok(hr==E_INVALIDARG, "setting category title invalid value: 0x%x\n", hr);
|
||||||
|
|
||||||
hr = IGameStatistics_SetCategoryTitle(gs, wMaxCategories, sCategory0);
|
hr = IGameStatistics_SetCategoryTitle(gs, wMaxCategories, sCategory0);
|
||||||
todo_wine ok(hr==E_INVALIDARG, "setting category title invalid value: 0x%x\n", hr);
|
ok(hr==E_INVALIDARG, "setting category title invalid value: 0x%x\n", hr);
|
||||||
|
|
||||||
/* check what happen if string is too long */
|
/* check what happen if string is too long */
|
||||||
sTooLongString = CoTaskMemAlloc(sizeof(WCHAR)*(uMaxCategoryLength+2));
|
sTooLongString = CoTaskMemAlloc(sizeof(WCHAR)*(uMaxCategoryLength+2));
|
||||||
|
@ -283,12 +283,12 @@ static void test_gamestatisticsmgr( void )
|
||||||
|
|
||||||
/* when string is too long, Windows returns S_FALSE, but saves string (stripped to expected number of characters) */
|
/* when string is too long, Windows returns S_FALSE, but saves string (stripped to expected number of characters) */
|
||||||
hr = IGameStatistics_SetCategoryTitle(gs, 0, sTooLongString);
|
hr = IGameStatistics_SetCategoryTitle(gs, 0, sTooLongString);
|
||||||
todo_wine ok(hr==S_FALSE, "setting category title invalid result: 0x%x\n", hr);
|
ok(hr==S_FALSE, "setting category title invalid result: 0x%x\n", hr);
|
||||||
CoTaskMemFree(sTooLongString);
|
CoTaskMemFree(sTooLongString);
|
||||||
|
|
||||||
todo_wine ok(IGameStatistics_SetCategoryTitle(gs, 0, sCategory0)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory0));
|
ok(IGameStatistics_SetCategoryTitle(gs, 0, sCategory0)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory0));
|
||||||
todo_wine ok(IGameStatistics_SetCategoryTitle(gs, 1, sCategory1)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory1));
|
ok(IGameStatistics_SetCategoryTitle(gs, 1, sCategory1)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory1));
|
||||||
todo_wine ok(IGameStatistics_SetCategoryTitle(gs, 2, sCategory2)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory1));
|
ok(IGameStatistics_SetCategoryTitle(gs, 2, sCategory2)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory1));
|
||||||
|
|
||||||
/* check what happen if any string is NULL */
|
/* check what happen if any string is NULL */
|
||||||
hr = IGameStatistics_SetStatistic(gs, 0, 0, NULL, sValue00);
|
hr = IGameStatistics_SetStatistic(gs, 0, 0, NULL, sValue00);
|
||||||
|
@ -333,7 +333,7 @@ static void test_gamestatisticsmgr( void )
|
||||||
todo_wine ok(_isFileExists(lpStatisticsFile) == TRUE, "statistics file %s does not exists\n", wine_dbgstr_w(lpStatisticsFile));
|
todo_wine ok(_isFileExists(lpStatisticsFile) == TRUE, "statistics file %s does not exists\n", wine_dbgstr_w(lpStatisticsFile));
|
||||||
|
|
||||||
/* this value should not be stored in storage, we need it only to test is it not saved */
|
/* this value should not be stored in storage, we need it only to test is it not saved */
|
||||||
todo_wine ok(IGameStatistics_SetCategoryTitle(gs, 0, sCategory0a)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory0a));
|
ok(IGameStatistics_SetCategoryTitle(gs, 0, sCategory0a)==S_OK, "setting category title failed: %s\n", wine_dbgstr_w(sCategory0a));
|
||||||
|
|
||||||
hr = IGameStatistics_Release(gs);
|
hr = IGameStatistics_Release(gs);
|
||||||
ok(SUCCEEDED(hr), "releasing IGameStatistics returned error: 0x%08x\n", hr);
|
ok(SUCCEEDED(hr), "releasing IGameStatistics returned error: 0x%08x\n", hr);
|
||||||
|
|
Loading…
Reference in New Issue