Index: html/templates/test-bad-index.html
===================================================================
new file mode 100644
--- /dev/null
+++ b/html/templates/test-bad-index.html
@@ -0,0 +1,25 @@
+
+
+
+ Test for return value of DISP_E_BADINDEX
+
+
+
+
+ Test for return value of DISP_E_BADINDEX
+
+ -
+ Call
UserSettings().TestBadIndex(0)
.
+ Should return normally.
+ Result =
+
+ -
+ Call
UserSettings().TestBadIndex(1)
.
+ Should throw an exception.
+ Result =
+
+
+
+
+
+
Index: html/templates/test-bad-index.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/html/templates/test-bad-index.js
@@ -0,0 +1,43 @@
+function init()
+{
+ var errorElement = document.getElementById("errorMessage");
+ errorElement.innerHTML = "";
+ var settings;
+ try
+ {
+ settings = window.Settings;
+ }
+ catch (e)
+ {
+ errorElement.innerHTML = "Did not instantiate Settings object";
+ return;
+ }
+
+ var result1 = document.getElementById("result1");
+ try
+ {
+ settings.TestBadIndex(0);
+ result1.textContent = "Success";
+ }
+ catch (e)
+ {
+ result1.textContent = "Failure";
+ errorElement.innerHTML = "TestBadIndex(0) threw an exception, which is not the expected behavior";
+ return;
+ }
+
+ var result2 = document.getElementById("result2");
+ try
+ {
+ settings.TestBadIndex(1);
+ result2.textContent = "Failure";
+ errorElement.innerHTML = "TestBadIndex(1) did not throw an exception, which is not the expected behavior";
+ return;
+ }
+ catch (e)
+ {
+ result2.textContent = "Success";
+ indexException = document.getElementById("indexException");
+ indexException.innerHTML = "Index exception: message = " + e.message + ", prototype name = " + e.__proto__.name ;
+ }
+}
Index: src/plugin/PluginUserSettings.cpp
===================================================================
--- a/src/plugin/PluginUserSettings.cpp
+++ b/src/plugin/PluginUserSettings.cpp
@@ -42,6 +42,7 @@
dispatchID_IsAcceptableAdsEnabled,
dispatchID_SetAcceptableAdsEnabled,
dispatchID_IsUpdate,
+ dispatchID_TestBadIndex,
};
/**
@@ -67,6 +68,7 @@
m.emplace(L"IsAcceptableAdsEnabled", dispatchID_IsAcceptableAdsEnabled);
m.emplace(L"SetAcceptableAdsEnabled", dispatchID_SetAcceptableAdsEnabled);
m.emplace(L"IsUpdate", dispatchID_IsUpdate);
+ m.emplace(L"TestBadIndex", dispatchID_TestBadIndex);
}
catch(...)
{
@@ -440,6 +442,23 @@
}
}
break;
+ case dispatchID_TestBadIndex:
+ {
+ if (pDispparams->cArgs != 1)
+ {
+ return DISP_E_BADPARAMCOUNT;
+ }
+ if (pDispparams->rgvarg[0].vt != VT_I4)
+ {
+ return DISP_E_TYPEMISMATCH;
+ }
+ int index = pDispparams->rgvarg[0].lVal;
+ if (index >= 1)
+ {
+ return DISP_E_BADINDEX;
+ }
+ }
+ break;
default:
return DISP_E_MEMBERNOTFOUND;
break;