Exemplo n.º 1
0
        private bool Test(int index)
        {
            bool           result            = false;
            string         inputFileName     = string.Format(@"..\..\InputFiles\xsd\Xsd{0:00}.Hello.xsd", index);
            string         expectedFileName  = string.Format(@"..\..\ExpectedFiles\soal\Xsd{0:00}.soal", index);
            string         outputFileName    = string.Format(@"..\..\OutputFiles\soal\Xsd{0:00}.Hello.soal", index);
            string         outputLogFileName = string.Format(@"..\..\OutputFiles\soal\Xsd{0:00}.Hello.log", index);
            string         outputDirectory   = string.Format(@"..\..\OutputFiles\soal", index);
            DiagnosticBag  diagnostics       = new DiagnosticBag();
            ImmutableModel model             = SoalImporter.Import(inputFileName, diagnostics);

            using (StreamWriter writer = new StreamWriter(outputLogFileName))
            {
                foreach (var msg in diagnostics.AsEnumerable())
                {
                    writer.WriteLine(msg);
                }
            }
            Assert.IsFalse(diagnostics.HasAnyErrors());
            Directory.CreateDirectory(outputDirectory);
            SoalPrinter printer    = new SoalPrinter(model.Symbols);
            string      outputSoal = printer.Generate();

            File.WriteAllText(outputFileName, outputSoal);
            string expectedSoal = null;

            using (StreamReader reader = new StreamReader(expectedFileName))
            {
                expectedSoal = reader.ReadToEnd();
            }
            Assert.AreEqual(expectedSoal, outputSoal);
            return(result);
        }
Exemplo n.º 2
0
        private bool Test(int index)
        {
            bool   result            = false;
            string inputFileName     = string.Format(@"..\..\InputFiles\wsdl\Wsdl{0:00}.Hello.wsdl", index);
            string expectedFileName  = string.Format(@"..\..\ExpectedFiles\soal\Wsdl{0:00}.soal", index);
            string outputFileName    = string.Format(@"..\..\OutputFiles\soal\Wsdl{0:00}.Hello.soal", index);
            string outputLogFileName = string.Format(@"..\..\OutputFiles\soal\Wsdl{0:00}.Hello.log", index);
            string outputDirectory   = string.Format(@"..\..\OutputFiles\soal", index);

            Directory.CreateDirectory(outputDirectory);

            DiagnosticBag  diagnostics = new DiagnosticBag();
            ImmutableModel model       = SoalImporter.Import(inputFileName, diagnostics);

            using (StreamWriter writer = new StreamWriter(outputLogFileName))
            {
                foreach (var msg in diagnostics.AsEnumerable())
                {
                    writer.WriteLine(msg);
                }
            }
            Assert.IsFalse(diagnostics.HasAnyErrors());
            Directory.CreateDirectory(outputDirectory);
            SoalPrinter printer    = new SoalPrinter(model.Symbols);
            string      outputSoal = printer.Generate();

            File.WriteAllText(outputFileName, outputSoal);
            string expectedSoal = null;

            using (StreamReader reader = new StreamReader(expectedFileName))
            {
                expectedSoal = reader.ReadToEnd();
            }
            int firstDiff = -1;
            int line      = 1;
            int column    = 1;
            int max       = Math.Max(expectedSoal.Length, outputSoal.Length);

            for (int i = 0; i < max; i++)
            {
                if (expectedSoal[i] != outputSoal[i])
                {
                    firstDiff = i;
                    break;
                }
                ++column;
                if (expectedSoal[i] == '\n')
                {
                    ++line;
                    column = 1;
                }
            }
            Assert.AreEqual(expectedSoal, outputSoal);
            return(result);
        }
Exemplo n.º 3
0
 private bool Test(int index)
 {
     bool result = false;
     string inputFileName = string.Format(@"..\..\InputFiles\wsdl\Wsdl{0:00}.Hello.wsdl", index);
     string expectedFileName = string.Format(@"..\..\ExpectedFiles\soal\Wsdl{0:00}.Hello.soal", index);
     string outputFileName = string.Format(@"..\..\OutputFiles\soal\Wsdl{0:00}.Hello.soal", index);
     string outputLogFileName = string.Format(@"..\..\OutputFiles\soal\Wsdl{0:00}.Hello.log", index);
     string outputDirectory = string.Format(@"..\..\OutputFiles\soal", index);
     Model model = new Model();
     using (ModelContextScope scope = new ModelContextScope(model))
     using (ModelCompilerContextScope compilerScope = new ModelCompilerContextScope(new DefaultModelCompiler()))
     {
         SoalImporter.Import(inputFileName);
         using (StreamWriter writer = new StreamWriter(outputLogFileName))
         {
             foreach (var msg in ModelCompilerContext.Current.Diagnostics.GetMessages(true))
             {
                 writer.WriteLine(msg);
             }
         }
         Assert.IsFalse(ModelCompilerContext.Current.Diagnostics.HasErrors());
         Directory.CreateDirectory(outputDirectory);
         string outputSoal = null;
         SoalPrinter printer = new SoalPrinter(model.Instances);
         using (StreamWriter writer = new StreamWriter(outputFileName))
         {
             outputSoal = printer.Generate();
             writer.WriteLine(outputSoal);
         }
         string expectedSoal = null;
         using (StreamReader reader = new StreamReader(expectedFileName))
         {
             expectedSoal = reader.ReadToEnd();
         }
         Assert.AreEqual(expectedSoal, outputSoal);
         return result;
     }
 }
Exemplo n.º 4
0
 static void Main(string[] args)
 {
     try
     {
         string fileName = null;
         string outputDirectory = null;
         //bool separateXsdWsdl = false;
         //bool singleFileWsdl = false;
         for (int i = 0; i < args.Length; i++)
         {
             if (args[i].StartsWith("-"))
             {
                 if (i + 1 < args.Length)
                 {
                     if (args[i] == "-o")
                     {
                         outputDirectory = args[++i];
                     }
                     else
                     {
                         Console.WriteLine("Unknown option: '"+args[i]+"'");
                     }
                 }
                 else
                 {
                     Console.WriteLine("Unknown option: '" + args[i] + "'");
                 }
             }
             else
             {
                 fileName = args[i];
             }
         }
         if (fileName == null)
         {
             Console.WriteLine("Usage:");
             Console.WriteLine("  Soal.exe [options] [input.soal]");
             Console.WriteLine("Options:");
             Console.WriteLine("  -o [dir]: output directory");;
             return;
         }
         if (outputDirectory == null)
         {
             outputDirectory = Directory.GetCurrentDirectory();
         }
         if (!File.Exists(fileName))
         {
             Console.WriteLine("Could not find file: "+fileName);
             return;
         }
         //if (singleFileWsdl && separateXsdWsdl)
         //{
         //    Console.WriteLine("Warning: conflicting options '-separateXsdWsdl' and '-singleFileWsdl'. '-singleFileWsdl' will be used.");
         //}
         using (StreamReader reader = new StreamReader(fileName))
         {
             string source = reader.ReadToEnd();
             SpringCompiler compiler = new SpringCompiler(source, Path.GetFileName(fileName));
             compiler.Compile();
             if (!compiler.Diagnostics.HasErrors())
             {
                 Model model = compiler.Model;
                 SpringGenerator generator = new SpringGenerator(compiler.Model, compiler.Diagnostics, compiler.FileName);
                 //generator.SeparateXsdWsdl = separateXsdWsdl;
                 //generator.SingleFileWsdl = singleFileWsdl;
                 generator.OutputDirectory = outputDirectory;
                 generator.Generate();
                 SoalPrinter printer = new SoalPrinter(compiler.Model.Instances);
                 using (StreamWriter writer = new StreamWriter(fileName+"0"))
                 {
                     writer.WriteLine(printer.Generate());
                 }
             }
             foreach (var msg in compiler.Diagnostics.GetMessages(true))
             {
                 Console.WriteLine(msg);
             }
         }
     }
     catch(System.Exception ex)
     {
         Console.WriteLine(ex);
     }
 }
Exemplo n.º 5
0
 static void Main(string[] args)
 {
     try
     {
         string inputFileName  = null;
         string outputFileName = null;
         for (int i = 0; i < args.Length; i++)
         {
             if (args[i].StartsWith("-"))
             {
                 if (i + 1 < args.Length)
                 {
                     if (args[i] == "-o")
                     {
                         outputFileName = args[++i];
                     }
                     else
                     {
                         Console.WriteLine("Unknown option: '" + args[i] + "'");
                     }
                 }
                 else
                 {
                     Console.WriteLine("Unknown option: '" + args[i] + "'");
                 }
             }
             else
             {
                 inputFileName = args[i];
             }
         }
         if (inputFileName == null)
         {
             Console.WriteLine("Usage:");
             Console.WriteLine("  SoalImport.exe [options] [input.wsdl or input.xsd]");
             Console.WriteLine("Options:");
             Console.WriteLine("  -o [output.soal]: output SOAL file");
             return;
         }
         if (outputFileName == null)
         {
             outputFileName = Path.ChangeExtension(inputFileName, ".soal");
         }
         if (!File.Exists(inputFileName))
         {
             Console.WriteLine("Could not find file: " + inputFileName);
             return;
         }
         DiagnosticBag  importDiagnostics = new DiagnosticBag();
         ImmutableModel model             = SoalImporter.Import(inputFileName, importDiagnostics);
         foreach (var msg in importDiagnostics.AsEnumerable())
         {
             Console.WriteLine(msg);
         }
         //if (!ModelCompilerContext.Current.Diagnostics.HasErrors())
         {
             SoalPrinter printer = new SoalPrinter(model.Symbols);
             using (StreamWriter writer = new StreamWriter(outputFileName))
             {
                 writer.WriteLine(printer.Generate());
             }
         }
     }
     catch (System.Exception ex)
     {
         Console.WriteLine(ex);
     }
 }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            string fileName        = null;
            string outputDirectory = null;
            bool   separateXsdWsdl = false;
            bool   singleFileWsdl  = false;

            for (int i = 0; i < args.Length; i++)
            {
                if (args[i].StartsWith("-"))
                {
                    if (args[i] == "-separateXsdWsdl")
                    {
                        separateXsdWsdl = true;
                    }
                    else if (args[i] == "-singleFileWsdl")
                    {
                        singleFileWsdl = true;
                    }
                    else if (i + 1 < args.Length)
                    {
                        if (args[i] == "-o")
                        {
                            outputDirectory = args[++i];
                        }
                        else
                        {
                            Console.WriteLine("Unknown option: '" + args[i] + "'");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Unknown option: '" + args[i] + "'");
                    }
                }
                else
                {
                    fileName = args[i];
                }
            }
            if (fileName == null)
            {
                Console.WriteLine("Usage:");
                Console.WriteLine("  Soal.exe [options] [input.soal]");
                Console.WriteLine("Options:");
                Console.WriteLine("  -o [dir]: output directory");
                Console.WriteLine("  -separateXsdWsdl: separate XSD and WSDL files into different directories");
                Console.WriteLine("  -singleFileWsdl: include XSD code into the WSDL");
                return;
            }
            if (outputDirectory == null)
            {
                outputDirectory = Directory.GetCurrentDirectory();
            }
            if (!File.Exists(fileName))
            {
                Console.WriteLine("Could not find file: " + fileName);
                return;
            }
            if (singleFileWsdl && separateXsdWsdl)
            {
                Console.WriteLine("Warning: conflicting options '-separateXsdWsdl' and '-singleFileWsdl'. '-singleFileWsdl' will be used.");
            }
            string source;

            using (StreamReader reader = new StreamReader(fileName))
            {
                source = reader.ReadToEnd();
            }
            SoalSyntaxTree         syntaxTree    = SoalSyntaxTree.ParseText(source);
            ModelReference         soalReference = ModelReference.CreateFromModel(SoalInstance.Model);
            BinderFlags            binderFlags   = BinderFlags.IgnoreAccessibility;
            SoalCompilationOptions options       = new SoalCompilationOptions(SoalLanguage.Instance, OutputKind.NetModule, topLevelBinderFlags: binderFlags, concurrentBuild: false);
            SoalCompilation        compilation   = SoalCompilation.Create("SoalTest").AddReferences(soalReference).AddSyntaxTrees(syntaxTree).WithOptions(options);

            compilation.ForceComplete();
            ImmutableModel model = compilation.Model;
            DiagnosticBag  generatorDiagnostics = new DiagnosticBag();

            if (!compilation.GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error))
            {
                SoalGenerator generator = new SoalGenerator(model, compilation.BuildModelObjectToSymbolMap(), outputDirectory, generatorDiagnostics, fileName);
                generator.SeparateXsdWsdl = separateXsdWsdl;
                generator.SingleFileWsdl  = singleFileWsdl;
                generator.Generate();
                SoalPrinter printer = new SoalPrinter(model.Symbols);
                using (StreamWriter writer = new StreamWriter(fileName + "0"))
                {
                    writer.WriteLine(printer.Generate());
                }
            }
            DiagnosticFormatter formatter = new DiagnosticFormatter();

            foreach (var diagnostic in compilation.GetDiagnostics())
            {
                string msg = formatter.Format(diagnostic);
                Console.WriteLine(msg);
            }
            foreach (var diagnostic in generatorDiagnostics.AsEnumerable())
            {
                string msg = formatter.Format(diagnostic);
                Console.WriteLine(msg);
            }
        }
Exemplo n.º 7
0
 static void Main(string[] args)
 {
     try
     {
         string inputFileName = null;
         string outputFileName = null;
         for (int i = 0; i < args.Length; i++)
         {
             if (args[i].StartsWith("-"))
             {
                 if (i + 1 < args.Length)
                 {
                     if (args[i] == "-o")
                     {
                         outputFileName = args[++i];
                     }
                     else
                     {
                         Console.WriteLine("Unknown option: '" + args[i] + "'");
                     }
                 }
                 else
                 {
                     Console.WriteLine("Unknown option: '" + args[i] + "'");
                 }
             }
             else
             {
                 inputFileName = args[i];
             }
         }
         if (inputFileName == null)
         {
             Console.WriteLine("Usage:");
             Console.WriteLine("  SoalImport.exe [options] [input.wsdl or input.xsd]");
             Console.WriteLine("Options:");
             Console.WriteLine("  -o [output.soal]: output SOAL file");
             return;
         }
         if (outputFileName == null)
         {
             outputFileName = Path.ChangeExtension(inputFileName, ".soal");
         }
         if (!File.Exists(inputFileName))
         {
             Console.WriteLine("Could not find file: " + inputFileName);
             return;
         }
         Model model = new Model();
         using (ModelContextScope scope = new ModelContextScope(model))
         {
             SoalImporter.Import(inputFileName);
             foreach (var msg in ModelCompilerContext.Current.Diagnostics.GetMessages(true))
             {
                 Console.WriteLine(msg);
             }
             //if (!ModelCompilerContext.Current.Diagnostics.HasErrors())
             {
                 SoalPrinter printer = new SoalPrinter(model.Instances);
                 using (StreamWriter writer = new StreamWriter(outputFileName))
                 {
                     writer.WriteLine(printer.Generate());
                 }
             }
         }
     }
     catch (System.Exception ex)
     {
         Console.WriteLine(ex);
     }
 }