示例#1
0
        /// <summary>
        /// This method will test the read based on different settings.
        /// It will call the correct overload and set the state properly.
        /// </summary>
        protected override void Test()
        {
            CError.WriteLine("Testing : " + TestFileName);
            string tempStr = null;

            switch (_overload)
            {
            case ReaderOverload.StreamReader:
                _textReader = new StreamReader(FilePathUtil.getStream(GetFile(TestFileName)));
                CreateReader(ReadThru.TextReader);
                break;

            case ReaderOverload.StringReader:
                StreamReader sr = new StreamReader(FilePathUtil.getStream(GetFile(TestFileName)));
                tempStr = sr.ReadToEnd();
                sr.Dispose();
                _textReader = new StringReader(tempStr);
                CreateReader(ReadThru.TextReader);
                break;

            case ReaderOverload.FileStream:
                _stream = FilePathUtil.getStream(TestFileName);
                CreateReader(ReadThru.Stream);
                break;

            case ReaderOverload.MemoryStream:
                StreamReader sr1 = new StreamReader(FilePathUtil.getStream(GetFile(TestFileName)));
                tempStr = sr1.ReadToEnd();
                sr1.Dispose();
                byte[] bits = _enc.GetBytes(tempStr);
                _stream = new MemoryStream(bits);
                CreateReader(ReadThru.Stream);
                break;

            case ReaderOverload.CoreReader:
                _underlyingSettings.DtdProcessing    = DtdProcessing.Ignore;
                _underlyingSettings.ConformanceLevel = _settings.ConformanceLevel;
                StringReader strr = new StringReader(new StreamReader(FilePathUtil.getStream(GetFile(TestFileName))).ReadToEnd());
                _underlyingReader = ReaderHelper.CreateReader(_overload.ToString(),
                                                              strr,
                                                              false,
                                                              null,
                                                              _underlyingSettings,
                                                              (_settings.ConformanceLevel == ConformanceLevel.Fragment));   //should this be settings or underlyingSettings?
                CError.Compare(_underlyingReader != null, "ReaderHelper returned null Reader");
                CreateReader(ReadThru.XmlReader);
                break;

            case ReaderOverload.CustomReader:
                if (AsyncUtil.IsAsyncEnabled)
                {
                    pstate = TestState.Skip;
                    return;
                }
                if (_settings.ConformanceLevel != ConformanceLevel.Fragment)
                {
                    _underlyingReader = new CustomReader(FilePathUtil.getStream(GetFile(TestFileName)), false);
                }
                else
                {
                    _underlyingReader = new CustomReader(FilePathUtil.getStream(GetFile(TestFileName)), true);
                }

                CError.Compare(_underlyingReader != null, "ReaderHelper returned null Reader");
                CreateReader(ReadThru.XmlReader);
                break;

            default:
                throw new CTestFailedException("Unknown ReaderOverload: " + _overload);
            }

            if (_underlyingReader != null)
            {
                CError.WriteLineIgnore("Type of Reader : " + _underlyingReader.GetType());
            }

            if (pstate == TestState.Pass)
            {
                return;
            }
            CError.Compare(pstate, TestState.CreateSuccess, "Invalid State after Create: " + pstate);

            //By this time the factory Reader is already set up correctly. So we must go Consume it now.
            CError.Compare(pstate != TestState.Pass && pstate == TestState.CreateSuccess, "Invalid state before Consuming Reader: " + pstate);

            //Call TestReader to Consume Reader;
            TestReader();

            if (pstate == TestState.Pass)
            {
                return;
            }
            CError.Compare(pstate != TestState.Pass && pstate == TestState.Consume, "Invalid state after Consuming Reader: " + pstate);
        }
示例#2
0
        public override XmlReader Create(MyDict <string, object> options)
        {
            string tcDesc = (string)options[ReaderFactory.HT_CURDESC];
            string tcVar  = (string)options[ReaderFactory.HT_CURVAR];

            CError.Compare(tcDesc == "charcheckingreader", "Invalid testcase");

            XmlReaderSettings rs         = (XmlReaderSettings)options[ReaderFactory.HT_READERSETTINGS];
            Stream            stream     = (Stream)options[ReaderFactory.HT_STREAM];
            string            filename   = (string)options[ReaderFactory.HT_FILENAME];
            object            readerType = options[ReaderFactory.HT_READERTYPE];
            object            vt         = options[ReaderFactory.HT_VALIDATIONTYPE];
            string            fragment   = (string)options[ReaderFactory.HT_FRAGMENT];
            StringReader      sr         = (StringReader)options[ReaderFactory.HT_STRINGREADER];

            if (rs == null)
            {
                rs = new XmlReaderSettings();
            }

            rs.DtdProcessing   = DtdProcessing.Ignore;
            rs.CheckCharacters = false;

            XmlReaderSettings wrs = new XmlReaderSettings();

            wrs.DtdProcessing    = DtdProcessing.Ignore;
            wrs.CheckCharacters  = true;
            wrs.ConformanceLevel = ConformanceLevel.Auto;

            if (sr != null)
            {
                CError.WriteLine("CharCheckingReader String");
                XmlReader r  = ReaderHelper.Create(sr, rs, string.Empty);
                XmlReader wr = ReaderHelper.Create(r, wrs);
                return(wr);
            }

            if (stream != null)
            {
                CError.WriteLine("CharCheckingReader Stream");
                XmlReader r  = ReaderHelper.Create(stream, rs, filename);
                XmlReader wr = ReaderHelper.Create(r, wrs);
                return(wr);
            }

            if (fragment != null)
            {
                CError.WriteLine("CharCheckingReader Fragment");
                rs.ConformanceLevel = ConformanceLevel.Fragment;
                StringReader tr = new StringReader(fragment);
                XmlReader    r  = ReaderHelper.Create(tr, rs, (string)null);
                XmlReader    wr = ReaderHelper.Create(r, wrs);
                return(wr);
            }

            if (filename != null)
            {
                CError.WriteLine("CharCheckingReader Filename");
                Stream    fs = FilePathUtil.getStream(filename);
                XmlReader r  = ReaderHelper.Create(fs, rs, filename);
                XmlReader wr = ReaderHelper.Create(r, wrs);
                return(wr);
            }
            return(null);
        }
示例#3
0
 public Stream GetStream()
 {
     return(FilePathUtil.getStream(_sampleFileName));
 }
示例#4
0
        public override XmlReader Create(MyDict <string, object> options)
        {
            string tcDesc = (string)options[ReaderFactory.HT_CURDESC];
            string tcVar  = (string)options[ReaderFactory.HT_CURVAR];

            CError.Compare(tcDesc == "subtreereader", "Invalid testcase");

            XmlReaderSettings rs         = (XmlReaderSettings)options[ReaderFactory.HT_READERSETTINGS];
            Stream            stream     = (Stream)options[ReaderFactory.HT_STREAM];
            string            filename   = (string)options[ReaderFactory.HT_FILENAME];
            object            readerType = options[ReaderFactory.HT_READERTYPE];
            object            vt         = options[ReaderFactory.HT_VALIDATIONTYPE];
            string            fragment   = (string)options[ReaderFactory.HT_FRAGMENT];
            StringReader      sr         = (StringReader)options[ReaderFactory.HT_STRINGREADER];

            if (rs == null)
            {
                rs = new XmlReaderSettings();
            }

            rs.DtdProcessing = DtdProcessing.Ignore;
            if (sr != null)
            {
                CError.WriteLine("SubtreeReader String");

                XmlReader r = ReaderHelper.Create(sr, rs, string.Empty);
                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        break;
                    }
                }
                XmlReader wr = r.ReadSubtree();
                return(wr);
            }

            if (stream != null)
            {
                CError.WriteLine("SubtreeReader Stream");

                XmlReader r = ReaderHelper.Create(stream, rs, filename);
                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        break;
                    }
                }
                XmlReader wr = r.ReadSubtree();
                return(wr);
            }

            if (fragment != null)
            {
                CError.WriteLine("SubtreeReader Fragment");
                rs.ConformanceLevel = ConformanceLevel.Fragment;
                StringReader tr = new StringReader(fragment);

                XmlReader r = ReaderHelper.Create(tr, rs, (string)null);
                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        break;
                    }
                }
                XmlReader wr = r.ReadSubtree();
                return(wr);
            }

            if (filename != null)
            {
                CError.WriteLine("SubtreeReader Filename");

                Stream    fs = FilePathUtil.getStream(filename);
                XmlReader r  = ReaderHelper.Create(fs, rs, filename);
                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        break;
                    }
                }
                XmlReader wr = r.ReadSubtree();
                return(wr);
            }

            throw new CTestFailedException("SubtreeReader not created");
        }