public void TestForRootLevelIdentityConstraints_Valid_IDREFMissingInvalid_IgnoreIdentityConstraintsIsSetInvalid(String validity)
{
XmlSchemaValidator val;
XmlSchemaInfo info = new XmlSchemaInfo();
string[] keys = new string[] { };
string[] keyrefs = new string[] { };
switch (validity)
{
case "valid":
keys = new string[] { "a1", "a2" };
keyrefs = new string[] { "a1", "a1", "a2" };
break;
case "missing":
keys = new string[] { "a1", "a2" };
keyrefs = new string[] { "a1", "a1", "a3" };
break;
case "ignore":
keys = new string[] { "a1", "a1" };
keyrefs = new string[] { "a2", "a2" };
break;
default:
Assert.True(false);
break;
}
if (validity == "ignore")
val = CreateValidator(XSDFILE_IDENTITY_CONSTRAINS, "", XmlSchemaValidationFlags.ReportValidationWarnings | XmlSchemaValidationFlags.ProcessSchemaLocation | XmlSchemaValidationFlags.ProcessInlineSchema);
else
val = CreateValidator(XSDFILE_IDENTITY_CONSTRAINS);
val.Initialize();
val.ValidateElement("rootIDREFs", "", info);
val.ValidateEndOfAttributes(null);
foreach (string str in keyrefs)
{
val.ValidateElement("foo", "", info);
val.ValidateAttribute("attr", "", StringGetter(str), info);
val.ValidateEndOfAttributes(null);
val.ValidateEndElement(info);
}
val.ValidateEndElement(info);
val.ValidateElement("rootIDs", "", info);
val.ValidateEndOfAttributes(null);
foreach (string str in keys)
{
val.ValidateElement("foo", "", info);
val.ValidateAttribute("attr", "", StringGetter(str), info);
val.ValidateEndOfAttributes(null);
val.ValidateEndElement(info);
}
val.ValidateEndElement(info);
if (validity == "missing")
{
try
{
val.EndValidation();
Assert.True(false);
}
catch (XmlSchemaValidationException)
{
//XmlExceptionVerifier.IsExceptionOk(e, "Sch_UndeclaredId", new string[] { "a3" });
return;
}
}
else
val.EndValidation();
return;
}
}