Example #1
0
        public virtual async Task Data_InsertAutoIncrementRowAndSelectLastId()
        {
            using (var table = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
            {
                using (var transaction = await DataProvider.CreateTransactionAsync())
                {
                    await transaction.ExecuteNonQueryAsync(
                        QueryExpression.Insert(DataTestHelpers.AUTOINC_TABLE_NAME, new[] { "Data" }, new object[] { 1 })
                        );

                    using (var queryResult = await transaction.ExecuteReaderAsync(
                               QueryExpression.Select(new[] { QueryExpression.LastInsertIdFunction() })
                               ))
                    {
                        Assert.IsTrue(queryResult.HasRows);
                        Assert.IsTrue(await queryResult.ReadAsync());
                        Assert.AreEqual(1, queryResult.GetInt32(0));
                    }

                    await transaction.ExecuteNonQueryAsync(
                        QueryExpression.Insert(DataTestHelpers.AUTOINC_TABLE_NAME, new[] { "Data" }, new object[] { 1 })
                        );

                    using (var queryResult = await transaction.ExecuteReaderAsync(
                               QueryExpression.Select(new[] { QueryExpression.LastInsertIdFunction() }, QueryExpression.Table(DataTestHelpers.AUTOINC_TABLE_NAME))
                               ))
                    {
                        Assert.IsTrue(queryResult.HasRows);
                        Assert.IsTrue(await queryResult.ReadAsync());
                        Assert.AreEqual(2, queryResult.GetInt32(0));
                    }
                }
            }
        }
        public virtual async Task Functions_CountDistinct()
        {
            using (var tempTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
            {
                await DataProvider.ExecuteNonQueryAsync(QueryExpression.Insert(
                                                            tempTable.TableName,
                                                            new[] { "Data" },
                                                            new object[] { 10 },
                                                            new object[] { 10 },
                                                            new object[] { 15 },
                                                            new object[] { 20 }
                                                            ));


                using (var queryResult = await DataProvider.ExecuteReaderAsync(
                           QueryExpression.Select(
                               new[] { QueryExpression.CountFunction(
                                           QueryExpression.Distinct(QueryExpression.Column("Data"))
                                           ) },
                               from: QueryExpression.Table(tempTable.TableName)
                               )))
                {
                    Assert.IsTrue(queryResult.HasRows);
                    Assert.IsTrue(await queryResult.ReadAsync());
                    Assert.AreEqual(3, queryResult.GetInt32(0));
                }
            }
        }
 public virtual async Task Crud_Update()
 {
     using (var tempTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
         using (var queryResult = await DataProvider.ExecuteReaderAsync(
                    new CompositeQueryExpression(
                        QueryExpression.Insert(
                            tempTable.TableName,
                            new[] { "Data" },
                            new object[] { 1 }
                            ),
                        QueryExpression.Update(
                            QueryExpression.Table(tempTable.TableName),
                            QueryExpression.Compare(QueryExpression.Column("Id"), ComparisonOperator.AreEqual, QueryExpression.Value(1)),
                            QueryExpression.Assign(QueryExpression.Column("Data"), QueryExpression.Value(5))
                            ),
                        QueryExpression.Select(
                            new[] { QueryExpression.Column("Data") },
                            from: QueryExpression.Table(tempTable.TableName),
                            where : QueryExpression.Compare(QueryExpression.Column("Id"), ComparisonOperator.AreEqual, QueryExpression.Value(1))
                            )
                        )))
         {
             Assert.IsTrue(queryResult.HasRows);
             Assert.IsTrue(await queryResult.ReadAsync());
             Assert.AreEqual(5, queryResult.GetInt32(0));
         }
 }
Example #4
0
 public virtual async Task Data_InsertAutoIncrementRow()
 {
     using (var table = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
     {
         await DataProvider.ExecuteNonQueryAsync(
             QueryExpression.Insert(DataTestHelpers.AUTOINC_TABLE_NAME, new[] { "Data" }, new object[] { 1 })
             );
     }
 }
        protected virtual async Task <TemporaryTestTable> Select_CreatePopulatedSelectTable()
        {
            var ret = await DataTestHelpers.CreateAutoIncrementTable(DataProvider);

            await DataProvider.ExecuteNonQueryAsync(
                QueryExpression.Insert(
                    ret.TableName,
                    new[] { "Data" },
                    new object[] { 1 },
                    new object[] { 1 },
                    new object[] { 2 },
                    new object[] { 2 },
                    new object[] { 3 },
                    new object[] { 3 }
                    )
                );

            return(ret);
        }
Example #6
0
        protected virtual async Task Data_TestStoreDataType <T>(SqlDataType dataType, T value)
        {
            using (var dataTable = await DataTestHelpers.CreateDataTable(dataType, DataProvider))
            {
                await DataProvider.ExecuteNonQueryAsync(QueryExpression.Insert(
                                                            dataTable.TableName, new[] { "Data" }, new object[] { value }
                                                            ));

                using (var queryResult = await DataProvider.ExecuteReaderAsync(QueryExpression.Select(
                                                                                   new[] { QueryExpression.All() },
                                                                                   QueryExpression.Table(dataTable.TableName)
                                                                                   )))
                {
                    Assert.IsTrue(queryResult.HasRows);
                    Assert.IsTrue(await queryResult.ReadAsync());
                    var retrievedValue = DataTestHelpers.ReadFromResult <T>(queryResult, 0);
                    Assert.AreEqual(value, retrievedValue);
                }
            }
        }
 public virtual async Task Crud_Delete()
 {
     using (var tempTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
         using (var queryResult = await DataProvider.ExecuteReaderAsync(
                    QueryExpression.Transaction(
                        QueryExpression.Insert(
                            tempTable.TableName,
                            new[] { "Data" },
                            new object[] { 1 }
                            ),
                        QueryExpression.Delete(
                            QueryExpression.Table(tempTable.TableName),
                            QueryExpression.Compare(QueryExpression.Column("Id"), ComparisonOperator.AreEqual, QueryExpression.Value(1))
                            ),
                        QueryExpression.Select(
                            new[] { QueryExpression.Column("Data") },
                            from: QueryExpression.Table(tempTable.TableName),
                            where : QueryExpression.Compare(QueryExpression.Column("Id"), ComparisonOperator.AreEqual, QueryExpression.Value(1))
                            )
                        )))
         {
             Assert.IsFalse(queryResult.HasRows);
         }
 }
        public virtual async Task Crud_InsertFailsWithMissingNonNullable()
        {
            var exceptionCaught = false;

            using (var tempTable = await DataTestHelpers.CreateDataTable(SqlDataType.Int(), DataProvider))
            {
                try
                {
                    await DataProvider.ExecuteNonQueryAsync(
                        QueryExpression.Insert(
                            tempTable.TableName,
                            new[] { "Data" },
                            new object[] { null },
                            new object[] { null }
                            )
                        );
                }
                catch (Exception)
                {
                    exceptionCaught = true;
                }
                Assert.IsTrue(exceptionCaught);
            }
        }
        public virtual async Task Transactions_Rollback()
        {
            using (var testTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider))
            {
                using (var transaction = await DataProvider.CreateTransactionAsync())
                {
                    await transaction.ExecuteNonQueryAsync(QueryExpression.Insert(
                                                               DataTestHelpers.AUTOINC_TABLE_NAME,
                                                               new[] { "Data" },
                                                               new object[] { 10 }
                                                               ));

                    transaction.Rollback();
                }

                using (var queryResult = await DataProvider.ExecuteReaderAsync(QueryExpression.Select(
                                                                                   new[] { QueryExpression.All() },
                                                                                   QueryExpression.Table(DataTestHelpers.AUTOINC_TABLE_NAME)
                                                                                   )))
                {
                    Assert.IsFalse(queryResult.HasRows);
                }
            }
        }