コード例 #1
0
ファイル: FishTankTest.cs プロジェクト: Neilster37/FishTank
        public void AddingGoldFishAndBabelFishAndAngelFish_UpdatesFishInTank()
        {
            //Arrange / Act
            var fishTank = new FishTank();

            fishTank.AddFish(new GoldFish("Neil"));
            fishTank.AddFish(new BabelFish("Zaphod"));
            fishTank.AddFish(new AngelFish("Charlies"));

            //Assert
            Assert.That(fishTank.Fish.Count, Is.EqualTo(3));
        }
コード例 #2
0
ファイル: FishTankTest.cs プロジェクト: Neilster37/FishTank
        public void LoadingXmlWithOneFishPutsFishInTank()
        {
            //Arrange / Act
            var fishTank = new FishTank();

            fishTank.AddFish(new GoldFish("Neil"));
            fishTank.AddFish(new GoldFish("Boris"));
            fishTank.AddFish(new BabelFish("Zaphod"));
            fishTank.AddFish(new AngelFish("Charlies"));

            //Assert
            Assert.That(fishTank.Feed, Is.EqualTo(0.7));
        }
コード例 #3
0
ファイル: FishTankTest.cs プロジェクト: Neilster37/FishTank
        public void Feed_CalculatesTotalFishFoodForAllFishInTank()
        {
            //Arrange / Act
            var fishTank = new FishTank();

            fishTank.AddFish(new GoldFish("Neil"));
            fishTank.AddFish(new GoldFish("Boris"));
            fishTank.AddFish(new BabelFish("Zaphod"));
            fishTank.AddFish(new AngelFish("Charlies"));

            //Assert
            Assert.That(fishTank.Feed, Is.EqualTo(0.7));
        }
コード例 #4
0
        public async Task <IActionResult> AddItemToFishTank(AddItemToFishTank model)
        {
            // Find fish tank
            FishTank tank = await _context.FishTank.FirstOrDefaultAsync(t => t.Id == model.Id);

            if (tank == null)
            {
                return(BadRequest($"Fish tank with Id {model.Id} not found"));
            }


            // check if it is a fish or an item and get its size
            int newItemSize = model.Fish != null ? model.Fish.Size : model.Item.Size;

            // check if the fish tank has the capacity to hold it
            if (tank.AvailableCapacity < newItemSize)
            {
                return(BadRequest($"Fish tank with Id {model.Id} cannot fit the new item"));
            }

            // add the new item
            if (model.Fish != null)
            {
                tank.AddFish(model.Fish);
            }
            else
            {
                tank.AddItem(model.Item);
            }

            await _context.SaveChangesAsync();

            return(Ok(tank));
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Evie-Skinner18/FishTank
        static void Main(string[] args)
        {
            var angelFish = new AngelFish(0.3f);
            var babelFish = new BabelFish(0.5f);
            var goldFish  = new GoldFish(1.0f);

            var eviesFishTank = new FishTank();

            eviesFishTank.AddFish(angelFish);
            eviesFishTank.AddFish(babelFish);
            eviesFishTank.AddFish(goldFish);

            var feedingTimeMessage = eviesFishTank.Feed();

            Console.WriteLine("Hello my sweet fishies!");
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.WriteLine(feedingTimeMessage);
        }
コード例 #6
0
ファイル: FishTankTest.cs プロジェクト: Neilster37/FishTank
        public void AddingGoldFish_AddsFishToTank()
        {
            //Arrange / Act
            var fishTank = new FishTank();

            fishTank.AddFish(new GoldFish("Goldy"));

            //Assert
            Assert.That(fishTank.Fish.Count, Is.EqualTo(1));
            Assert.That(fishTank.Fish.ElementAt(0).Name, Is.EqualTo("Goldy"));
        }
コード例 #7
0
        public void CanGetAllFishInTheFishTank_ShouldReturnFourFish()
        {
            // arrange   // act
            _fishTank.AddFish(_goldFish);
            _fishTank.AddFish(_angelFish);
            _fishTank.AddFish(_babelFish);
            _fishTank.AddFish(_fakeFish);

            var allFishInTheTank = _fishTank.GetFish();

            // assert
            Assert.That(_fishTank, Is.Not.Null);
            Assert.That(allFishInTheTank, Is.Not.Null);
            Assert.AreEqual(allFishInTheTank.Count(), 4);
        }
コード例 #8
0
        public async Task <IActionResult> AddToNextAvailable(AddFishModel model)
        {
            FishTank tank = await NextAvailableFishTankWithCapacity(model.Fish.Size);

            if (tank == null)
            {
                return(BadRequest("No Tank found that can hold this fish, please add a new tank"));
            }

            tank.AddFish(model.Fish);

            await _context.SaveChangesAsync();

            return(Ok(tank));
        }
コード例 #9
0
        public async Task <IActionResult> ReplaceFishTank([FromBody] UpdateFishTankCapacityModel model)
        {
            // Find fish tank
            FishTank tank = await _context.FishTank.FirstOrDefaultAsync(t => t.Id == model.Id);

            if (tank == null)
            {
                return(BadRequest($"Fish tank with Id {model.Id} not found"));
            }

            // Check if the old fish can fit in the new capacity
            if (tank.Fishes != null && tank.Fishes.Count() > 0)
            {
                // Find the size of all the fishes
                int fishSize = tank.Fishes.ToList().Select(f => f.Size).Aggregate((sum, val) => sum + val);
                if (fishSize > model.Capacity)
                {
                    return(BadRequest($"Fish tank with Id {model.Id} not big enough to hold the fishes of the old tank"));
                }
            }


            // The new tank to replace the old
            FishTank newTank = new FishTank();

            // deocaration and plants are discarded when replacing the fish tank
            newTank.Capacity = model.Capacity;
            newTank.AddFish(tank.Fishes);

            // remove the old fishes from the old tank
            tank.RemoveFish(tank.Fishes.Select(f => f.Id));
            // add and save the new fish tank
            await _context.FishTank.AddAsync(newTank);

            await _context.SaveChangesAsync();

            return(Ok(newTank));
        }