protected void ParseFile(string fileName, params IModelParser[] additionalParsers)
        {
            string methodName = new StackTrace().GetFrame(1).GetMethod().Name.Replace("_", "-");

            FileInfo file = new FileInfo(fileName);

            Assert.That(file.Exists, Is.True, "File doesn't exist {0}", fileName);

            FileReader          reader = new FileReader(fileName);
            List <IModelParser> list   = new List <IModelParser> {
                new T()
            };

            if (additionalParsers.Length > 0)
            {
                list.AddRange(additionalParsers);
            }
            IDataParser dataParser = new DataParser(reader, list.ToArray());

            dataParser.OnMissingParser = s =>
            {
                Assert.Fail("Unable to Parse: {0}", reader);
                return(false);
            };
            dataParser.Parse();

            Assert.That(dataParser.Results, Is.Not.Empty, "Results should not be empty");
            Assert.That(dataParser.Results[0], Is.TypeOf <ClassModel>(), "Expected a Class Model");

            ClassModel classModel = dataParser.Results[0] as ClassModel;

            Assert.That(classModel, Is.Not.Null, "Class Model not found: {0}", dataParser.Results[0]);
            if (classModel != null)
            {
                Assert.That(file.Name, Is.StringContaining(classModel.Data), "Class name doesn't match the filename");
                Assert.That(classModel.Data, Is.EqualTo(methodName), "Class name doesn't match the method name");
            }
        }
        public void SystemBlockTests()
        {
            IReader reader = new FileReader(@".\Resources\DataDictionary\datadict.rpt");

            IModelParser[] parsers = new IModelParser[] {
                new AccessInformationParser(),
                new DescriptionParser(),
                new DetailsParser(),
                new ModifiedParser(),
                new ModuleParser(),
                new PageHeaderParser(),
                new RecordLengthParser(),
                new RecordParser(),
                new TechnicalInformationParser(),
                new CobolBlockParser(),
            };
            IDataParser dataParser = new DataParser(reader, parsers);

            dataParser.Corrections     = corrections;
            dataParser.OnMissingParser = (line) => {
                throw new InvalidOperationException("No Parser for: " + reader);
            };
            dataParser.Parse();
        }
 public void HeaderSystemTests()
 {
     IReader reader = new FileReader(@".\Resources\DataDictionary\datadict.rpt");
     IModelParser[] parsers = new IModelParser[] {
             new PageHeaderParser(),
             new AccessInformationParser(),
             new DescriptionParser(),
             new DetailsParser(),
             new ModifiedParser(),
             new ModuleParser(),
             new RecordLengthParser(),
             new RecordParser(),
             new TechnicalInformationParser(),
             CobolParser.CobolHierarchy(),
             new IgnoreParser(),
         };
     IDataParser dataParser = new DataParser(reader, parsers);
     dataParser.Corrections = corrections;
     dataParser.OnMissingParser = (line) =>
     {
         throw new InvalidOperationException("No Parser for: " + reader);
     };
     dataParser.Parse();
 }
        public void HierarchySystemTests()
        {
            IReader reader = new FileReader(@".\Resources\DataDictionary\datadict.rpt");

            IModelParser[] parsers = new IModelParser[] {
                new AccessInformationParser(),
                new DescriptionParser(),
                new DetailsParser(),
                new ModifiedParser(),
                new ModuleParser(),
                new PageHeaderParser(),
                new RecordLengthParser(),
                new RecordParser(),
                new TechnicalInformationParser(),
                CobolParser.CobolHierarchy(),
                new IgnoreParser(),
            };
            IDataParser dataParser = new DataParser(reader, parsers);

            dataParser.Corrections     = corrections;
            dataParser.OnMissingParser = (line) =>
            {
                throw new InvalidOperationException("No Parser for: " + reader);
            };
            dataParser.Parse();

            string typename  = GetType().Name;
            string directory = Path.Combine(".", typename);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            foreach (IModel model in dataParser.Results)
            {
                HierarchyModel hiearchyModel = model as HierarchyModel;
                if (hiearchyModel != null)
                {
                    ClassModel classModel = hiearchyModel.Model as ClassModel;
                    if (classModel != null)
                    {
                        ModelXmlFormatter formatter  = new ModelXmlFormatter(model);
                        string            xml        = formatter.Render();
                        string            objectName = classModel.Data;

                        string fileName = directory + @"\" + objectName + ".xml";
                        if (File.Exists(fileName))
                        {
                            File.Delete(fileName);
                        }

                        Assert.That(File.Exists(fileName), Is.False);
                        using (StreamWriter writer = new StreamWriter(fileName))
                        {
                            writer.Write(xml);
                        }
                    }
                }
            }
        }
        public void HierarchySystemTests()
        {
            IReader reader = new FileReader(@".\Resources\DataDictionary\datadict.rpt");
            IModelParser[] parsers = new IModelParser[] {
                    new AccessInformationParser(),
                    new DescriptionParser(),
                    new DetailsParser(),
                    new ModifiedParser(),
                    new ModuleParser(),
                    new PageHeaderParser(),
                    new RecordLengthParser(),
                    new RecordParser(),
                    new TechnicalInformationParser(),
                    CobolParser.CobolHierarchy(),
                    new IgnoreParser(),
                };
            IDataParser dataParser = new DataParser(reader, parsers);
            dataParser.Corrections = corrections;
            dataParser.OnMissingParser = (line) =>
            {
                throw new InvalidOperationException("No Parser for: " + reader);
            };
            dataParser.Parse();

            string typename = GetType().Name;
            string directory = Path.Combine(".", typename);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            foreach (IModel model in dataParser.Results)
            {
                HierarchyModel hiearchyModel = model as HierarchyModel;
                if (hiearchyModel != null)
                {
                    ClassModel classModel = hiearchyModel.Model as ClassModel;
                    if (classModel != null)
                    {
                        ModelXmlFormatter formatter = new ModelXmlFormatter(model);
                        string xml = formatter.Render();
                        string objectName = classModel.Data;

                        string fileName = directory + @"\" + objectName + ".xml";
                        if (File.Exists(fileName))
                        {
                            File.Delete(fileName);
                        }

                        Assert.That(File.Exists(fileName), Is.False);
                        using (StreamWriter writer = new StreamWriter(fileName))
                        {
                            writer.Write(xml);
                        }
                    }
                }
            }
        }