Skip to content

Commit c08010d

Browse files
committed
Update TestCompilersContainer.cs
1 parent aa22816 commit c08010d

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

QueryBuilder.Tests/Infrastructure/TestCompilersContainer.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ public class TestCompilersContainer
1717
[EngineCodes.SqlServer] = new SqlServerCompiler()
1818
};
1919

20+
public IEnumerable<string> KnownEngineCodes
21+
{
22+
get { return Compilers.Select(s => s.Key); }
23+
}
24+
2025
/// <summary>
2126
/// Returns the compiler instance for the given <param name="engineCode"></param>
2227
/// </summary>
@@ -56,8 +61,25 @@ public SqlResult CompileFor(string engineCode, Query query)
5661
return compiler.Compile(query);
5762
}
5863

64+
public TestSqlResultContainer Compile(IEnumerable<string> engineCodes, Query query)
65+
{
66+
var codes = engineCodes.ToList();
67+
68+
var results = Compilers
69+
.Where(w => codes.Contains(w.Key))
70+
.ToDictionary(k => k.Key, v => v.Value.Compile(query.Clone()));
71+
72+
if (results.Count != codes.Count)
73+
{
74+
var missingCodes = codes.Where(w => Compilers.All(a => a.Key != w));
75+
throw new InvalidOperationException($"Invalid engine codes supplied '{string.Join(", ", missingCodes)}'");
76+
}
77+
78+
return new TestSqlResultContainer(results);
79+
}
80+
5981
/// <summary>
60-
/// Compiles the query with all enabled compilers.
82+
/// Compiles the query for all known compilers
6183
/// </summary>
6284
/// <param name="query"></param>
6385
/// <returns></returns>

0 commit comments

Comments
 (0)