public void XmlSchemaSetCompileAfterRemovingLastSchemaInTheSetIsNotClearingCachedCompiledInformationUsedForValidation_1()
{
string schemaXml = @"
<Schema:schema xmlns:Schema='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:test'
elementFormDefault='qualified'>
<Schema:element name='MyElement' type='Schema:int' />
</Schema:schema>";
string instanceXml = @"<MyElement xmlns='urn:test'>x100</MyElement>";
XmlSchemaSet ss = new XmlSchemaSet(new NameTable());
XmlSchema schema = XmlSchema.Read(new StringReader(schemaXml), null);
ss.Add(schema);
Assert.Equal(ss.Count, 1);
ss.Compile();
Assert.Equal(ss.Count, 1);
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas = ss;
settings.ValidationType = ValidationType.Schema;
using (XmlReader xmlReader = XmlReader.Create(new StringReader(instanceXml), settings))
{
try
{
while (xmlReader.Read()) ;
Assert.True(false); ;
}
catch (XmlSchemaValidationException e)
{
_output.WriteLine("before remove " + e.Message);
}
}
XmlSchema removedSchema = ss.Remove(schema);
Assert.Equal(ss.Count, 0);
ss.Compile();
Assert.Equal(ss.Count, 0);
settings = new XmlReaderSettings();
settings.Schemas = ss;
settings.ValidationType = ValidationType.Schema;
using (XmlReader xmlReader = XmlReader.Create(new StringReader(instanceXml), settings))
{
while (xmlReader.Read()) ;
}
return;
}