public void LineInfoProviderChangesDuringValidation()
{
string xmlSrc = "<root><foo>FooText</foo></root>";
XmlSchemaInfo info = new XmlSchemaInfo();
CValidationEventHolder holder = new CValidationEventHolder();
int lineNum = -1;
int linePos = -1;
XmlSchemaValidator val = CreateValidator(CreateSchemaSetFromXml(xmlSrc));
val.ValidationEventHandler += holder.CallbackA;
val.Initialize();
foreach (int i in new int[] { 1111, 1333, 0 })
{
lineNum = i;
linePos = i * 2;
if (i == 0)
val.LineInfoProvider = null;
else
val.LineInfoProvider = new CDummyLineInfo(lineNum, linePos);
val.ValidateElement("root", "", info);
val.ValidateEndOfAttributes(null);
val.ValidateElement("bar", "", info);
Assert.True(holder.IsCalledA);
Assert.Equal(holder.lastException.LineNumber, lineNum);
Assert.Equal(holder.lastException.LinePosition, linePos);
val.SkipToEndElement(info);
val.SkipToEndElement(info);
holder.IsCalledA = false;
}
return;
}