示例#1
0
        public void TestDeleteAviary()
        {
            var zoo = new Zoo("name", "address");
            //Корректное удаление существующего пустого закрытого вольера
            var aviary = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary);
            zoo.CloseAviary(aviary.Number);
            Assert.AreEqual(true, zoo.DeleteAviary(aviary.Number));
            Assert.AreEqual(null, zoo.FindAviary(aviary.Number));

            //Попытка удалить незакрытый вольер
            System.Threading.Thread.Sleep(10);
            var aviary2 = new Cage(CageType.WithTrees);

            zoo.AddAviary(aviary2);
            Assert.AreEqual(false, zoo.DeleteAviary(aviary2.Number));

            //Попытка удалить не существующий вольер
            try
            {
                zoo.DeleteAviary("any number");
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка удалить уже удаленный вольер
            try
            {
                zoo.DeleteAviary(aviary.Number);
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#2
0
        public void TestSerializeZoo()
        {
            var serialaizer = new ZooSerializer();

            //Успешная попытка сериализации пустого зоопарка
            var zoo = new Zoo("name", "address");

            serialaizer.SerializeZoo(zoo);
            Assert.AreEqual(true, File.Exists(serialaizer.FileName));
            var zoo2 = serialaizer.DeserializeZoo();

            Assert.AreEqual(zoo.Name, zoo2.Name);
            Assert.AreEqual(zoo.Address, zoo2.Address);
            Assert.AreEqual(0, zoo2.GetListOfAviaries().Count);
            Assert.AreEqual(0, zoo2.GetListOfAnimals().Count);

            //Успешная попытка сериализации непустого зоопарка
            zoo.AddAviary(new Cage(CageType.WithRocks));
            zoo.AddAviary(new Pool(PoolType.IndoorsPool));
            zoo.AddAviary(new Yard(YardType.Plain));
            zoo.SettleAnimal(new Mammal(MammalDetachment.Carnivora, "family1", "genus1", "species1"), zoo.GetListOfAviaries(AviaryType.Cage).First());
            zoo.SettleAnimal(new Bird(BirdDetachment.Anseriformes, "family2", "genus2", "species2"), zoo.GetListOfAviaries(AviaryType.Pool).First());
            zoo.SettleAnimal(new Mammal(MammalDetachment.Artiodactyla, "family3", "genus3", "species3"), zoo.GetListOfAviaries(AviaryType.Yard).First());
            serialaizer.SerializeZoo(zoo);
            zoo2 = serialaizer.DeserializeZoo();
            Assert.AreEqual(3, zoo2.GetListOfAviaries().Count);
            Assert.AreEqual(3, zoo2.GetListOfAnimals().Count);
            Assert.AreEqual(true, zoo2.GetListOfAviaries(AviaryType.Cage).All(aviary => (aviary as Cage).Kind == CageType.WithRocks));
            Assert.AreEqual(true, zoo2.GetListOfAviaries(AviaryType.Pool).All(aviary => (aviary as Pool).Kind == PoolType.IndoorsPool));
            Assert.AreEqual(true, zoo2.GetListOfAviaries(AviaryType.Yard).All(aviary => (aviary as Yard).Kind == YardType.Plain));
            Assert.AreEqual(true, zoo2.GetListOfAnimals(AnimalClass.Mammal).Any(animal => (animal as Mammal).Detachment == MammalDetachment.Carnivora));
            Assert.AreEqual(true, zoo2.GetListOfAnimals(AnimalClass.Bird).Any(animal => (animal as Bird).Detachment == BirdDetachment.Anseriformes));
            Assert.AreEqual(true, zoo2.GetListOfAnimals(AnimalClass.Mammal).Any(animal => (animal as Mammal).Detachment == MammalDetachment.Artiodactyla));

            //Неуспешная попытка сериализации несуществующего зоопарка
            try
            {
                serialaizer.SerializeZoo(null);
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Неуспешная попытка сериализации зоопарка в файл с некорректным путем
            try
            {
                serialaizer.FileName = @"??";
                serialaizer.SerializeZoo(zoo);
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#3
0
        public void TestEvictAnimal()
        {
            var zoo     = new Zoo("name", "address");
            var aviary1 = new Cage(CageType.WithRocks);
            var animal1 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary1);
            zoo.SettleAnimal(animal1, aviary1);

            //Результат успешного выселения животного
            zoo.EvictAnimal(animal1);
            Assert.AreEqual(0, zoo.GetListOfAnimals().Count);

            //Попытка выселить несуществующее (пустое) животное
            try
            {
                zoo.EvictAnimal(null);
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка выселить отсутствующее в зоопарке животное
            try
            {
                zoo.EvictAnimal(animal1);
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#4
0
        public void TestAddAviary()
        {
            var zoo = new Zoo("name", "address");

            //Корректное добавление
            var aviary = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary);
            Assert.AreEqual(1, zoo.GetListOfAviaries().Count);

            //Попытка добавить несуществующий вольер
            try
            {
                zoo.AddAviary(null);
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#5
0
        public void TestFindAviary()
        {
            var zoo = new Zoo("name", "address");

            //Поиск существующего вольера
            var aviary = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary);
            Assert.AreEqual(aviary, zoo.FindAviary(aviary.Number));

            //Поиск несуществующего вольера
            Assert.AreEqual(null, zoo.FindAviary("any number"));
        }
示例#6
0
        public void TestGetListOfAviariesByType()
        {
            var zoo = new Zoo("name", "address");

            //Количество вольеров имеющегося в зоопарке типа вольеров
            var aviary1 = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary1);
            Assert.AreEqual(1, zoo.GetListOfAviaries(AviaryType.Cage).Count);

            //Количество вольеров отсутствующего в зоопарке типа вольеров
            Assert.AreEqual(0, zoo.GetListOfAviaries(AviaryType.Aquarium).Count);
        }
示例#7
0
        public void TestSettleAnimal()
        {
            var zoo = new Zoo("name", "address");

            //Корректное заселение существующего животного в существующий подходящий пустой вольер
            var aviary = new Cage(CageType.WithRocks, 10, 2);

            zoo.AddAviary(aviary);
            var animal = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            Assert.AreEqual(true, zoo.SettleAnimal(animal, zoo.FindAviary(aviary.Number)));

            //Корректное заселение существующего животного в существующий подходящий не до конца заполненный вольер
            var animal2 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species2");

            Assert.AreEqual(true, zoo.SettleAnimal(animal2, zoo.FindAviary(aviary.Number)));

            //Попытка заселения существующего животного в существующий не подходящий вольер
            var animal3 = new Mammal(MammalDetachment.Carnivora, "family3", "genus3", "species3");

            Assert.AreEqual(false, zoo.SettleAnimal(animal3, zoo.FindAviary(aviary.Number)));

            //Попытка заселения существующего животного в существующий подходящий, но полностью заполненный вольер
            var animal4 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species2");

            Assert.AreEqual(false, zoo.SettleAnimal(animal4, zoo.FindAviary(aviary.Number)));

            //Попытка заселения не существующего животного в существующий вольер
            try
            {
                zoo.SettleAnimal(null, zoo.FindAviary(aviary.Number));
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка заселения существующего животного в несуществующий вольер
            try
            {
                zoo.SettleAnimal(animal, null);
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка поселить существующее животное в существующий, но отсутствующий в данном зоопарке вольер
            try
            {
                zoo.SettleAnimal(animal, new Cage(CageType.WithRocks, 10, 2));
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#8
0
        public void TestToString()
        {
            //Корректное формирование информационной строки
            var zoo     = new Zoo("name", "address");
            var aviary1 = new Cage(CageType.WithRocks);
            var animal1 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary1);
            zoo.SettleAnimal(animal1, aviary1);
            var str = "Название: name\nАдрес: address" +
                      "\nКоличество вольеров: 1 Общая популяция: 1";

            Assert.AreEqual(str, zoo.ToString());
        }
示例#9
0
        public void TestGetListOfAnimalsByClass()
        {
            var zoo = new Zoo("name", "address");

            //Количество животных имеющегося в зоопарке класса
            var aviary1 = new Cage(CageType.WithRocks);
            var animal1 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary1);
            zoo.SettleAnimal(animal1, aviary1);
            Assert.AreEqual(1, zoo.GetListOfAnimals(AnimalClass.Mammal).Count);

            //Количество животных отсутствующего в зоопарке класса
            Assert.AreEqual(0, zoo.GetListOfAnimals(AnimalClass.Bird).Count);
        }
示例#10
0
        public void TestGetFullListOfAviaries()
        {
            var zoo = new Zoo("name", "address");

            //Количество вольеров в непустом зоопарке
            var aviary1 = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary1);
            Assert.AreEqual(1, zoo.GetListOfAviaries().Count);

            //Количество вольеров в пустом зоопарке
            zoo.CloseAviary(aviary1.Number);
            zoo.DeleteAviary(aviary1.Number);
            Assert.AreEqual(0, zoo.GetListOfAviaries().Count);
        }
示例#11
0
        public void TestFindAnimal()
        {
            var zoo = new Zoo("name", "address");

            //Успешный поиск имеющегося в зоопарке животного
            var aviary = new Cage(CageType.WithRocks);
            var animal = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary);
            zoo.SettleAnimal(animal, zoo.FindAviary(aviary.Number));
            Assert.AreEqual(animal, zoo.FindAnimal(animal.Id));

            //Неуспешный поиск отсутствующего в зоопарке животного
            Assert.AreEqual(null, zoo.FindAnimal("any id"));
        }
示例#12
0
        public void TestGetFullListOfAnimals()
        {
            var zoo = new Zoo("name", "address");

            //Количество животных в непустом зоопарке
            var aviary1 = new Cage(CageType.WithRocks);
            var animal1 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary1);
            zoo.SettleAnimal(animal1, aviary1);
            Assert.AreEqual(1, zoo.GetListOfAnimals().Count);

            //Количество животных в пустом зоопарке
            zoo.EvictAnimal(animal1);
            Assert.AreEqual(0, zoo.GetListOfAnimals().Count);
        }
示例#13
0
        private void AddAviary()
        {
            Console.Clear();
            Console.WriteLine("Выберите тип вольера");
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("1. {0} (Клетка) - (по умолчанию)", AviaryType.Cage.ToString());
            Console.WriteLine("2. {0} (Загон)", AviaryType.Yard.ToString());
            Console.WriteLine("3. {0} (Водоем)", AviaryType.Pool.ToString());
            Console.WriteLine("4. {0} (Аквариум)", AviaryType.Aquarium.ToString());
            Console.WriteLine("5. {0} (Стеклянный вольер)", AviaryType.GlassAviary.ToString());
            Console.WriteLine("------------------------------------------------");
            Console.Write("Ваш выбор:");
            Aviary aviary;

            switch (Console.ReadLine())
            {
            case "1":
            default:
                aviary = CreateCage();
                break;

            case "2":
                aviary = CreateYard();
                break;

            case "3":
                aviary = CreatePool();
                break;

            case "4":
                aviary = CreateAquarium();
                break;

            case "5":
                aviary = CreateGlassAviary();
                break;
            }
            _zoo.AddAviary(aviary);
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("Добавлен новый вольер");
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine(aviary.ToString());
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("Нажмите любую клавишу для возврата в меню...");
            Console.ReadKey();
        }
示例#14
0
 public Zoo ToZoo(ZooDTO zooDTO)
 {
     try
     {
         if (zooDTO == null)
         {
             throw new ArgumentException("Пустой DTO объект (зоопарк)!!!");
         }
         var zoo       = new Zoo(zooDTO.Name, zooDTO.Address);
         var converter = new AviaryConverter();
         foreach (var aviary in zooDTO.Aviaries)
         {
             zoo.AddAviary(converter.ToAviary(aviary));
         }
         return(zoo);
     }
     catch (ArgumentException)
     {
         throw;
     }
 }
示例#15
0
        public void TestCloseAviary()
        {
            var zoo = new Zoo("name", "address");

            //Корректное закрытие открытого вольера
            var aviary = new Cage(CageType.WithRocks);

            zoo.AddAviary(aviary);
            Assert.AreEqual(true, zoo.CloseAviary(aviary.Number));
            Assert.AreEqual(AviaryStatus.Closed, zoo.FindAviary(aviary.Number).Status);

            //Попытка закрыть уже закрытый вольер
            Assert.AreEqual(false, zoo.CloseAviary(aviary.Number));

            //Попытка закрыть несуществующий вольер
            try
            {
                zoo.CloseAviary("any number");
                Assert.Fail();
            }
            catch (ArgumentException) { }
        }
示例#16
0
        private void GenerateZoo()
        {
            _zoo = new Zoo("АО \"Наш новый зоопарк\"", "Россия, г.Н-ск, ул.Новая, 50");

            var aviary1 = new Yard(YardType.Plain);

            System.Threading.Thread.Sleep(20);
            var aviary2 = new Cage(CageType.WithTrees);

            System.Threading.Thread.Sleep(20);
            var aviary3 = new Cage(CageType.WithRocks, 300.00, 3);

            System.Threading.Thread.Sleep(20);
            var aviary4 = new Pool(PoolType.Pond, 400, 10);

            System.Threading.Thread.Sleep(20);
            var aviary5 = new Aquarium(AquariumType.SeaWater, 5, 10);

            System.Threading.Thread.Sleep(20);
            var aviary6 = new GlassAviary(GlassAviaryType.WithWater);

            System.Threading.Thread.Sleep(20);

            aviary1.SettleAnimal(new Mammal(MammalDetachment.Artiodactyla, "Оленьи", "Олени", "Благородный олень"));
            System.Threading.Thread.Sleep(20);
            aviary1.SettleAnimal(new Mammal(MammalDetachment.Artiodactyla, "Оленьи", "Олени", "Пятнистый олень"));
            System.Threading.Thread.Sleep(20);
            aviary1.SettleAnimal(new Mammal(MammalDetachment.Artiodactyla, "Оленьи", "Олени", "Пятнистый олень"));
            System.Threading.Thread.Sleep(20);
            aviary2.SettleAnimal(new Mammal(MammalDetachment.Primates, "Гоминиды", "Орангутаны", "Суматранский орангутан"));
            System.Threading.Thread.Sleep(20);
            aviary3.SettleAnimal(new Mammal(MammalDetachment.Carnivora, "Кошачьи", "Пантеры", "Западноафриканский лев"));
            System.Threading.Thread.Sleep(20);
            aviary3.SettleAnimal(new Mammal(MammalDetachment.Carnivora, "Кошачьи", "Пантеры", "Западноафриканский лев"));
            System.Threading.Thread.Sleep(20);
            aviary4.SettleAnimal(new Bird(BirdDetachment.Anseriformes, "Утиные", "Лебеди", "Черный лебедь"));
            System.Threading.Thread.Sleep(20);
            aviary4.SettleAnimal(new Bird(BirdDetachment.Anseriformes, "Утиные", "Лебеди", "Лебедь-шипун"));
            System.Threading.Thread.Sleep(20);
            aviary4.SettleAnimal(new Bird(BirdDetachment.Anseriformes, "Утиные", "Лебеди", "Лебедь-трубач"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Fish(FishDetachment.Salmoniformes, "Лососёвые", "Лососи", "Лосось атлантический"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Fish(FishDetachment.Salmoniformes, "Лососёвые", "Лососи", "Лосось атлантический"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Fish(FishDetachment.Salmoniformes, "Лососёвые", "Лососи", "Лосось атлантический"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Fish(FishDetachment.Salmoniformes, "Лососёвые", "Лососи", "Кумжа"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Amphibian(AmphibianDetachment.Urodela, "Саламандровые", "Малые тритоны", "Обыкновенный тритон"));
            System.Threading.Thread.Sleep(20);
            aviary5.SettleAnimal(new Amphibian(AmphibianDetachment.Urodela, "Саламандровые", "Малые тритоны", "Обыкновенный тритон"));

            _zoo.AddAviary(aviary1);
            _zoo.AddAviary(aviary2);
            _zoo.AddAviary(aviary3);
            _zoo.AddAviary(aviary4);
            _zoo.AddAviary(aviary5);
            _zoo.AddAviary(aviary6);

            Console.Clear();
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("Сгенерирован зоопарк");
            Console.WriteLine("С названием:{0} и \nадресом:{1}", _zoo.Name, _zoo.Address);
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("Нажмите любую клавишу для возврата в меню...");
            Console.ReadKey();
        }
示例#17
0
        public void TestTransferAnimal()
        {
            var zoo = new Zoo("name", "address");

            //Успешная попытка переместить животное в существующий подходящий вольер
            var aviary1 = new Cage(CageType.WithRocks);
            var animal1 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            zoo.AddAviary(aviary1);
            zoo.SettleAnimal(animal1, aviary1);
            var aviary2 = new Cage(CageType.WithTrees, 5, 1);

            zoo.AddAviary(aviary2);
            Assert.AreEqual(true, zoo.TransferAnimal(zoo.FindAnimal(animal1.Id), zoo.FindAviary(aviary2.Number)));

            //Неуспешная попытка переместить животное в существующий не подходящий вольер
            var aviary3 = new Pool(PoolType.IndoorsPool);

            zoo.AddAviary(aviary3);
            Assert.AreEqual(false, zoo.TransferAnimal(zoo.FindAnimal(animal1.Id), zoo.FindAviary(aviary3.Number)));

            //Попытка переместить отсутствующее в зоопарке животное(несуществующее) в имеющийся вольер
            var animal2 = new Mammal(MammalDetachment.Artiodactyla, "family1", "genus1", "species1");

            try
            {
                zoo.TransferAnimal(zoo.FindAnimal(animal2.Id), zoo.FindAviary(aviary1.Number));
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка переместить отсутствующее в зоопарке животное в имеющийся вольер
            try
            {
                zoo.TransferAnimal(animal2, zoo.FindAviary(aviary1.Number));
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка переместить имеющееся в зоопарке животное в отсутствующий (несуществующий) вольер
            zoo.SettleAnimal(animal2, aviary1);
            var aviary4 = new Pool(PoolType.IndoorsPool);

            try
            {
                zoo.TransferAnimal(zoo.FindAnimal(animal2.Id), zoo.FindAviary(aviary4.Number));
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка переместить имеющееся в зоопарке животное в отсутствующий вольер
            try
            {
                zoo.TransferAnimal(zoo.FindAnimal(animal2.Id), aviary4);
                Assert.Fail();
            }
            catch (ArgumentException) { }

            //Попытка переместить имеющееся животное в имеющийся подходящий, но полностью заполненный вольер
            Assert.AreEqual(false, zoo.TransferAnimal(zoo.FindAnimal(animal2.Id), zoo.FindAviary(aviary2.Number)));

            //Попытка переместить имеющееся животное в имеющийся подходящий пустой, но закрытый вольер
            zoo.EvictAnimal(animal1);
            zoo.CloseAviary(aviary2.Number);
            Assert.AreEqual(false, zoo.TransferAnimal(zoo.FindAnimal(animal2.Id), zoo.FindAviary(aviary2.Number)));
        }