public void FluentInterfaceTest_With_Many()
        {
            int recordsToCreate = 1000;

            using (var ds = new SQLiteDatastore())
            {
                ds.Execute(TestDBBuilder.CREATE_MULTIPROPTABLE);
                ds.BeginTransaction();
                for (int i = 1; i <= recordsToCreate; i++)
                {
                    ds.Execute(string.Format(" INSERT INTO MultiPropTable (IntField, NIntField) VALUES ({0}, {0});\r\n", i));
                }
                ds.CommitTransaction();

                Assert.Equal(recordsToCreate, ds.GetRowCount("MultiPropTable", null));

                StartTimer();
                var result = ds.From <POCOMultiTypeObject>().Limit(5000, 0).Query();
                EndTimer();

                result.Should().NotBeEmpty();
                result.Should().HaveCount(recordsToCreate);

                foreach (DOMultiPropType item in
                         ds.From <DOMultiPropType>().Read())
                {
                    item.FloatField = 1.0F;
                    ds.Update(item);
                }
            }
        }
        public void BackupDatabase_overwrite_openfile_with_inmemory()
        {
            var tempPath = GetTempFilePath(".crz3");

            RegesterFileForCleanUp(tempPath);

            using (var ds = new SQLiteDatastore(tempPath))
            {
                var dbbuilder = new TestDBBuilder();
                ds.CreateDatastore(dbbuilder);

                var orgTableInfo = ds.QueryGeneric("SELECT * FROM Sqlite_Master;").ToArray();
                orgTableInfo.Should().NotBeEmpty();

                ds.From <POCOMultiTypeObject>().Query().Should().BeEmpty();

                using (var newds = new SQLiteDatastore())
                {
                    newds.CreateDatastore(dbbuilder);

                    newds.Insert(new POCOMultiTypeObject()
                    {
                        ID = 1,
                    });

                    newds.From <POCOMultiTypeObject>().Query().Should().NotBeEmpty();

                    newds.BackupDatabase(tempPath);
                }

                ds.From <POCOMultiTypeObject>().Query().Should().NotBeEmpty();
            }
        }
        public void Read_Empty_Table()
        {
            using (var ds = new SQLiteDatastore())
            {
                ds.Execute(TestDBBuilder.CREATE_MULTIPROPTABLE);

                ds.CheckTableExists("MultiPropTable").Should().BeTrue();

                ds.From <POCOMultiTypeObject>().Invoking(x => x.Query()).Should().NotThrow();
            }
        }
        public void QueryRowIDAsPrimaryKeyObject()
        {
            using (var ds = new SQLiteDatastore())
            {
                ds.Execute(RowIDAsPrimaryKey.CREATE_TABLE_COMMAND);

                ds.Insert(new RowIDAsPrimaryKey {
                    StringField = "something"
                });

                var result = ds.From <RowIDAsPrimaryKey>().Query().First();
                result.RowID.Should().Be(1);
            }
        }
        public void Insert()
        {
            using (var ds = new SQLiteDatastore())
            {
                ds.CreateDatastore(new TestDBBuilder());

                var ent = POCOMultiTypeObject.CreateWithNullID();
                ent.ID.Should().BeNull();
                ds.Insert(ent);
                ent.ID.Should().NotBeNull();

                var entAgain = ds.From <POCOMultiTypeObject>().Query().Single();
                ent.Should().BeEquivalentTo(entAgain);
            }
        }
        public void FluentInterfaceTest_Single_Record(bool nulls)
        {
            using (var ds = new SQLiteDatastore())
            {
                ds.Execute(TestDBBuilder.CREATE_MULTIPROPTABLE);

                var poco = POCOMultiTypeObject.CreateWithNullID();
                ds.Insert(poco);

                var result = ds.From <MultiPropTypeWithAliases>().Query()
                             .SingleOrDefault();

                result.Should().NotBeNull();

                poco.Should().BeEquivalentTo(result, config => config.ExcludingMissingMembers());

                result.AliasForStringField.Should().Be(result.StringField);
            }
        }