Example #1
0
        public void DeserializeXmlExeption_NullPath()
        {
            Thinkpad notebook = null;
            Serializator <Thinkpad> serializer = new Serializator <Thinkpad>();

            notebook = serializer.OpenXML(null, notebook);
        }
Example #2
0
        /*
         *
         * METODOS STATICOS DE AYUDA
         *
         */

        public static void LoadStock(MechanicalKeyboard m, Thinkpad t)
        {
            for (int i = 0; i < 10; i++)
            {
                Factory.LoadMoreStock(t);
                Factory.LoadMoreStock(m);
            }
        }
Example #3
0
        public void InvalidQueryExeption_WrongQuery(List <string> param1, string param2)
        {
            // arrange
            Thinkpad notebook = new Thinkpad("Thinkpad T430", 3000, EScreenSize.LargeScreen, 1, true);

            Factory.listaProductos.Add(notebook);
            List <string> thinkpadProperties;

            thinkpadProperties = Factory.GetProperties(Factory.listaProductos, "Thinkpad");
            // assert
            string query = SQL <Thinkpad> .BuildInsertQuery(param1, param2);
        }
Example #4
0
        static void Main(string[] args)
        {
            // ATENCION - LA MAYORIA DE LA PRUEBAS QUE RESULTAN SIN STOCK ES DEBIDO A LOS TECLADOS QUE CONSUMEN
            // MUCHAS KEYCAPS Y MUCHOS SWTICHES, TENER EN CUENTA Y AGREGAR STOCK CONTINUO PARA PROBAR
            bool sinStock = false;
            // creamos una lista con 2 objetos.
            List <Product>     list = new List <Product>();
            MechanicalKeyboard p1   = new MechanicalKeyboard("Poker3", 1500, EKeyboardSize.Tenkeyless, true, ESwitchColor.CherryBlue);
            Thinkpad           p2   = new Thinkpad("T420", 2000, EScreenSize.LargeScreen, 1, true);

            list.Add(p1);
            list.Add(p2);
            // Cargamos el diccionario de materiales (de la clase Materials) con los nombres de los
            // atributos de c/tipo de objeto y un valor random
            Factory.stock.LoadMaterialsNeeded(p1);
            Factory.stock.LoadMaterialsNeeded(p2);
            // Aumentamos el stock que se necesita para crear c/producto
            Factory.LoadMoreStock(p1);
            Factory.LoadMoreStock(p2);
            // Mostramos Stock Inicial
            Console.WriteLine("Consulto Stock (1) \n\n" + Factory.StockInfo());
            try
            {
                // Intentamos agregar 2 productos
                // Cuando se testea agregar productos ESTAR atentos al LoadMoreStock y su random interno
                // si es muy chico habra que llamarlo varias veces
                // A modo de prueba se puede cambiar su random a uno mayor
                Factory.Create = new Thinkpad("T420", 2500, EScreenSize.MediumScreen, 1, true);
                Factory.Create = new MechanicalKeyboard("Poker3", 1500, EKeyboardSize.Tenkeyless, false, ESwitchColor.CherryBlue);
                Console.WriteLine("Primeros 2 productos (1) \n\n" + Factory.ProductsInfo() + "\n\n");
            }
            catch (OutOfStockException ex)
            {
                Console.WriteLine($"No hay stock suficiente (1) ", ex.Message);
            }
            try
            {
                Factory.Create = new MechanicalKeyboard("Qisan Magicforce", 1150, EKeyboardSize.Small, true, ESwitchColor.GateronClear);
                Factory.Create = new MechanicalKeyboard("Das Keyboard 100", 1790, EKeyboardSize.Small, false, ESwitchColor.GateronBrown);
                Console.WriteLine("Se agregan 2 productos mas (2) \n\n" + Factory.ProductsInfo() + "\n\n");
            }
            catch (OutOfStockException ex)
            {
                Console.WriteLine("No hay stock suficiente (2) ", ex.Message);
                sinStock = true;
            }

            if (sinStock)
            {
                Factory.LoadMoreStock(p1);
            }
            try
            {
                Factory.Create = new MechanicalKeyboard("Das Keyboard 100", 2655, EKeyboardSize.FullSize, false, ESwitchColor.CherryRed);
                Factory.Create = new Thinkpad("T430", 2500, EScreenSize.LargeScreen, 1, true);
                Console.WriteLine("Se agregan mas productos (3) \n\n" + Factory.ProductsInfo() + "\n\n");
            }
            catch (OutOfStockException ex)
            {
                Console.WriteLine("Te quedaste sin stock (3) ", ex.Message);
            }

            Console.WriteLine("Consulto Stock (2) \n\n" + Factory.StockInfo());

            //PROBAMOS SERIALIZACION
            try
            {
                // Corroboramos que la lista de productos sea mayor a 0
                // Si no lo es, lanzamos excepcion
                if (!(Factory.listaProductos.Count > 0))
                {
                    throw new NoProductCreatedException("Stock is empty, nothing to be serialized\nGo build some");
                }
                string path = AppDomain.CurrentDomain.BaseDirectory + "ProductsList.xml";
                Serializator <List <Product> > toXml = new Serializator <List <Product> >();
                toXml.Save(path, Factory.listaProductos);
                Console.WriteLine($"XML file created successfully at {AppDomain.CurrentDomain.BaseDirectory}");
            }
            catch (NoProductCreatedException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
Example #5
0
 public void SerializeXmlExeption_NullPath()
 {
     Thinkpad notebook = new Thinkpad();
     Serializator <Thinkpad> serializer = new Serializator <Thinkpad>();
     bool output = serializer.SaveXML(null, notebook);
 }
Example #6
0
        static void Main(string[] args)
        {
            /*
             *
             *
             *              PROBAMOS CREACION DE PRODUCTOS Y EXCEPCIONES
             *
             *
             */

            // ATENCION - LA MAYORIA DE LA PRUEBAS QUE RESULTAN SIN STOCK ES DEBIDO A LOS TECLADOS QUE CONSUMEN
            // MUCHAS KEYCAPS Y MUCHOS SWTICHES, TENER EN CUENTA Y AGREGAR STOCK CONTINUO PARA PROBAR
            bool sinStock = false;
            // creamos 2 objetos.
            MechanicalKeyboard p1 = new MechanicalKeyboard("Poker3", 1500, EKeyboardSize.Tenkeyless, true, ESwitchColor.CherryBlue);
            Thinkpad           p2 = new Thinkpad("Thinkpad T420", 2000, EScreenSize.LargeScreen, 1, true);

            // Cargamos el diccionario de materiales (de la clase Materials) con los nombres de los
            // atributos de c/tipo de objeto y un valor random
            Factory.stock.LoadMaterialsNeeded(p1);
            Factory.stock.LoadMaterialsNeeded(p2);
            // Aumentamos el stock que se necesita para crear c/producto
            LoadStock(p1, p2);
            // Mostramos Stock Inicial
            CheckStock(1);
            try
            {
                // Intentamos agregar 2 productos
                // Cuando se testea agregar productos ESTAR atentos al LoadMoreStock y su random interno
                // si es muy chico habra que llamarlo varias veces
                // A modo de prueba se puede cambiar su random a uno mayor
                Factory.Create = new Thinkpad("Thinkpad T420", 2500, EScreenSize.MediumScreen, 1, true);
                Factory.Create = new MechanicalKeyboard("Poker3", 1500, EKeyboardSize.Tenkeyless, false, ESwitchColor.CherryBlue);
                Console.WriteLine("Se agregan 2 productos (1)" + Factory.ProductsInfo());
            }
            catch (OutOfStockException ex)
            {
                sinStock = true;
                Console.WriteLine($"No hay stock suficiente (1) ", ex.Message);
            }
            try
            {
                Factory.Create = new MechanicalKeyboard("Qisan Magicforce", 1150, EKeyboardSize.Small, true, ESwitchColor.GateronClear);
                Factory.Create = new MechanicalKeyboard("Das Keyboard 100", 1790, EKeyboardSize.Small, false, ESwitchColor.GateronBrown);
                Console.WriteLine("Se agregan 2 productos (2)" + Factory.ProductsInfo());
            }
            catch (OutOfStockException ex)
            {
                sinStock = true;
                Console.WriteLine("No hay stock suficiente (2) ", ex.Message);
            }

            if (sinStock)
            {
                LoadStock(p1, p2);
                sinStock = false;
            }
            CheckStock(2);
            try
            {
                Factory.Create = new MechanicalKeyboard("Das Keyboard 100", 2655, EKeyboardSize.FullSize, false, ESwitchColor.CherryRed);
                Factory.Create = new Thinkpad("Thinkpad T430", 2500, EScreenSize.LargeScreen, 1, true);
                Console.WriteLine("Se agregan 2 productos (3)" + Factory.ProductsInfo());
            }
            catch (OutOfStockException ex)
            {
                Console.WriteLine("Te quedaste sin stock (3) ", ex.Message);
            }
            CheckStock(3);

            /*
             *
             *
             *              PROBAMOS SERIALIZACION
             *
             *
             */
            Console.WriteLine("\n@@@@@@ SE PRUEBA SERIALIZACION @@@@@\n");
            try
            {
                // Corroboramos que la lista de productos sea mayor a 0
                // Si no lo es, lanzamos excepcion
                DateTime currentDate = new DateTime();
                currentDate = DateTime.Now;
                if (!(Factory.listaProductos.Count > 0))
                {
                    throw new NoProductCreatedException("Stock is empty, nothing to be serialized\nGo build some");
                }
                string path = AppDomain.CurrentDomain.BaseDirectory + "ProductsList - " + currentDate.ToString("-MMddyyyy_HHmmss") + ".xml";
                Serializator <List <Product> > toXml = new Serializator <List <Product> >();
                toXml.SaveXML(path, Factory.listaProductos);
                Console.WriteLine($"XML file created successfully at {AppDomain.CurrentDomain.BaseDirectory}");
            }
            catch (NoProductCreatedException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            if (sinStock)
            {
                LoadStock(p1, p2);
                sinStock = false;
            }
            CheckStock(4);
            try
            {
                Factory.Create = new MechanicalKeyboard("Das Keyboard 100", 2655, EKeyboardSize.FullSize, false, ESwitchColor.CherryRed);
                Factory.Create = new Thinkpad("Thinkpad T430", 2500, EScreenSize.LargeScreen, 1, true);
                Factory.Create = new Thinkpad("Thinkpad T450", 3500, EScreenSize.LargeScreen, 1, true);
                Console.WriteLine("Se agregan 2 productos (4)" + Factory.ProductsInfo());
            }
            catch (OutOfStockException ex)
            {
                sinStock = true;
                Console.WriteLine("Te quedaste sin stock (4) ", ex.Message);
            }
            CheckStock(5);

            /*
             *
             *
             *              PROBAMOS GUARDAR EN DB
             *
             *
             */
            Console.WriteLine("\n@@@@@@ SE PRUEBA BASE DATOS @@@@@\n");
            string        notebookQuery      = null;
            string        keyboardQuery      = null;
            List <string> thinkpadProperties = null;
            List <string> keyboardProperties = null;

            if (Factory.listaProductos.Count > 0)
            {
                if (Factory.listaProductos.ContainsType("Thinkpad")) // metodo de extension
                {
                    thinkpadProperties = Factory.GetProperties(Factory.listaProductos, "Thinkpad");
                    notebookQuery      = SQL <Thinkpad> .BuildInsertQuery(thinkpadProperties, "Notebooks");
                }
                if (Factory.listaProductos.ContainsType("MechanicalKeyboard")) // metodo de extension
                {
                    keyboardProperties = Factory.GetProperties(Factory.listaProductos, "MechanicalKeyboard");
                    keyboardQuery      = SQL <MechanicalKeyboard> .BuildInsertQuery(keyboardProperties, "Keyboards");
                }
                try
                {
                    List <Product> temp = new List <Product>(Factory.listaProductos);
                    foreach (Product item in temp)
                    {
                        if (item is Thinkpad)
                        {
                            SQL <Thinkpad> .Insert(notebookQuery, thinkpadProperties, (Thinkpad)item);
                        }
                        if (item is MechanicalKeyboard)
                        {
                            SQL <MechanicalKeyboard> .Insert(keyboardQuery, keyboardProperties, (MechanicalKeyboard)item);
                        }
                        Factory.listaProductos.Remove(item);
                    }
                    Console.WriteLine("Product/s successfully save to DB. Stock emptied");
                }
                catch (InvalidQueryException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            else
            {
                Console.WriteLine("Stock is empty, nothing to save on DB\nGo build some");
            }

            /*
             *
             *
             *              PROBAMOS CONSULTAS BD
             *
             *
             */

            Console.WriteLine("\n@@@@@@ SE PRUEBA CONSULTAS A DATOS @@@@@\n");
            List <Product> listN = null;
            List <Product> listK = null;

            try
            {
                listN = SQL <Product> .QueryBD("SELECT * from Notebooks");

                listK = SQL <Product> .QueryBD("SELECT * from Keyboards");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                Console.WriteLine("\n@@@@@@ TABLA: NOTEBOOKS @@@@@\n");
                if (listN != null && listN.Count > 0)
                {
                    foreach (Product item in listN)
                    {
                        Console.WriteLine(item.ToString());
                    }
                }

                Console.WriteLine("\n@@@@@@ TABLA: TECLADOS @@@@@\n");
                if (listK != null && listK.Count > 0)
                {
                    foreach (Product item in listK)
                    {
                        Console.WriteLine(item.ToString());
                    }
                }
            }
            catch (NullReferenceException ex)
            {
                Console.WriteLine("OJO, LISTA NULA. CHEQUEAR" + ex.Message);
            }


            Console.WriteLine("FINAL DE LA CLASE TEST");
            Console.ReadKey();
        }