예제 #1
0
        public void EatTest()
        {
            Chicken C    = new Chicken("Big Bird");
            string  food = C.Eat();

            Assert.AreEqual(food, "I eat veggies");
        }
예제 #2
0
        public void PeckTest()
        {
            //arrange
            Chicken f = new Chicken();
            //act
            string feed = f.Eat();

            //assert
            Assert.AreEqual(feed, "Peck, Peck, Peck <<<<......");
        }
예제 #3
0
        static void Main(string[] args)
        {
            //I created a farm in the Main() method.  I did not include my
            //animal classes.  I couldn't find a way create a messase for
            //namespace that is missing.
            try
            {
                Animal dog = new Animal();
                dog.Speak();

                Horse horse = new Horse();
                horse.Speak();
                horse.Move();
                horse.Action();
                horse.Eat();
                Console.ReadKey();

                Goat goat = new Goat();
                goat.Speak();
                goat.Move();
                goat.Action();
                goat.Eat();
                Console.ReadKey();

                Pig pig = new Pig();
                pig.Speak();
                pig.Move();
                pig.Action();
                pig.Eat();
                Console.ReadKey();

                Chicken chicken = new Chicken();
                chicken.Speak();
                chicken.Move();
                chicken.Action();
                chicken.Eat();
                Console.ReadKey();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            Pig Bacon = new Pig();

            Bacon.name = "Bacon";
            Bacon.printbase();
            Bacon.Speak();
            Bacon.Eat();
            Bacon.poop();

            Console.WriteLine();

            Cow Henry = new Cow();

            Henry.name = "Henry";
            Henry.printbase();
            Henry.Speak();
            Henry.Eat();
            Henry.poop();

            Console.WriteLine();

            Horse Stephen = new Horse();

            Stephen.name = "Stephen";
            Stephen.printbase();
            Stephen.Speak();
            Stephen.Eat();
            Stephen.poop();


            Console.WriteLine();

            Chicken Rex = new Chicken();

            Rex.name = "Rex";
            Rex.printbase();
            Rex.Speak();
            Rex.Eat();
            Rex.poop();
        }
예제 #5
0
파일: Program.cs 프로젝트: carojaspaz/Solid
        static void Main(string[] args)
        {
            Console.WriteLine("---------------------------------");
            #region S
            Console.WriteLine("S - Responsabilidad Simple");

            Console.WriteLine("Incorrecto");
            // Una sola clase tiene la responsabilidad del objeto
            // y la de almacenarlo en la base de datos eso esta en
            // desacuerdo con el principio
            var carBad = new sb.Car("Renault");
            carBad.saveCarDB(carBad);

            Console.WriteLine("Correcto");
            // Lo correcto es que cada responsabilidad sea separada
            // en clases diferentes
            var car   = new Car("Renault");
            var cadDB = new CarDb();
            cadDB.saveCarDB(car);
            #endregion
            Console.WriteLine("---------------------------------");

            Console.WriteLine("0 - Abierto Cerrado");
            #region O
            Console.WriteLine("Incorrecto");
            // Si agregamos un item en el arreglo carsBadArray se debe
            // modificar el método viewCostCarBad, lo cual no cumple
            // el principio Abierto/Cerrado
            // Para cada nuevo carro se debería modificar la funcionalidad
            sb.Car[] carsBadArray =
            {
                new sb.Car("Renault"),
                new sb.Car("Audi")//,
                //new sb.Car("Susuzi")
            };
            viewCostCarBad(carsBadArray);

            Console.WriteLine("Correcto");
            // Si agregamos un nuevo item al arreglo carsArray no será
            // necesario hacer modificaciones en el médodo viewCostCar
            AbstractCar[] carsArray =
            {
                new RenaultModel(),
                new AudiModel()//,
                //new SusukiModel()
            };

            viewCostCar(carsArray);
            #endregion
            Console.WriteLine("---------------------------------");

            Console.WriteLine("L - Suplantación de Liskov");

            // Llamamos al método Sustitution, para evaluar el comportamiento
            Sustitution(carsArray);

            Console.WriteLine("---------------------------------");
            #region I
            Console.WriteLine("I - Segregación de interfaces");

            Console.WriteLine("Incorrecto");
            // Cuando la interfaz tiene metodos que la clase no debe implementar
            // estos generan comportamientos innecesarios que no deberian tener
            ChickenBad chickenBad = new ChickenBad();
            chickenBad.Eat();
            try{
                chickenBad.Fly();
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Correcto");
            // Cuando se dividen las interfaces las implementaciones no tienen
            // funcionalidades que no necesitan
            Chicken chicken = new Chicken();
            chicken.Eat();
            //chicken.Fly(); No es implementado en la clase Chicken
            #endregion
            Console.WriteLine("---------------------------------");
            #region D
            Console.WriteLine("D - Inversión de dependencias");
            // Cuando los sistemas son bastante grandes se utiliza
            // inyección de dependencias para cargar modulos
            Console.WriteLine("Incorrecto");
            // Si por alguna razón cambio el servicio de acceso a datos
            // debo modificar todas las instancias del accesso
            DataBadService dataBadService = new DataBadService();
            DataBadAccess  dataBadAccess  = new DataBadAccess(dataBadService);
            dataBadAccess.GetData("Carros");
            Console.WriteLine("Correcto");
            // Cuando se hace usando las interfaces no es necesario cambiar todas
            // las instancias, ya que utilizamos la abstracción no la concreción
            // Puede intercambiar ApiService con DataBaseService
            ApiService service = new ApiService();
            //DataBaseService service = new DataBaseService();
            DataAccess dataAccess = new DataAccess(service);
            dataAccess.GetData("Carros");
            #endregion
        }
예제 #6
0
        public void CanChickenNotEat()
        {
            Chicken chicken = new Chicken();

            Assert.False(chicken.Eat());
        }