public void AddMissingColumn_Test_ColumnDidNotExistAndWeDetectedItCorrectly()
        {
            // Create a test database
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.ID));

            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS,
                dbConstants.XML,
                dbConstants.GUID
            }
                          , new object[3] {
                "boo status", "boo xml", "GUID_A"
            });
            _w.output(db.BackupDatabase());
            // add ColumnA to it
            bool result = db.TestAddMissingColumn(dbConstants.table_name, new string[1] {
                "boomer"
            },
                                                  new string[1] {
                "TEXT"
            });

            // check return value is true
            Assert.True(result);
            _w.output(db.BackupDatabase());
            // add ColumnA to it again. This time return value should be false (because we did not need to add the column)
            result = db.TestAddMissingColumn(dbConstants.table_name, new string[1] {
                "boomer"
            },
                                             new string[1] {
                "TEXT"
            });
            Console.WriteLine("Result #2 = " + result);
            Assert.False(result);
        }
        public void GuidDoesExist()
        {
            _w.output("GUIDDOESEXIST");
            bool result = false;

            _w.output("here1");
            // Create a test database
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.ID));

            _w.output("here");
            try {
                db.InsertData(dbConstants.table_name, new string[3] {
                    dbConstants.STATUS,
                    dbConstants.XML,
                    dbConstants.GUID
                }
                              , new object[3] {
                    "boo status", "boo xml", "GUID_A"
                });

                result = db.TestAddMissingColumn(dbConstants.table_name, new string[1] {
                    "boomer"
                },
                                                 new string[1] {
                    "TEXT"
                });
            } catch (Exception ex) {
                _w.output(ex.ToString());
            }
            _w.output("here");
            Assert.True(db.Exists(dbConstants.table_name, dbConstants.GUID, "GUID_A"));
            _w.output(result);
        }
        public void AddingToUniqueColumn()
        {
            // Create a test database
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.GUID));

            Console.WriteLine("First insert should work");
            if (db.Exists("boo", dbConstants.XML, "z"))
            {
            }
            ;

            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS,
                dbConstants.XML,
                dbConstants.GUID
            }
                          , new object[3] {
                "boo status", "boo xml", "GUID_A"
            });
            Console.WriteLine("inserting a unique GUID_B is okay");
            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS,
                dbConstants.XML,
                dbConstants.GUID
            }
                          , new object[3] {
                "boo status", "boo xml", "GUID_B"
            });
            Console.WriteLine("Second insert should fail ");
            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS,
                dbConstants.XML,
                dbConstants.GUID
            }
                          , new object[3] {
                "boo status", "boo xml", "GUID_A"
            });
        }
        public void GuidDoesNotExist()
        {
            // Create a test database
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.ID));

            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS, dbConstants.XML, dbConstants.GUID
            }, new object[3] {
                "boo status", "boo xml", "GUID_A"
            });

            bool result = db.TestAddMissingColumn(dbConstants.table_name, new string[1] {
                "boomer"
            },
                                                  new string[1] {
                "TEXT"
            });

            Console.WriteLine("GuidDoesNotExist");
            Assert.False(db.Exists(dbConstants.table_name, dbConstants.GUID, "GUID_B"));
        }
        public void DropTableTest()
        {
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.ID));

            _w.output("here");
            try {
                db.InsertData(dbConstants.table_name, new string[3] {
                    dbConstants.STATUS,
                    dbConstants.XML,
                    dbConstants.GUID
                }
                              , new object[3] {
                    "boo status", "boo xml", "GUID_A"
                });

                Assert.True(db.TableExists(dbConstants.table_name));
                db.DropTableIfExists(dbConstants.table_name);
                Assert.True(db.TableExists(dbConstants.table_name));
            } catch (Exception) {
            }
        }
        public void AddMissingColumn_ListOfColumnsNotEqualToListOfTypes()
        {
            // Create a test database
            FAKE_SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.ID));

            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS,
                dbConstants.XML,
                dbConstants.GUID
            }
                          , new object[3] {
                "boo status", "boo xml", "GUID_A"
            });

            bool result = db.TestAddMissingColumn(dbConstants.table_name, new string[2] {
                "boomer", "poob"
            },
                                                  new string[1] {
                "TEXT"
            });
        }
        public void CreateFakeDatabaseAndBackup()
        {
            SqlLiteDatabase db = CreateTestDatabase(String.Format("{0}", dbConstants.GUID));

            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS, dbConstants.XML, dbConstants.GUID
            }, new object[3] {
                "boo status", "boo xml", "GUID_A"
            });
            db.InsertData(dbConstants.table_name, new string[3] {
                dbConstants.STATUS, dbConstants.XML, dbConstants.GUID
            }, new object[3] {
                "boo status2", "boo xml2", "GUID_A2"
            });
            db.Dispose();


            db = new FAKE_SqlLiteDatabase(test_database_name);


            try {
                db.DropTableIfExists(dbConstants.table_name + "_b");
            } catch (Exception ex) {
                _w.output(String.Format("Unable to drop table {0}", ex.ToString()));
            }

            db.CreateTableIfDoesNotExist(dbConstants.table_name + "_b", new string[4]
            {
                dbConstants.ID, dbConstants.GUID, dbConstants.XML,
                dbConstants.STATUS
            },
                                         new string[4] {
                "INTEGER",
                "TEXT UNIQUE",
                "LONGTEXT",
                "TEXT"
            }, dbConstants.GUID
                                         );


            db.InsertData(dbConstants.table_name + "_b", new string[3] {
                dbConstants.STATUS, dbConstants.XML, dbConstants.GUID
            }, new object[3] {
                "boo status", "boo xml", "GUID_B"
            });



            db.Dispose();
            db = new FAKE_SqlLiteDatabase(test_database_name);


            try {
                db.DropTableIfExists(dbConstants.table_name + "_c");
            } catch (Exception ex) {
                _w.output(String.Format("Unable to drop table {0}", ex.ToString()));
            }

            db.CreateTableIfDoesNotExist(dbConstants.table_name + "_c", new string[4]
            {
                dbConstants.ID, dbConstants.GUID, dbConstants.XML,
                dbConstants.STATUS
            },
                                         new string[4] {
                "INTEGER",
                "TEXT UNIQUE",
                "LONGTEXT",
                "TEXT"
            }, dbConstants.GUID
                                         );

            db.InsertData(dbConstants.table_name + "_c", new string[3] {
                dbConstants.STATUS, dbConstants.XML, dbConstants.GUID
            }, new object[3] {
                "boo status", "boo xml", "GUID_C"
            });

            // get rid of full text database too
            db.DropTableIfExists("fulltextsearch");

            //not sure how to set this test up. Force File Write? Then test if file exists?
            // or shoudl this return a Stream?
            string result = db.BackupDatabase();

            _w.output(result.Length);
            _w.output(result);

            db.DropTableIfExists(dbConstants.table_name + "_b");
            db.DropTableIfExists(dbConstants.table_name + "_c");
            db.Dispose();
            Assert.AreEqual(526, result.Length);
            //Assert.False (true);
        }
 public void TableDoesExist()
 {
     FAKE_SqlLiteDatabase db = new FAKE_SqlLiteDatabase (test_database_name);
     db.DropTableIfExists(dbConstants.table_name);
     _w.output ("here1");
     Assert.False (db.TableExists (dbConstants.table_name));
     _w.output ("here");
     CreateTestDatabase (String.Format ("{0}", dbConstants.ID));
     _w.output ("here");
     try {
         db.InsertData (dbConstants.table_name, new string[3] {
             dbConstants.STATUS,
             dbConstants.XML,
             dbConstants.GUID
         }
         , new object[3] {"boo status", "boo xml", "GUID_A"});
         Assert.True (db.TableExists (dbConstants.table_name));
     } catch (Exception) {
     }
 }
        public void CreateFakeDatabaseAndBackup()
        {
            SqlLiteDatabase db =CreateTestDatabase(String.Format ("{0}", dbConstants.GUID));
            db.InsertData (dbConstants.table_name, new string[3] {	dbConstants.STATUS,dbConstants.XML,dbConstants.GUID
            }, new object[3] {"boo status", "boo xml", "GUID_A"});
            db.InsertData (dbConstants.table_name, new string[3] {	dbConstants.STATUS,dbConstants.XML,dbConstants.GUID
            }, new object[3] {"boo status2", "boo xml2", "GUID_A2"});
            db.Dispose();

            db = new FAKE_SqlLiteDatabase (test_database_name);

            try {

                db.DropTableIfExists(dbConstants.table_name+"_b");
            } catch (Exception ex) {
                _w.output (String.Format ("Unable to drop table {0}", ex.ToString()));
            }

            db.CreateTableIfDoesNotExist (dbConstants.table_name+"_b", new string[4]
                                          {dbConstants.ID, dbConstants.GUID, dbConstants.XML,
                dbConstants.STATUS},
            new string[4] {
                "INTEGER",
                "TEXT UNIQUE",
                "LONGTEXT",
                "TEXT"
            }, dbConstants.GUID
            );

            db.InsertData (dbConstants.table_name+"_b", new string[3] {	dbConstants.STATUS,dbConstants.XML,dbConstants.GUID
            }, new object[3] {"boo status", "boo xml", "GUID_B"});

            db.Dispose();
            db = new FAKE_SqlLiteDatabase (test_database_name);

            try {

                db.DropTableIfExists(dbConstants.table_name+"_c");
            } catch (Exception ex) {
                _w.output (String.Format ("Unable to drop table {0}", ex.ToString()));
            }

            db.CreateTableIfDoesNotExist (dbConstants.table_name+"_c", new string[4]
                                          {dbConstants.ID, dbConstants.GUID, dbConstants.XML,
                dbConstants.STATUS},
            new string[4] {
                "INTEGER",
                "TEXT UNIQUE",
                "LONGTEXT",
                "TEXT"
            }, dbConstants.GUID
            );

            db.InsertData (dbConstants.table_name+"_c", new string[3] {	dbConstants.STATUS,dbConstants.XML,dbConstants.GUID
            }, new object[3] {"boo status", "boo xml", "GUID_C"});

            // get rid of full text database too
            db.DropTableIfExists("fulltextsearch");

            //not sure how to set this test up. Force File Write? Then test if file exists?
            // or shoudl this return a Stream?
            string result = db.BackupDatabase();
            _w.output(result.Length);
            _w.output(result);

            db.DropTableIfExists(dbConstants.table_name+"_b");
            db.DropTableIfExists(dbConstants.table_name+"_c");
            db.Dispose();
            Assert.AreEqual(526, result.Length);
            //Assert.False (true);
        }