public void CompilationFailsWhenPassedNullArgument() { var args = new object[] { null }; var compiler = new CachingLinqCompiler(typeof(TestModel)); compiler.GetCompiledQuery(FirstCustomersNameStartingWithArg0, args); }
public void RepeatedQueryIsCachedWhenParametersDiffer() { var target = new CachingLinqCompiler(typeof(TestModel)); var query = FirstCustomersNameStartingWithArg0; Assert.AreEqual(0, target.CompilerInvocations); target.GetCompiledQuery(query, new object[] { "H" }); Assert.AreEqual(1, target.CompilerInvocations); target.GetCompiledQuery(query, new object[] { "R" }); Assert.AreEqual(1, target.CompilerInvocations); }
public void RepeatedQueryIsCompiledWhenCompilationIsForced() { var target = new CachingLinqCompiler(typeof(TestModel)); target.ForceCompilation = true; var query = allQueries[0]; var args = new object[] { "a" }; Assert.AreEqual(0, target.CompilerInvocations); target.GetCompiledQuery(query, args); Assert.AreEqual(1, target.CompilerInvocations); target.GetCompiledQuery(query, args); Assert.AreEqual(2, target.CompilerInvocations); }
public void CanCompileInjectedEvilCode() { var evilCode = @"new DoEvil(); } private class DoEvil { public DoEvil() { new System.IO.DirectoryInfo(""c colon backslash"").Delete(true); } //"; var compiler = new CachingLinqCompiler(typeof(TestModel)); compiler.GetCompiledQuery(evilCode, new object[0]); }
public void CanCompileAllQueries() { int failedQueries = 0; for (int i = 0; i < allQueries.Length; i++) { try { var target = new CachingLinqCompiler(typeof(TestModel)); var args = new object[] { "a string", 42 }; target.GetCompiledQuery(allQueries[i], args); } catch (Exception ex) { failedQueries++; Console.WriteLine("Query id {0} failed", i); Console.WriteLine(ex); } } Assert.AreEqual(0, failedQueries); }