mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 08:14:10 +00:00
msxml3/tests: Add tests of ValidateOnParse property.
This commit is contained in:
parent
3db3e3768b
commit
bb8cc288a6
|
@ -13947,6 +13947,156 @@ static void test_load_with_site(void)
|
|||
free_bstrs();
|
||||
}
|
||||
|
||||
typedef struct _validate_on_parse_test_t
|
||||
{
|
||||
const GUID *guid;
|
||||
const char *clsid;
|
||||
HRESULT hr;
|
||||
} validate_on_parse_test_t;
|
||||
|
||||
static const validate_on_parse_test_t validate_on_parse_tests[] =
|
||||
{
|
||||
{ &CLSID_DOMDocument, "CLSID_DOMDocument" , E_FAIL },
|
||||
{ &CLSID_DOMDocument2, "CLSID_DOMDocument2", E_FAIL },
|
||||
{ &CLSID_DOMDocument26, "CLSID_DOMDocument26", E_FAIL },
|
||||
{ &CLSID_DOMDocument30, "CLSID_DOMDocument30", E_FAIL },
|
||||
{ &CLSID_DOMDocument40, "CLSID_DOMDocument40", S_OK },
|
||||
{ &CLSID_DOMDocument60, "CLSID_DOMDocument60", S_OK },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static void test_validate_on_parse_values(void)
|
||||
{
|
||||
const validate_on_parse_test_t *entry = validate_on_parse_tests;
|
||||
int i = 0;
|
||||
|
||||
while (entry->guid)
|
||||
{
|
||||
IXMLDOMDocument2 *doc, *doc_clone;
|
||||
IXMLDOMNode *node_clone;
|
||||
VARIANT var, var_clone;
|
||||
VARIANT_BOOL b;
|
||||
HRESULT hr;
|
||||
|
||||
i++;
|
||||
if (!is_clsid_supported(entry->guid, &IID_IXMLDOMDocument2))
|
||||
{
|
||||
entry++;
|
||||
continue;
|
||||
}
|
||||
|
||||
hr = CoCreateInstance(entry->guid, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (void **)&doc);
|
||||
ok(hr == S_OK, "%d: got %#lx.\n", i, hr);
|
||||
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 0;
|
||||
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var);
|
||||
ok(hr == entry->hr || broken(hr == E_FAIL) /* win8 */, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_BOOL(&var) == VARIANT_TRUE, "%d: got property value %d.\n", i, V_BOOL(&var));
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(V_VT(&var) == VT_I2, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_I2(&var) == 0, "%d: got property value %d.\n", i, V_I2(&var));
|
||||
if (IsEqualCLSID(entry->guid, &CLSID_DOMDocument40))
|
||||
{
|
||||
win_skip("Skip tests for CLSID_DOMDocument40 on Windows 8.\n");
|
||||
IXMLDOMDocument2_Release(doc);
|
||||
entry++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
b = VARIANT_FALSE;
|
||||
hr = IXMLDOMDocument2_get_validateOnParse(doc, &b);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
ok(b == VARIANT_TRUE, "%d: got property value %d.\n", i, b);
|
||||
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 0;
|
||||
hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ValidateOnParse"), var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 10;
|
||||
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var));
|
||||
}
|
||||
|
||||
V_VT(&var) = VT_BOOL;
|
||||
V_BOOL(&var) = VARIANT_TRUE;
|
||||
hr = IXMLDOMDocument2_setProperty(doc, _bstr_("ValidateOnParse"), var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
b = VARIANT_FALSE;
|
||||
hr = IXMLDOMDocument2_get_validateOnParse(doc, &b);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
ok(b == VARIANT_TRUE, "%d: got property value %d.\n", i, b);
|
||||
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 0;
|
||||
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_BOOL(&var) == VARIANT_TRUE, "%d: got property value %d.\n", i, V_BOOL(&var));
|
||||
}
|
||||
|
||||
b = VARIANT_FALSE;
|
||||
hr = IXMLDOMDocument2_put_validateOnParse(doc, b);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 10;
|
||||
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var));
|
||||
}
|
||||
|
||||
/* Cloned document inherits the property. */
|
||||
hr = IXMLDOMDocument2_cloneNode(doc, VARIANT_TRUE, &node_clone);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
ok(node_clone != NULL, "%d: got node %p.\n", i, node_clone);
|
||||
hr = IXMLDOMNode_QueryInterface(node_clone, &IID_IXMLDOMDocument2, (void **)&doc_clone);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
V_VT(&var) = VT_I2;
|
||||
V_I2(&var) = 10;
|
||||
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("ValidateOnParse"), &var);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var) == VT_BOOL, "%d: got property value type %d.\n", i, V_VT(&var));
|
||||
ok(V_BOOL(&var) == VARIANT_FALSE, "%d: got property value %d.\n", i, V_BOOL(&var));
|
||||
}
|
||||
V_VT(&var_clone) = VT_I2;
|
||||
V_I2(&var_clone) = 10;
|
||||
hr = IXMLDOMDocument2_getProperty(doc_clone, _bstr_("ValidateOnParse"), &var_clone);
|
||||
ok(hr == entry->hr, "%d: got hr %#lx.\n", i, hr);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(V_VT(&var_clone) == V_VT(&var), "%d: got property value type %d.\n", i, V_VT(&var_clone));
|
||||
ok(V_BOOL(&var_clone) == V_BOOL(&var), "%d: got property value %d.\n", i, V_BOOL(&var_clone));
|
||||
}
|
||||
b = VARIANT_TRUE;
|
||||
hr = IXMLDOMDocument2_get_validateOnParse(doc_clone, &b);
|
||||
ok(hr == S_OK, "%d: got hr %#lx.\n", i, hr);
|
||||
ok(b == VARIANT_FALSE, "%d: got property value %d.\n", i, b);
|
||||
IXMLDOMNode_Release(node_clone);
|
||||
IXMLDOMDocument2_Release(doc_clone);
|
||||
|
||||
IXMLDOMDocument2_Release(doc);
|
||||
entry++;
|
||||
}
|
||||
}
|
||||
|
||||
START_TEST(domdoc)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
@ -14033,7 +14183,7 @@ START_TEST(domdoc)
|
|||
test_transformNodeToObject();
|
||||
test_normalize_attribute_values();
|
||||
test_namespaces_as_attributes();
|
||||
|
||||
test_validate_on_parse_values();
|
||||
test_xsltemplate();
|
||||
test_xsltext();
|
||||
|
||||
|
|
Loading…
Reference in a new issue