Mariusz Pluciński : gameux: Add implementation of IGameStatistics::SetStatistic.
Alexandre Julliard
julliard at winehq.org
Mon Sep 27 11:29:42 CDT 2010
Module: wine
Branch: master
Commit: ce28a5f2621e7954241fa5df42d7c77ae47a2c39
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce28a5f2621e7954241fa5df42d7c77ae47a2c39
Author: Mariusz Pluciński <vshader at gmail.com>
Date: Sun Sep 26 15:00:40 2010 +0200
gameux: Add implementation of IGameStatistics::SetStatistic.
---
dlls/gameux/gamestatistics.c | 44 ++++++++++++++++++++++++++++++++++-
dlls/gameux/tests/gamestatistics.c | 26 ++++++++++----------
2 files changed, 55 insertions(+), 15 deletions(-)
diff --git a/dlls/gameux/gamestatistics.c b/dlls/gameux/gamestatistics.c
index 67bfc08..a4c88a4 100644
--- a/dlls/gameux/gamestatistics.c
+++ b/dlls/gameux/gamestatistics.c
@@ -251,8 +251,48 @@ static HRESULT WINAPI GameStatisticsImpl_SetStatistic(
LPCWSTR name,
LPCWSTR value)
{
- FIXME("stub\n");
- return E_NOTIMPL;
+ HRESULT hr = S_OK;
+ DWORD dwNameLen, dwValueLen;
+ GameStatisticsImpl *This = impl_from_IGameStatistics(iface);
+
+ TRACE("(%p, %d, %d, %s, %s)\n", This, categoryIndex, statIndex,
+ debugstr_w(name), debugstr_w(value));
+
+ if(!name)
+ return S_FALSE;
+
+ if(categoryIndex >= MAX_CATEGORIES || statIndex >= MAX_STATS_PER_CATEGORY)
+ return E_INVALIDARG;
+
+ dwNameLen = lstrlenW(name);
+
+ if(dwNameLen > MAX_NAME_LENGTH)
+ {
+ hr = S_FALSE;
+ dwNameLen = MAX_NAME_LENGTH;
+ }
+
+ lstrcpynW(This->stats.categories[categoryIndex].stats[statIndex].sName,
+ name, dwNameLen+1);
+
+ if(value)
+ {
+ dwValueLen = lstrlenW(value);
+
+ if(dwValueLen > MAX_VALUE_LENGTH)
+ {
+ hr = S_FALSE;
+ dwValueLen = MAX_VALUE_LENGTH;
+ }
+
+ lstrcpynW(This->stats.categories[categoryIndex].stats[statIndex].sValue,
+ value, dwValueLen+1);
+ }
+ else
+ /* Windows allows to pass NULL as value */
+ This->stats.categories[categoryIndex].stats[statIndex].sValue[0] = 0;
+
+ return hr;
}
static HRESULT WINAPI GameStatisticsImpl_Save(
diff --git a/dlls/gameux/tests/gamestatistics.c b/dlls/gameux/tests/gamestatistics.c
index e62368a..491aecb 100644
--- a/dlls/gameux/tests/gamestatistics.c
+++ b/dlls/gameux/tests/gamestatistics.c
@@ -292,39 +292,39 @@ static void test_gamestatisticsmgr( void )
/* check what happen if any string is NULL */
hr = IGameStatistics_SetStatistic(gs, 0, 0, NULL, sValue00);
- todo_wine ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
+ ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
hr = IGameStatistics_SetStatistic(gs, 0, 0, sStatistic00, NULL);
- todo_wine ok(hr == S_OK, "setting statistic returned unexpected value: 0x%x)\n", hr);
+ ok(hr == S_OK, "setting statistic returned unexpected value: 0x%x)\n", hr);
/* check what happen if any string is too long */
sTooLongString = CoTaskMemAlloc(sizeof(WCHAR)*(uMaxNameLength+2));
memset(sTooLongString, 'a', sizeof(WCHAR)*(uMaxNameLength+1));
sTooLongString[uMaxNameLength+1]=0;
hr = IGameStatistics_SetStatistic(gs, 0, 0, sTooLongString, sValue00);
- todo_wine ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
+ ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
CoTaskMemFree(sTooLongString);
sTooLongString = CoTaskMemAlloc(sizeof(WCHAR)*(uMaxValueLength+2));
memset(sTooLongString, 'a', sizeof(WCHAR)*(uMaxValueLength+1));
sTooLongString[uMaxValueLength+1]=0;
hr = IGameStatistics_SetStatistic(gs, 0, 0, sStatistic00, sTooLongString);
- todo_wine ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
+ ok(hr == S_FALSE, "setting statistic returned unexpected value: 0x%x)\n", hr);
CoTaskMemFree(sTooLongString);
/* check what happen on too big index of category or statistic */
hr = IGameStatistics_SetStatistic(gs, wMaxCategories, 0, sStatistic00, sValue00);
- todo_wine ok(hr == E_INVALIDARG, "setting statistic returned unexpected value: 0x%x)\n", hr);
+ ok(hr == E_INVALIDARG, "setting statistic returned unexpected value: 0x%x)\n", hr);
hr = IGameStatistics_SetStatistic(gs, 0, wMaxStatsPerCategory, sStatistic00, sValue00);
- todo_wine ok(hr == E_INVALIDARG, "setting statistic returned unexpected value: 0x%x)\n", hr);
-
- todo_wine ok(IGameStatistics_SetStatistic(gs, 0, 0, sStatistic00, sValue00)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic00), wine_dbgstr_w(sValue00));
- todo_wine ok(IGameStatistics_SetStatistic(gs, 0, 1, sStatistic01, sValue01)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic01), wine_dbgstr_w(sValue01));
- todo_wine ok(IGameStatistics_SetStatistic(gs, 1, 0, sStatistic10, sValue10)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic10), wine_dbgstr_w(sValue10));
- todo_wine ok(IGameStatistics_SetStatistic(gs, 1, 1, sStatistic11, sValue11)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic11), wine_dbgstr_w(sValue11));
- todo_wine ok(IGameStatistics_SetStatistic(gs, 2, 0, sStatistic20, sValue20)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic20), wine_dbgstr_w(sValue20));
- todo_wine ok(IGameStatistics_SetStatistic(gs, 2, 1, sStatistic21, sValue21)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic21), wine_dbgstr_w(sValue21));
+ ok(hr == E_INVALIDARG, "setting statistic returned unexpected value: 0x%x)\n", hr);
+
+ ok(IGameStatistics_SetStatistic(gs, 0, 0, sStatistic00, sValue00)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic00), wine_dbgstr_w(sValue00));
+ ok(IGameStatistics_SetStatistic(gs, 0, 1, sStatistic01, sValue01)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic01), wine_dbgstr_w(sValue01));
+ ok(IGameStatistics_SetStatistic(gs, 1, 0, sStatistic10, sValue10)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic10), wine_dbgstr_w(sValue10));
+ ok(IGameStatistics_SetStatistic(gs, 1, 1, sStatistic11, sValue11)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic11), wine_dbgstr_w(sValue11));
+ ok(IGameStatistics_SetStatistic(gs, 2, 0, sStatistic20, sValue20)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic20), wine_dbgstr_w(sValue20));
+ ok(IGameStatistics_SetStatistic(gs, 2, 1, sStatistic21, sValue21)==S_OK, "setting statistic failed: name=%s, value=%s\n", wine_dbgstr_w(sStatistic21), wine_dbgstr_w(sValue21));
ok(_isFileExists(lpStatisticsFile) == FALSE, "statistics file %s already exists\n", wine_dbgstr_w(lpStatisticsFile));
More information about the wine-cvs
mailing list