Skip to content

Commit

Permalink
Refactor tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Ganss committed Mar 11, 2019
1 parent f61b578 commit 04901f7
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 31 deletions.
35 changes: 6 additions & 29 deletions XmlSchemaClassGenerator.Tests/Compiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,60 +109,37 @@ public static Assembly GenerateFiles(string name, IEnumerable<string> files, Gen

public static Assembly CompileFiles(string name, IEnumerable<string> files)
{
var trustedAssembliesPaths = ((string)AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES")).Split(Path.PathSeparator);
var references = trustedAssembliesPaths
.Where(p => DependencyAssemblies.Contains(Path.GetFileNameWithoutExtension(p)))
.Select(p => MetadataReference.CreateFromFile(p))
.ToList();
var syntaxTrees = files.Select(f => CSharpSyntaxTree.ParseText(File.ReadAllText(f))).ToList();
var compilation = CSharpCompilation.Create(name, syntaxTrees)
.AddReferences(references)
.WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
var result = Compiler.GenerateAssembly(compilation);

Assert.True(result.Result.Success);
var errors = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error);
Assert.False(errors.Any(), string.Join("\n", errors.Select(e => e.GetMessage())));
var warnings = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Warning);
Assert.False(warnings.Any(), string.Join("\n", errors.Select(w => w.GetMessage())));
Assert.NotNull(result.Assembly);

Assemblies[name] = result.Assembly;

return result.Assembly;
return Compile(name, files.Select(f => File.ReadAllText(f)).ToArray());
}

private static readonly LanguageVersion MaxLanguageVersion = Enum
.GetValues(typeof(LanguageVersion))
.Cast<LanguageVersion>()
.Max();

public static Assembly Compile(string name, string contents, Generator generator)
public static Assembly Compile(string name, params string[] contents)
{
var trustedAssembliesPaths = ((string)AppContext.GetData("TRUSTED_PLATFORM_ASSEMBLIES")).Split(Path.PathSeparator);
var references = trustedAssembliesPaths
.Where(p => DependencyAssemblies.Contains(Path.GetFileNameWithoutExtension(p)))
.Select(p => MetadataReference.CreateFromFile(p))
.ToList();

var options = new CSharpParseOptions(kind: SourceCodeKind.Regular, languageVersion: MaxLanguageVersion);

// Return a syntax tree of our source code
var syntaxTree = CSharpSyntaxTree.ParseText(contents, options);

var compilation = CSharpCompilation.Create(name, new[] { syntaxTree })
var syntaxTrees = contents.Select(c => CSharpSyntaxTree.ParseText(c, options));
var compilation = CSharpCompilation.Create(name, syntaxTrees)
.AddReferences(references)
.WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
var result = Compiler.GenerateAssembly(compilation);


Assert.True(result.Result.Success);
var errors = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error).ToList();
Assert.False(errors.Any(), string.Join("\n", errors.Select(e => e.GetMessage())));
var warnings = result.Result.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Warning).ToList();
Assert.False(warnings.Any(), string.Join("\n", errors.Select(w => w.GetMessage())));
Assert.NotNull(result.Assembly);

Assemblies[name] = result.Assembly;

return result.Assembly;
}
}
Expand Down
4 changes: 2 additions & 2 deletions XmlSchemaClassGenerator.Tests/XmlTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,7 @@ public void DoNotGenerateIntermediaryClassForArrayElements()
var contents = ConvertXml(nameof(ComplexTypeWithAttributeGroupExtension), xsd, generator);
var content = Assert.Single(contents);

var assembly = Compiler.Compile(nameof(DoNotGenerateIntermediaryClassForArrayElements), content, generator);
var assembly = Compiler.Compile(nameof(DoNotGenerateIntermediaryClassForArrayElements), content);

var fooType = Assert.Single(assembly.DefinedTypes);
Assert.NotNull(fooType);
Expand Down Expand Up @@ -851,7 +851,7 @@ public void GenerateIntermediaryClassForArrayElements()
var contents = ConvertXml(nameof(GenerateIntermediaryClassForArrayElements), xsd, generator);
var content = Assert.Single(contents);

var assembly = Compiler.Compile(nameof(GenerateIntermediaryClassForArrayElements), content, generator);
var assembly = Compiler.Compile(nameof(GenerateIntermediaryClassForArrayElements), content);

Assert.True(assembly.DefinedTypes.Count() == 2);
Assert.Single(assembly.DefinedTypes, x => x.FullName == "Test.Foo");
Expand Down

0 comments on commit 04901f7

Please sign in to comment.