public void CategoryList__ByDefault__ReturnsCategoriesInSameOrder()
        {
            // Arrange:
            var category1 = new Category(10, 20)
            {
                Id = 5
            };
            var category2 = new Category(1, 10)
            {
                Id = 3
            };
            var category3 = new Category(20, 30)
            {
                Id = 1
            };
            var list = new List <Category> {
                category1, category2, category3
            };

            // Action:
            var filter = new CategoryFilter(list);

            filter.FillHoles();
            var listRes = filter.CategoryList.ToArray();

            // Assert:
            Assert.That(list[0] == listRes[0]);
            Assert.That(list[1] == listRes[1]);
            Assert.That(list[2] == listRes[2]);
            Assert.That(5 == listRes.Length);
        }
        public void FillHoles__CategoryList_WithoutPositiveInfiniteMaxVolume__CreatesZeroIdCategory()
        {
            // Arrange:
            var list = new List <Category> {
                new Category(10, 20)
            };
            var filter = new CategoryFilter(list);

            // Action:
            filter.FillHoles();
            var zeroMaxVolumeCategory = filter.CategoryList.FirstOrDefault(c => c.MaxVolume.Equals(double.PositiveInfinity));

            // Assert:
            Assert.That(0 == zeroMaxVolumeCategory?.Id);
        }
        public void FillHoles__CategoryList_WithVolumeHole__CreatesZeroIdFillingCategory()
        {
            // Arrange:
            var list = new List <Category> {
                new Category(10, 20), new Category(30, 40)
            };
            var filter = new CategoryFilter(list);

            // Action:
            filter.FillHoles();
            var fillingCategory = filter.CategoryList.FirstOrDefault(c => c.MaxVolume.Equals(30.0));

            // Assert:
            Assert.That(0 == fillingCategory?.Id);
        }
        public void FillHoles__CategoryList_WithoutZeroMinVolume__CreatesZeroMinVolumeCategory()
        {
            // Arrange:
            var list = new List <Category> {
                new Category(10, 20)
            };
            var filter = new CategoryFilter(list);

            // Action:
            filter.FillHoles();
            var zeroMinVolumeCategory = filter.CategoryList.FirstOrDefault(c => c.MinVolume.Equals(0.0));

            // Assert:
            Assert.That(zeroMinVolumeCategory, Is.Not.Null);
        }