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