System.Xml.Tests.TCXmlSchemaValidatorMisc.XmlSchemaSetCompileAfterRemovingLastSchemaInTheSetIsNotClearingCachedCompiledInformationUsedForValidation_1 C# (CSharp) Method

XmlSchemaSetCompileAfterRemovingLastSchemaInTheSetIsNotClearingCachedCompiledInformationUsedForValidation_1() private method

        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;
        }