private static Compiler ToCompiler(this IProvider provider) { CompilerType compilerType; if (provider is MySqlDatabaseProvider) { compilerType = CompilerType.MySql; } else if (provider is PostgreSQLDatabaseProvider) { compilerType = CompilerType.Postgres; } else if (provider is FirebirdDbDatabaseProvider) { compilerType = CompilerType.Firebird; } else if (provider is SQLiteDatabaseProvider) { compilerType = CompilerType.SQLite; } else if (provider is OracleDatabaseProvider) { compilerType = CompilerType.Oracle; } else { compilerType = CompilerType.SqlServer; } return(DefaultCompilers.Get(compilerType)); }
private static Compiler GetCompiler(this IDatabase db) { if (DefaultCompilers.TryGetCustom(db.Provider, out var compiler)) { return(compiler); } else { return(db.Provider.ToCompiler()); } }
public void Adding_And_Removing_Custom_Works() { var provider = new MyDatabaseProvider(); DefaultCompilers.TryGetCustom(provider.GetType(), out var compiler).Should().BeFalse(); DefaultCompilers.RegisterFor <MyDatabaseProvider>(new PercentCompiler()); DefaultCompilers.TryGetCustom(provider, out compiler).Should().BeTrue(); compiler.Should().BeOfType <PercentCompiler>(); DefaultCompilers.RegisterFor <MyDatabaseProvider>(null); DefaultCompilers.TryGetCustom(provider.GetType(), out compiler).Should().BeFalse(); }
public void Query_Uses_Custom_Compiler() { try { _mockDb.Setup(m => m.Provider).Returns(new MySqlDatabaseProvider()); DefaultCompilers.RegisterFor <MySqlDatabaseProvider>(new PercentCompiler()); var input = new Query("Foo").Select("Bar"); var output = _mockDb.Object.Query <SomeClass>(input); var expected = "SELECT %%Bar%% FROM %%Foo%%"; _lastSql.Should().BeEquivalentTo(new Sql(expected)); } finally { DefaultCompilers.RegisterFor <MySqlDatabaseProvider>(null); } }
public void Get_For_Custom_Should_Throw() { Action act = () => DefaultCompilers.Get(CompilerType.Custom); act.Should().Throw <ArgumentException>(); }
public void Get_Should_Work_For_Known_Types(CompilerType compilerType, Type compiler) { var output = DefaultCompilers.Get(compilerType); output.Should().BeOfType(compiler); }