public void dropSecurityProfile()
        {
            string secProfileName = "SECURITY";

            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.createSecurityProfile("SECURITY");
            db.addUser("Juan", "123456", "SECURITY");

            db.dropSecurityProfile(secProfileName);

            Assert.IsFalse(db.SecProfiles.ContainsKey(secProfileName));

            Dictionary <string, User> .KeyCollection users = db.Users.Keys;

            int i = 0;

            foreach (string user in users)
            {
                User us = db.Users[user];
                if (!us.SecurityProfiles.Contains(secProfileName))
                {
                    Assert.IsFalse(us.SecurityProfiles.Contains(secProfileName));
                }
            }
        }
        public void writteloadUsers()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            if (db.Users.ContainsKey("ane") && db.Users.ContainsKey("yeray"))
            {
                User user1 = db.Users["ane"];
                User user2 = db.Users["yeray"];

                if (user1.Password.Equals("123") && user2.Password.Equals("321"))
                {
                    if (user1.SecurityProfiles.Contains("profile1") && user2.SecurityProfiles.Contains("profile2"))
                    {
                        Assert.IsTrue(true);
                    }
                    else
                    {
                        Assert.IsTrue(false);
                    }
                }
                else
                {
                    Assert.IsTrue(false);
                }
            }
            else
            {
                Assert.IsTrue(false);
            }
        }
        public void writeloadSecurity()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();

            if (db.SecProfiles.ContainsKey("profile1") && db.SecProfiles.ContainsKey("profile2"))
            {
                SecurityProfile sec1 = db.SecProfiles["profile1"];
                SecurityProfile sec2 = db.SecProfiles["profile2"];

                if (sec1.Privileges.ContainsKey("table") && sec2.Privileges.ContainsKey("table2"))
                {
                    if (sec1.Privileges["table"].Contains(Privilege.SELECT) && sec1.Privileges["table"].Contains(Privilege.INSERT) && sec2.Privileges["table2"].Contains(Privilege.DELETE))
                    {
                        Assert.IsTrue(true);
                    }
                }
                else
                {
                    Assert.IsTrue(false);
                }
            }
            else
            {
                Assert.IsTrue(false);
            }
        }
        public void delete()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.deletefile("BD");

            Assert.IsFalse(File.Exists("BD"));
        }
        public void dropTable()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.dropTable("table");

            Assert.IsFalse(db.Tables.ContainsKey("table"));
        }
        public void outputInsert()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "INSERT INTO table VALUES ('data',5,5.05);";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.InsertSuccess));
        }
        public void outputDelete()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "DELETE FROM table WHERE columnIntNumbers=1;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.TupleDeleteSuccess));
        }
        public void outputSelect()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "SELECT columnIntNumbers FROM table WHERE columnIntNumbers=1;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals("['columnIntNumbers'] {'1'}"));
        }
        public void createTable()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            List <String> list = new List <string>();

            db.createTable("newTable", list);

            Assert.IsTrue(db.Tables.ContainsKey("newTable"));
        }
        public void outputUpdate()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "UPDATE table SET columnIntNumbers=5 WHERE columnIntNumbers=1;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.TupleUpdateSuccess));
        }
        public void outputCreateTable()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "CREATE TABLE table444 (column1 DOUBLE,column2 TEXT);";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.CreateTableSuccess));
        }
        // [TestMethod]
        public void deleteData()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            Table  table  = db.Tables["table"];
            Column column = table.Columns["column"];

            column.deleteData(0);
            Assert.IsTrue(column.list[0] != "data");
        }
        public void outputCreateSecurityProfile()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "CREATE SECURITY PROFILE Employee;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityProfileCreated));
        }
        public void outputDropTable()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string input = "DROP TABLE table;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.TableDroppedSucess));
        }
        public void deleteData()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.deleteData("table", "column", Operator.Equal, "data");

            Table  table  = db.Tables["table"];
            Column column = table.Columns["column"];

            Assert.IsFalse(column.list.Contains("data"));
        }
        public void createColumn()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");


            Table table = db.Tables["table"];

            table.createColumn("column1", Library.Type.Text);

            Assert.IsTrue(table.Columns.ContainsKey("column1"));
        }
        // [TestMethod]

        /*public void updateData()
         * {
         *  BDcreation.BDcreatioon();
         *  DataBase db = new DataBase();
         *  db.load("BD");
         *
         *  Table table = db.Tables["table"];
         *  Column column = table.Columns["column"];
         *  string data = column.list[0];
         *
         *  column.updateData("newdata", Operator.Equal, "data");
         *
         *
         *  string newdata = column.list[0];
         *
         *  Assert.IsFalse(data == newdata);
         * }
         */
        // [TestMethod]
        public void insert()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            Table  table  = db.Tables["table"];
            Column column = table.Columns["column"];

            column.insert("newData");

            Assert.IsTrue(column.list.Contains("newData"));
        }
        public void existUser()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            Assert.IsTrue(db.existUser("yeray", "321"));
            Assert.IsFalse(db.existUser("Borja", "123"));
            Assert.IsFalse(db.existUser("ane", "789"));
        }
        public void deleteUser()
        {
            string user = "******";

            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.createSecurityProfile("SECURITY");
            db.addUser("Juan", "123456", "SECURITY");

            db.deleteUser(user);

            Assert.IsFalse(db.Users.ContainsKey(user));
        }
        public void createSecurityProfile()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            string secProf = "SECURITY";


            db.createSecurityProfile(secProf);

            SecurityProfile sp = db.SecProfiles[secProf];

            Assert.IsTrue(secProf.Equals(sp.Name));
        }
        public void outputDeleteUser()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            string input = "DELETE USER yeray;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityUserDeleted));
        }
        public void outputAddUser()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            string input = "ADD USER ('Eva','1234',profile2);";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityUserAdded));
        }
        public void outputRevokePrivilege()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            string input = "REVOKE SELECT ON table TO profile1;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityPrivilegeRevoked));
        }
        public void outputGrantPrivilege()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            string input = "GRANT SELECT ON table2 TO profile2;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityPrivilegeGranted));
        }
        public void outputDropSecurityProfile()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            string input = "DROP SECURITY PROFILE profile1;";

            string output = db.output(input, db.admin);

            Assert.IsTrue(output.Equals(Constants.SecurityProfileDeleted));
        }
        public void update()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            Table  table  = db.Tables["table"];
            Column column = table.Columns["column"];

            db.update("table", "column", "newdata", "column", Operator.Equal, "data");

            string newdata = column.list[0];

            Assert.IsTrue("newdata" == newdata);
        }
        public void hasPrivilege()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.loadSecurity();
            db.loadUsers();

            User user = db.Users["yeray"];


            Assert.IsTrue(db.hasPrivilege(user, "table2", Privilege.DELETE));
            Assert.IsFalse(db.hasPrivilege(user, "table", Privilege.SELECT));
            Assert.IsFalse(db.hasPrivilege(user, "table2", Privilege.SELECT));
        }
        public void revoke()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            db.createSecurityProfile("SECURITY");
            Library.Privilege privilegeType   = Library.Privilege.SELECT;
            string            table           = "table";
            string            securityProfile = "SECURITY";

            db.grant(privilegeType, table, securityProfile);

            db.revoke(privilegeType, table, securityProfile);

            Assert.IsFalse(db.SecProfiles[securityProfile].Privileges[table].Contains(privilegeType));
        }
        public void selectToString()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");

            Operator       op          = Operator.Equal;
            IList <string> listColumns = new List <string>();

            listColumns.Add("columnIntNumbers");


            string select = db.select(listColumns, "table", "columnIntNumbers", op, "1").selectToString();

            string result = "['columnIntNumbers'] {'1'}";

            Assert.IsTrue(result.Equals(select));
        }
        public void select()
        {
            BDcreation.BDcreatioon();
            DataBase db = DataBase.load("BD");


            IList <string> list = new List <string>();

            list.Add("column");
            list.Add("columnIntNumbers");

            Table table = db.select(list, "table", "column", Operator.Equal, "data");


            Assert.IsTrue(table.Columns["columnIntNumbers"].list.Contains("1"));
            //Assert.IsTrue(table.Columns.ContainsKey("column"));
        }