public void InterfaceIsGenerated() { var connection = Connection(); // make sure that we can create an interface ITest1 i = connection.As <ITest1>(); Assert.IsNotNull(i); // make sure that the wrapper is still a connection DbConnection c = i as DbConnection; Assert.IsNotNull(c); // let's call us some methods i.ExecuteSomething(); i.ExecuteSomethingWithParameters(5, "6"); Assert.AreEqual(9, i.ExecuteSomethingScalar(9)); i.SingleObject().Verify(false); Assert.IsNull(i.SingleObjectWithNoData()); Assert.AreEqual(2, i.QueryValue(9).Count()); ParentTestData.Verify(i.QueryObject(), false); Assert.AreEqual(11, i.ObjectAsParameter(new ParentTestData() { ParentX = 11 })); Assert.AreEqual(11, i.ObjectListAsParameter(new[] { new ParentTestData() { ParentX = 11 } }).First()); var results = i.QueryResults(7); ParentTestData.Verify(results.Set1, false); Assert.AreEqual(7, results.Set2.First()); // let's call them asynchronously i.ExecuteSomethingAsync().Wait(); i.ExecuteSomethingWithParametersAsync(5, "6").Wait(); Assert.AreEqual(9, i.ExecuteSomethingScalarAsync(9).Result); i.SingleObjectAsync().Result.Verify(false); Assert.AreEqual(2, i.QueryValueAsync(9).Result.Count()); ParentTestData.Verify(i.QueryObjectAsync().Result, false); Assert.AreEqual(11, i.ObjectAsParameterAsync(new ParentTestData() { ParentX = 11 }).Result); Assert.AreEqual(11, i.ObjectListAsParameterAsync(new[] { new ParentTestData() { ParentX = 11 } }).Result.First()); results = i.QueryResultsAsync(7).Result; ParentTestData.Verify(results.Set1, false); Assert.AreEqual(7, results.Set2.First()); // inline SQL! Assert.AreEqual("42", i.InlineSql(42)); Assert.AreEqual(99, i.InlineSqlProcOverride(99)); Assert.AreEqual(98, i.InlineSqlWithSchema(98)); Assert.AreEqual(98, connection.As <ITestWithSqlAttribute>().ExecuteSomethingScalar(98)); }